Excel VBAで業務効率化の自動化ツールを作成しており、以下のコーディングの箇所がわからない状況です。
仕様は、表1の詳細情報が記入されたファイルを読み込み、表2の合併版の表に一元管理できる
自動化ツールを作成しています。
特に分からない所は
・配列から同じIDを検索して一致しているか見つけたい
・検索して一致しているIDに紐づいた値を取得する
・エラー箇所
Set temp = Worksheets("一覧表").Cells(i,6).Find(keyList(0),",")
→実行時エラー'91' オブジェクト変数またはWithブロック変数が設定されていません
・「検索して一致しているIDに紐づいた値を取得する」に関しては
以下の以下のコードを書いていますが、正確なコードがわかりかねています・・
If temp.Filter (keyList(0),",") Then
VBA
1Sub data() 2Dim keyList() As Variant 3Dim i As Long 4Dim a As Workbook 5Dim temp As Range 6Set a = ActiveWorkbook 7 8ReDim keyList(6) 9keyList(0) = a.worksheets(1).Columns("C") 10keyList(1) = a.worksheets(1).Columns("M") 11keyList(2) = a.worksheets(1).Columns("N") 12keyList(3) = a.worksheets(1).Columns("O") 13keyList(4) = a.worksheets(1).Columns("P") 14keyList(5) = a.worksheets(1).Columns("Q") 15 16cnt = 4 17For i = LBound(keyList) To UBound(keyList) 18 Set temp = Worksheets("一覧表").Cells(i,6).Find(keyList(0),",") 19 20If temp.Filter (keyList(0),",") Then 21 If Worksheets("一覧表").Cells("H" + cnt).Value = "" Then 22 Worksheets("一覧表").Cells("H" + cnt).Value = temp(i) 23 End If 24End If 25Next i 26 27End Sub 28
お気づきの点ありましたら、ご教授いただけますでしょうか。
何がしたくてこのコードになったのか、説明を読んでもコードを読んでも読み取れませんでした。
表1=worksheets(1)で 表2=Worksheets("一覧表")なの? とか
worksheets(1).Columns("C")などの各列には何が入っているの? とか
何の値をどこの範囲で検索するの? 紐づく値とはどこの範囲のもの? とか
コードにコメントを入れるか、説明文をもう少し詳しく書くかしてもらえると
何かしらのアドバイスができそうなのですが。
Set temp = Worksheets("一覧表").Cells(i,6).Find(keyList(0),",")
iにはゼロが入るのでエラーがでるでしょう。
keyList(0)は配列なので、この部分は文字列では?
tempはRangeオブジェクトなので、返却する型が一致しない。
Findでの返却は数値を返すと思う。
If temp.Filter部分も記述が怪しいので、デバック(ウォッチ等)で必要な値が取れているか確認しながら、遣ったほうが良いと思います。If temp.Filter部分は前行のエラーが解消されてから記述されて方が宜しいと思います。
あなたの回答
tips
プレビュー