Excel VBA 質問スレッド №788 (解決済)

Findメソッドのオブジェクトエラーについて

投稿者 : だいき     投稿日時 : 2022/06/08(Wed) 16:06:30     OS : Windows 10     EXCEL : Excel 2021
このwhatの部分に変数を用いて、検索ワードを順にやっていきたいのですが、
エラーが出てしまいます。
初心者であまりよくわかってないのですが、ご教授お願いします。


Sub 入金額実査()
  Dim i
  Dim rngHitCell As Range
  Dim rngSearchArea As Range
  For i = 7 To 201
  
  Set rngSearchArea = Worksheets("売上表").Range("F7:F122")
  Set rngHitCell = rngSearchArea.Find(what:=keyword, LookIn:=xlValues)
   
 Dim strAddress As String
  Dim intRowNo As String
  Dim intColNo As String
 
  strAddress = rngHitCell.Address(RowAbsolute:=False, ColumnAbsolute:=False)
  intRowNo = rngHitCell.Row
  intColNo = rngHitCell.Column
  
  Worksheets("データ").Cells(i, 4) = Worksheets("売上表").Cells(intRowNo, 2)

  Next
  
End Sub

スポンサーリンク
[返信 1] Re : Findメソッドのオブジェクトエラーについて
投稿者 : busu     投稿日時 : 2022/06/08(Wed) 16:30:44
何を検索すればいいのか解りません。エラーですね。

[返信 2] Re : Findメソッドのオブジェクトエラーについて
投稿者 : 目がテン     投稿日時 : 2022/06/08(Wed) 16:38:41
keyword ?

Dimでも定義されていないし、どこから参照するのでしょうか ?

[返信 3] Re : Findメソッドのオブジェクトエラーについて
投稿者 : てらてら     投稿日時 : 2022/06/09(Thu) 06:49:33
こんにちは。

勝手に作ってみました。
参考にしてください。

Sub 入金額実査()
    Dim i As Long, j As Long, c As Long
    Dim mykeywords()
    
    mykeywords = Array("山田", "高橋", "田中")  'keywordをセット
    c = 1
    For i = 0 To 2
        For j = 7 To 201
            If mykeywords(i) = Worksheets("売上表").Cells(j, "F") Then
                Worksheets("データ").Cells(c, 4) = Worksheets("売上表").Cells(j, 2)
                Worksheets("データ").Cells(c, 5) = mykeywords(i)
                c = c + 1
            End If
        Next j
    Next i
End Sub

[返信 4] Re : Findメソッドのオブジェクトエラーについて
投稿者 : だいき     投稿日時 : 2022/06/09(Thu) 09:36:07
すみません、抜けがありました。


Sub 入金額実査()
  Dim i
  Dim rngHitCell As Range
  Dim rngSearchArea As Range
  Dim keyWord As String
  For i = 7 To 201
    keyWord = Worksheets("データ").Cells(i, 7)
  
  Set rngSearchArea = Worksheets("売上表").Range("F7:F122")
  Set rngHitCell = rngSearchArea.Find(what:=keyWord, LookIn:=xlValues)
   
 Dim strAddress As String
  Dim intRowNo As String
  Dim intColNo As String
 
  strAddress = rngHitCell.Address(RowAbsolute:=False, ColumnAbsolute:=False)
  intRowNo = rngHitCell.Row
  intColNo = rngHitCell.Column
  
  Worksheets("データ").Cells(i, 4) = Worksheets("売上表").Cells(intRowNo, 2)

  Next
  
End Sub

[返信 5] Re : Findメソッドのオブジェクトエラーについて
投稿者 : さんこう     投稿日時 : 2022/06/09(Thu) 14:50:07
>エラーが出てしまいます。

どんなエラーでしょうか?
エラーメッセージと、エラーになる行を提示してください。

[返信 6] Re : Findメソッドのオブジェクトエラーについて
投稿者 : だいき     投稿日時 : 2022/06/09(Thu) 15:49:10
strAddress = rngHitCell.Address(RowAbsolute:=False, ColumnAbsolute:=False)

原状この部分がエラー91 オブジェクト変数またはWithブロック変数が設定されておりませんとなっております。

検索結果が見つからなかったため、このようになってしまうのだと思うのですが、
これを見つかったときと見つからなかったときの条件分岐のやり方がよく分かりません。

[返信 7] Re : Findメソッドのオブジェクトエラーについて
投稿者 : さんこう     投稿日時 : 2022/06/09(Thu) 15:58:26
>検索結果が見つからなかったため、このようになってしまうのだと思うのですが

たぶんそのとおりです。
検索結果が見つからないと、
Set rngHitCell = rngSearchArea.Find(what:=keyWord, LookIn:=xlValues)
で、「rngHitCell」がNothingになります。
それを利用して、↓みたいな書き方をします。

If Not rngHitCell Is Nothing Then
'見つかったときの処理
End If

[返信 8] Re : Findメソッドのオブジェクトエラーについて
投稿者 : だいき     投稿日時 : 2022/06/09(Thu) 16:28:37
さんこう様

無事エラーがなくなりました。
初心者で用語もわかりやすく、コード例まで
丁寧に教えていただき、本当にありがとうございます。

当掲示板について
  • Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
  • 記事内ではHTMLのタグは使用できません。
  • 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
  • Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
  • Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
お 名 前  :
内  容   :

ステータス  :

認証コード  : キャプチャ画像 




( 処理日時 : 2025-06-04 14:05:41 )
タイトルとURLをコピーしました