VBA初心者です。エクセルは2007です。
『データのあるブック(Book1,Book2,Book3)』と、『検索条件シート+出力先シートをもつブック』の4つのブックがあります。
検索条件シートで、L22でブック、P22でシートを指定してN22に入力した数に対応するデータをVlookupで出力先シートのセルに抽出されるようにしたいのですが、※の部分で「エラー438 オブジェクトは、このプロパティまたはメソッドをサポートしていません」とでて実行できません。
データのあるブックは同じ形式でシートには表があります。
数 a b c d
1 A B C D
2 ○ × △ ■
3 Z Y X W
・
・
検索条件がL22=3,P22=2,N22=2だとすると、Book3の2枚目のシートを検索し、
出力先シートのD1=○,J6=×,L23=△,J69=■となるようにしたいです。
本やインターネットで調べましたがわかりませんでした。
解決方法を教えていただきたいです。お願いします。
Sub 検索()
Dim a, b, c, d As Range
Dim 番号, ブック, シート As Integer
With Workbooks("検索.xlsm").Sheets("検索条件")
数 = .Range("N22").Value
ブック = .Range("L22").Value
シート = .Range("P22").Value
End With
Dim wb As Workbook
Dim sh As Worksheet
Dim set範囲 As Variant
With Workbooks("検索条件.xlsm").Sheets("出力先")
Set a = .Range("D1")
Set b = .Range("J6")
Set c = .Range("L23")
Set d = .Range("J69")
End With
Select Case ブック
Case 1
Set wb = Workbooks("Book1.xlsm")
wb.Activate
Select Case シート
Case 1
Set sh = Worksheets(1)
Case 2
Set sh = Worksheets(2)
Case Else
MsgBox "・・・・・", vbExclamation, "nothing"
End Select
Case 2
Set wb = Workbooks("Book2.xlsm")
wb.Activate
Select Case シート
Case 1
Set sh = Worksheets(1)
Case 2
Set sh = Worksheets(2)
Case Else
MsgBox "・・・・・", vbExclamation, "nothing"
End Select
Case 3
Set wb = Workbooks("Book3.xlsm")
wb.Activate
Select Case シート
Case 1
Set sh = Worksheets(1)
Case 2
Set sh = Worksheets(2)
Case Else
MsgBox "・・・・・", vbExclamation, "nothing"
End Select
Case Else
MsgBox "nothing", vbExclamation, "nothing"
End Select
※Set set範囲 = wb.sh.Range("A4:E42") ←エラー438
a = Application.WorksheetFunction.VLookup(数, set範囲, 2, False)
b = Application.WorksheetFunction.VLookup(数, set範囲, 3, False)
c = Application.WorksheetFunction.VLookup(数, set範囲, 4, False)
d = Application.WorksheetFunction.VLookup(数, set範囲, 5, False)
End Sub
No.2
- 回答日時:
wb.Activate
でご自身でアクティブにしているからでは?
すみません。わたしがアクティブにしていました。
やはりデータの抽出は上手くいきませんでした。
VlookupでなくFindを用いた方がよろしいのでしょうか?
お手数お掛けして申し訳ございません。
No.1ベストアンサー
- 回答日時:
「Select Case ブック」からエラーヵ所までは以下の様に修正するとよろしいかと思います。
Select Case ブック
Case 1
Set wb = Workbooks("Book1.xlsm")
wb.Activate
Select Case シート
Case 1
Set sh = wb.Worksheets(1)
Case 2
Set sh = wb.Worksheets(2)
Case Else
MsgBox "・・・・・", vbExclamation, "nothing"
End Select
Case 2
Set wb = Workbooks("Book2.xlsm")
wb.Activate
Select Case シート
Case 1
Set sh = wb.Worksheets(1)
Case 2
Set sh = wb.Worksheets(2)
Case Else
MsgBox "・・・・・", vbExclamation, "nothing"
End Select
Case 3
Set wb = Workbooks("Book3.xlsm")
wb.Activate
Select Case シート
Case 1
Set sh = wb.Worksheets(1)
Case 2
Set sh = wb.Worksheets(2)
Case Else
MsgBox "・・・・・", vbExclamation, "nothing"
End Select
Case Else
MsgBox "nothing", vbExclamation, "nothing"
End Select
Set set範囲 = sh.Range("A4:E42") ' ←エラー438
迅速な回答ありがとうございます。
回答の通り実行しました。デバッグはなくなりましたが、データのあるシートがActiveになり、
データはシートに抽出することができませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
- Visual Basic(VBA) 2つ目のコンボボックスが動作しません。 3 2023/03/25 12:29
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) VBAが止まります。 1 2022/09/02 14:51
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) 別ブックからシートのコピー 3 2022/04/01 20:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの関数 ENTERを押...
-
VBAでブックを非表示で開いて処...
-
複数ファイルから特定シートの...
-
エクセルを共有するとPCによっ...
-
フォルダ内の複数ファイルから...
-
指定ファィルの指定シートをシ...
-
WorkBooksをオープンさせずにシ...
-
エクセルファイルを開かずにpdf...
-
エクセルの関数について教えて...
-
エクセルで機能が使えない
-
複数のブックをひとつのブック...
-
エクセル2016です。「ブッ...
-
Excelで複数ブックの同一セルに...
-
複数のExcelブックのシート1の...
-
外部ブック参照が#REF!になって...
-
Excel起動時に特定のワークシー...
-
複数のセルをコピーし、別シー...
-
Excel VBAでブックを閉じる時、...
-
【ExcelVBA】シートをそれぞれ...
-
Excel(2010)のフィルターが保...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルを共有するとPCによっ...
-
エクセルの関数 ENTERを押...
-
VBAでブックを非表示で開いて処...
-
WorkBooksをオープンさせずにシ...
-
Excelでブックの共有を掛けると...
-
エクセルで参照しているデータ...
-
Excel(2010)のフィルターが保...
-
Excelで複数ブックの同一セルに...
-
VBA バックグラウンドで別ブッ...
-
エクセルで50行ごとに区切った...
-
エクセルで「ディスクがいっぱ...
-
エクセルにおける,「ブック」...
-
エクセルファイルを開かずにpdf...
-
フォルダ内の複数ファイルから...
-
ブックのピボットを別ブックに...
-
エクセルシートの一部を送りたい
-
エクセル2016です。「ブッ...
-
エクセルで別ブックをバックグ...
-
フォルダ内の複数ファイルから...
-
複数ファイルから特定シートの...
おすすめ情報