前提・実現したいこと
現在、VBAであるデータベースから検索した値を表示させる検索ツールを作っています。
WorksheetFunctionでINDEXとMATCHを使って、ある文字列を別シートで検索後、別の列の指定のセル値(文字列)を返すようなコードを作っています。
散々試行錯誤した結果、以下のエラーメッセージが出てしまいました。
発生している問題・エラーメッセージ
ある条件検索に基づいた、指定列の文字列が返せません。
WorksheetFunctionクラスのINDEXプロパティを取得できません
該当のソースコード
VBA
1 2Sub 検索テスト() 3 With Application 4 .ScreenUpdating = False 5 .EnableEvents = False 6 .Calculation = xlCalculationManual 7 End With 8 9 Dim 検索ブック, データベース As Workbook 10 Dim 検索シート, データシート As Worksheet 11 12 Workbooks.Open _ 13 "データベース.xlsx" _ 14 , UpdateLinks:=0 15 16 Set 検索ブック = Workbooks("検索システム.xlsm") 17 Set データベース = Workbooks("データベース.xlsx") 18 Set 検索シート = 検索ブック.Worksheets("検索シート") 19 Set データシート = データベース.Worksheets("データシート") 20 21 Dim i, j As Long 22 Dim 検索値 As Range 23 Set 検索値 = Range(検索シート.Cells(8, 7), 検索シート.Cells(7000, 7)) 24 25 For i = 8 To 7000 26 For j = 2 To 5670 27 On Error Resume Next 28 If 検索シート.Cells(i, 7).Value = データシート.Cells(j, 2).Value _ 29 And 検索シート.Cells(i, 8) = データシート.Cells(j, 26) Then 30 検索シート.Cells(i, 9).Value = Application.WorksheetFunction. _ 31 Index(データシート.Cells(j, 27), Application.WorksheetFunction. _ 32 Match(検索シート.Cells(i, 7), Range(データシート.Cells(2, 2), データシート.Cells(5670, 2)), 0)) 33 End If 34 Next j 35 Next i 36 37 データベース.Close False 38 検索ブック.Worksheets(1).Activate 39 40 With Application 41 .ScreenUpdating = True 42 .EnableEvents = True 43 .Calculation = xlCalculationAutomatic 44 End With 45End Sub 46
試したこと
変数をi,jに分けて、ループ処理のパターンを2種類にしてみました。
補足情報(FW/ツールのバージョンなど)
Excel 2010を使用しています。
回答3件
あなたの回答
tips
プレビュー