VBA初心者です。
vlook関数をVBAで再現したく、ネットのあれこれを参考にコードを組んでみましたがエラーが出てしまいます。
同一ブックの中にある、Aシートをデータ範囲としてBシートに値を引っ張りたいのですが、
以下のようなコードを書くと「アプリケーション定義またはオブジェクト定義のエラーです」とでます。
Set 範囲 = Sheets("A").Range(A1:D100)
For i = 1 To 100
検索値 = Sheets("B").Range(i , 9)
値1 = Application.WorksheetFunction.VLookup(検索値, 範囲, 2, False)
値2 = Application.WorksheetFunction.VLookup(検索値, 範囲, 3, False)
Next
vlookの前にSetのところでエラーがでます。
どうやら、シートがアクティブではないから、ということのようですが、正直どのように直したらよいものかわかりません。
Sheets("シート名").Range("範囲") とすれば、事前にシートをアクティブにする必要はないと思っていたのですが、そもそも間違っていますでしょうか?
どうぞご教授くださいますと幸いです。
No.2ベストアンサー
- 回答日時:
>Set 範囲 = Sheets("A").Range(A1:D100)
⇒Set 範囲 = Sheets("A").Range("A1:D100")
>検索値 = Sheets("B").Range(i , 9)
⇒検索値 = Sheets("B").Range("I" & i)
>Sheets("B").Range(Cells(i,9),Cells(i,9))
⇒Sheets("B").Cells(i,9)で良いのではないでしょうか。
又、上記のようにRangeとCellsを組み合わる場合、Cellsのオブジェクトが必要で
Sheets("B").Range(Sheets("B").Cells(i,9))としないと駄目です。
ご回答ありがとうございます。
>Sheets("B").Range(Sheets("B").Cells(i,9))としないと駄目です。
まさにこれでした。
Cellsの前にSheetsを入れたら動きました!
ありがとうございます。
No.1
- 回答日時:
Set 範囲 = Sheets("A").Range(A1:D100)
は次のようにします。
Set 範囲 = Sheets("A").Range("A1:D100")
ご返答ありがとうございます。
ご指摘の点ですが、実際のマクロではCells指定で書いていたため、転記した際に記載ミスをした模様です。
大変失礼しました。
こちら以外でエラーとなるような事項はないでしょうか?
【誤】
Set 範囲 = Sheets("A").Range(A1:D100)
検索値 = Sheets("B").Range(i , 9)
【正】
Set 範囲 = Sheets("A").Range("A1:D100")
検索値 = Sheets("B").Range(Cells(i , 9),Cells(i , 9))
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Sheet1のA列にコードB列にメアド、Sheet2のB列にコード一覧とD列にメアド一覧があり、Sh 3 2022/10/19 11:57
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) 複数シート一括作成後に、特定範囲の数式は値で貼り付けしたい 3 2022/10/07 11:18
- Visual Basic(VBA) Excelのマクロ ブック間である範囲をコピー Workbooks(“a.xlsx“).Sheets 3 2022/05/12 17:02
- Visual Basic(VBA) 形式を選択して貼り付け 以下のコードで「元」シートと「先」シートのA列に同じ値があったら指定範囲をコ 5 2022/11/11 07:30
- Visual Basic(VBA) Excelのマクロについて教えてください。 1 2023/03/12 12:16
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/03/08 09:08
- Excel(エクセル) シート名を簡単に書く方法があれば教えてください。 4 2023/08/24 12:40
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/06/01 14:45
- Visual Basic(VBA) エクセル VBA 処理スピードを上げたいのですが。 6 2023/03/31 20:52
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マクロの「SaveAs」でエラーが...
-
VBA 空白行に転記する
-
マクロ実行後に別シートの残像...
-
EXCELのSheet番号って変更でき...
-
1004RangeクラスのPasteSpecial...
-
複数シートの複数列に入力され...
-
VBA 実行時エラー1004 rangeメ...
-
Unionでの他のシートの参照につ...
-
ExcelのVBマクロを、バックグラ...
-
VBA 別ブックからの転記の高速...
-
アクセスからエクセルへ出力時...
-
グラフマクロで系列を変数にす...
-
Changeイベントで複数セルへの...
-
ExcelのVBA ListBox.RowSource...
-
【Excel VBA】自動メール送信の...
-
エクセル 複数シートの同一セ...
-
VBAでEXCELから固定長...
-
VBA Userformで一部別シートに...
-
Excel VBAで、散布図のデータ範...
-
vba 連続するとうまく作動せず
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マクロの「SaveAs」でエラーが...
-
VBA 空白行に転記する
-
EXCELのSheet番号って変更でき...
-
マクロ実行後に別シートの残像...
-
VBA 別ブックからの転記の高速...
-
VBA別シートの最終行の次行へ転...
-
【VBA】特定の条件でセルをコピー
-
Count Ifのセルの範囲指定に変...
-
100万件越えCSVから条件を満た...
-
楽天RSSからエクセルVBAを使用...
-
VBAコードについて
-
Changeイベントで複数セルへの...
-
VBAで変数の数/変数名を動的に...
-
Excel2013で切り取り禁止
-
グラフマクロで系列を変数にす...
-
VBA 実行時エラー1004 rangeメ...
-
ExcelのVBマクロを、バックグラ...
-
Unionでの他のシートの参照につ...
-
Excel VBA オートフィルターで...
-
アクセスからエクセルへ出力時...
おすすめ情報