アプリ版:「スタンプのみでお礼する」機能のリリースについて

Find でオートメーションエラー(エラー440)が出ました。
原因と対応方法をご教授下さい。

Sub ベースデータベースから情報を取得する()

Workbooks.Open "データベース.xlsxのパス"

Dim wb1 As Workbook
Dim wb2 As Workbook
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim i As Integer

Set wb1 = Workbooks("データベース.xlsx")
Set wb2 = ThisWorkbook

Set sh1 = wb1.Worksheets("データベース表")
Set sh2 = wb2.Worksheets("調査対象リスト")

Dim 検索対象 As String
Dim 検索結果 As Range

For i = 3 To wb2.Worksheets("調査対象リスト").Cells(Rows.Count, 1).End(xlUp).Row
検索対象 = sh2.Cells(i, 2).Value
Set 検索結果 = sh1.Cells.Find(検索対象)→→→ここでエラーが出ます
If 検索結果 Is Nothing Then
MsgBox "検索対象が見つかりませんでした"
Exit Sub
Else
Set 検索結果 = sh1.Cells.Find(検索対象).Offset(0, 13)
sh2.Cells(i, 4).Value = 検索結果
Workbooks("データベース.xlsx").Close
End If
Next i

End Sub

A 回答 (1件)

If 文で検索対象が見つかった後、検索対象のBookを閉じてますけど、検索して見つかるのはそのシート内で1つと言う事ですか?



あと気になるのは

>Set 検索結果 = sh1.Cells.Find(検索対象)→→→ここでエラーが出ます
>Set 検索結果 = sh1.Cells.Find(検索対象).Offset(0, 13)

このOffsetをする際に再度検索をしているようですが、最初?に見つかったセルを基準としたものなのでしょうか?
仮にそうであれば2つ目は

Set 検索結果 = 検索結果.Offset(0, 13)

こうなるように思いますが。
多分検索するBookを閉じられて探せないと思われるので閉じるタイミングはループを抜けた後ではないかと。

'Workbooks("データベース.xlsx").Close
End If
Next i

Workbooks("データベース.xlsx").Close
    • good
    • 0
この回答へのお礼

アドバイスありがとう御座いました。
ご指摘通り修正したら思っていた通りに動かすことが出来ました。

お礼日時:2021/11/10 10:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています