プロが教える店舗&オフィスのセキュリティ対策術

Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1004
アプリケーション定義またはオブジェクト定義エラーです。」と出るようになりました。どこか間違っているのでしょうか。解決方法を教えて下さい、、
(使っているのはmac、2012Microsoft corporation)


Sub 検索()

Set ws1 = Worksheets("メイン")
Set ws2 = Worksheets("DB")

Call 削除

'項目名のコピー
ws2.Rows(1).Copy
ws1.Range("A4").PasteSpecial
Application.CutCopyMode = False
ws1.Range("B2").Select

Dim keyword As String
keyword = ws1.Range("B2").Value

Dim x, y, z As Long

Dim word As String

'項目数のカウント
z = 1
Do While ws2.Cells(1, z).Value <> ""
z = z + 1
Loop
z = z - 1

'検索ワードが含まれる内容を抽出
x = 5
y = 2

Do While ws2.Cells(y, 1).Value <> ""

'検索対象をまとめる
word = ""
For i = 1 To z
word = word & ws2.Cells(y, i).Value
Next i

'検索を行う
If word Like "*" & keyword & "*" Then
For i = 1 To z
ws1.Cells(x, i).Value = ws2.Cells(y, i).Value
Next i
x = x + 1
End If


y = y + 1

Loop

End Sub

Sub 削除()

Dim x, y As Long

'項目数のカウント
x = 1
Do While ws1.Cells(7, x).Value <> ""
x = x + 1
Loop
x = x - 1

'行数のカウント
y = 5
Do While ws1.Cells(y, 1).Value <> ""
y = y + 1
Loop
y = y - 1

ws1.Range(ws1.Cells(5, 1), ws1.Cells(y, x)).Value = ""

End Sub

A 回答 (1件)

Dim ws1 As Worksheet


Dim ws2 As Worksheet
が見当たりませんが、どこで定義していますか?
先ずはOption Explicitを宣言してみてください。

Option Explicitって何?
http://officetanaka.net/excel/vba/beginner/11.htm
Sub 検索()
Set ws1 = Worksheets("メイン")
Set ws2 = Worksheets("DB")
ですらエラーになりませんか?
おそらく、
Sub 削除()でのws1、ws2と、Sub 検索()でのws1,ws2が同じのであることが必要なようですので、Subプロシージャーの外で定義しておく必要があります。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
説明不足ですみません。既に外で
Dim ws1,ws2 As Worksheetとしているのですが、それでもエラーになってしまうんです、、

お礼日時:2022/03/25 21:17

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