- ベストアンサー
エクセルVBAで検索結果セル位置抽出時、実行時エラーが出ます。
- エクセルVBAで検索結果のセル位置を抽出する際に、実行時エラーが発生しています。
- マクロを組んで検索結果のセル位置を抽出する作業を行っていますが、途中で「アプリケーション定義またはオブジェクト定義のエラーです」というエラーメッセージが表示されます。
- エラーが発生している箇所は、検索されたセルの行番号を取得する部分です。何が原因でエラーが発生しているのか、ご教授いただけますか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 Set cell = Sheets("NameList").Columns("A:A").Find(what:=hn, lookat:=xlWhole, MatchCase:=True, matchbyte:=True) line = Sheets("NameList").Range(cell).Row この2行を下の6行にしてみて下さい。 Set cell = Sheets("NameList").Columns("A:A").Find(what:=hn, lookat:=xlWhole, MatchCase:=True, matchbyte:=True) If cell Is Nothing Then MsgBox hn & "は見つかりません" Exit Sub End If line = cell.Row 恐らく「見つかりません」メッセージが出ると思いますが如何ですか? Findは見つからない場合にNothingを返します。 変数 cell に発見した range が Set されないままでは当然 「オブジェクト変数またはwithブロック変数が設定されていない」 と言うエラーが出ます。 各シートにどんなデータが入っているか解らないので、これ以上は検証出来ませんけど。
その他の回答 (2)
- papayuka
- ベストアンサー率45% (1388/3066)
#1です。 推測だけで書換えてみました。 シートの状況が解らないので上手く動く保障はありません。 試すならテスト環境で。 Sub Test() Dim log_lastrow As Long, i As Long, myCell As Range Dim all As String, hn As String log_lastrow = Worksheets("log").Range("A65536").End(xlUp).Row For i = 1 To log_lastrow all = Worksheets("log").Cells(i, 1).Value hn = Mid(all, InStr(all, "<"), (InStr(all, ">") - 2)) Set myCell = Worksheets("NameList").Columns(1).Find _ (what:=hn, lookat:=xlWhole, MatchCase:=True, matchbyte:=True) If Not myCell Is Nothing Then Worksheets("edit").Cells(i, 1).Value = myCell.Offset(0, 1).Value Worksheets("edit").Cells(i, 2).Value = Right(all, Len(all) - InStr(all, ">")) Else Worksheets("edit").Cells(i, 1).Value = Null Worksheets("edit").Cells(i, 2).Value = Null End If Next i End Sub
- papayuka
- ベストアンサー率45% (1388/3066)
通読してませんが、cell as range ですから、 line = Sheets("NameList").Range(cell.address).Row または line = cell.Row にしたらどうなります?
お礼
早速のご回答ありがとうございます。 残念ながら、いずれも、 「オブジェクト変数またはwithブロック変数が設定されていない」 と出ます。よろしくご教授願います。
お礼
ありがとうございました。 MsgBoxのお陰で原因がNameListにあることが判明しました! お陰で、マクロ完成しました。ありがとうございました!!!