VBA VLOOKUP 別のファイルを参照
いつもこちらでお世話になっている者です。
VBAの勉強をしております。
別のファイルからVLOOKUPで値を参照したいのですが、
範囲を指定してみましたが、
「worksheetFunctionクラスのVlookupプロパティを参照できません」
とのメッセージが出てしまいます。
なお、値は空白になる行もありますので、
if関数で回避してみましたがうまくいきません。
いろいろ試しましたが、何度やってもうまくいかないので
こちらに質問させていただきました。
お詳しい方、ご伝授いただければ助かります。
よろしくお願い致します。
環境はExcel2007です。
Sub sample()
Dim 範囲 As Range
Dim wb As Workbook, wb2 As Workbook
Dim r As Integer,intRow As Integer
Workbooks.Open Filename:="***.xlsm"
Set wb = ThisWorkbook
Set wb2 = ActiveWorkbook
Set 範囲 = wb2.Sheets("PvtSht2").Range("Database3")
r = wb.Sheets("sheet1").Range("A28:N28").End(xlToRight).ColumnintRow = 3
With wb.Sheets("sheet1")
Do Until .Cells(intRow, 1).Value = ""
.Cells(intRow, (r + 1)) = Application.WorksheetFunction.If((Application.WorksheetFunction.VLookup(Cells(intRow, 1), 範囲, 2, False)) = 0, "", Application.WorksheetFunction.VLookup(Cells(intRow, 1), 範囲, 2, False))
intRow = intRow + 1
Loop
End With
End sub
No.1ベストアンサー
- 回答日時:
2つ問題があると思います。
1.Application.WorksheetFunction.If
WorksheetFunctionには「If」はありません。
単純にVBAのIFを使えば良いと思いますが、結果が「空白」か「0」かまたは
マッチしない時等対応を変えないとだめだと思います。
2.「worksheetFunctionクラスのVlookupプロパティを参照できません」
式は合っているとは思いますが、Range("Database3")が気になります。
試しにRange("A1:B9")等2列以上は問題がありませんが、Range("A1:A9")の1列の場合
上記エラーメッセージが表示されます。
「"Database3"」の範囲を確認した方が良いかと思います。
この回答への補足
お返事ありがとうございます。
さっそく試してみました。
1.そうだったのですね、if文は外しました。
On Error Resume Next~On Error GoTo 0で挟んでみたのですが問題ないでしょうか?
2.Set 範囲 = wb2.Worksheets("PvtSht2").Range("Database3")を
MsgBox 範囲.Addressで試してみましたが、参照してほしい場所がきちんと選ばれていました。
範囲は2列です。
下記のように書き直してみたところ、
vlookupが1行ずつずれてしまうのです・・・
もしお分かりでしたら、ご指南いただけますか、よろしくお願い致します。
Sub test2()
Dim wb As Workbook, wb2 As Workbook
Dim r As Integer, intRow As Integer
Dim 範囲 As Range
Dim Database3 As Range
Workbooks.Open Filename:="***.xlsm"
Set wb = ThisWorkbook
Set wb2 = ActiveWorkbook
'wb.Sheets("sheet1").Activate
r = wb.Sheets("sheet1").Range("A28:N28").End(xlToRight).Column
With wb2.Sheets("PvtSht2")
.Range("A4:B" & .Range("A" & _
.Rows.Count).End(xlUp).Row).Name = "Database3"
End With
Set 範囲 = wb2.Worksheets("PvtSht2").Range("Database3")
MsgBox 範囲.Address
intRow = 3
With wb.Sheets("sheet1")
Do Until .Cells(intRow, 1).Value = ""
On Error Resume Next
.Cells(intRow, (r + 1)) = Application.WorksheetFunction.VLookup(Cells(intRow, 1), 範囲, 2, False)
intRow = intRow + 1
On Error GoTo 0
Loop
End With
wb.Activate
End Sub
こちらの件、あれから試行錯誤して動くようになりました。
おそらく、wbやwb2をきちんとactivateしてなかったのが、原因と思われます。
助言いただきましてありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Sheet1のA列にコードB列にメアド、Sheet2のB列にコード一覧とD列にメアド一覧があり、Sh 3 2022/10/19 11:57
- Visual Basic(VBA) vbaのvlookup関数エラー原因を教えていただけないでしょうか。 3 2022/04/25 16:16
- Visual Basic(VBA) 2つ目のコンボボックスが動作しません。 3 2023/03/25 12:29
- Visual Basic(VBA) エクセルVBA(実行時エラー438)の対処法を教えてもらえないでしょうか 3 2023/04/22 13:43
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) VBAでファイルを開くプログラムがエラーです 2 2023/02/21 16:56
- Visual Basic(VBA) worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応 3 2022/12/27 22:27
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アルキメデスの大戦の櫂はなぜ2...
-
どこからも呼ばれていない無意...
-
配列の重複する値とその個数を...
-
基本情報技術者試験のJava問題...
-
コンボボックスのマウスホイー...
-
java eclipse 型に解決できません
-
Lsit<LabelValueBean>について
-
自作のクラスファイルがインポ...
-
コンストラクタについて教えて...
-
ページ遷移時にアコーディオン...
-
グローバルIPとプライベートIP...
-
3年間同じクラスになる確率
-
1 つのヘッダファイルに複数の...
-
クラスのメンバ関数が多すぎる...
-
main()を持つクラスが2つ以上...
-
もしも、進撃の巨人の超硬質ブ...
-
遺伝的アルゴリズムによる繰り...
-
同じパッケージ、クラス名が含...
-
UMLのクラス図はmain()も含むん...
-
javaのコンパイルができません...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
グローバルIPとプライベートIP...
-
配列の重複する値とその個数を...
-
java eclipse 型に解決できません
-
「天声人語」をインターネット...
-
オブジェクト指向プログラミン...
-
同一パッケージにあるクラスが...
-
SQLです教えてくださいお願いし...
-
自作のクラスファイルがインポ...
-
packageとimport の違いって?
-
重複エラーを解決するには
-
1 つのヘッダファイルに複数の...
-
UMLのクラス図はmain()も含むん...
-
main()を持つクラスが2つ以上...
-
3年間同じクラスになる確率
-
河合塾のクラス分けについて
-
EclipseでJSPのコンパイルエラー
-
どこからも呼ばれていない無意...
-
IPアドレスの3バイト目の呼び方
-
同じクラスにならない確率を教...
-
IPアドレスのクラスAを取得して...
おすすめ情報