【会員アンケートご協力のお願い】抽選で計5名様に役立つ書籍をプレゼント!

Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Microsoft 365)
品名一覧の中で、特定の文字がある行だけを削除したいのです。
投稿日時: 24/09/20 15:52:59
投稿者: takatada72

お疲れさまです。
 
下記のコードは、AIによって作られたものですが、同じ場所でエラーがなんども出てしまうため、
こちらのお世話になりたいと思います。
 
仕様は、アクティブなシートにC列には、品名一覧があります。その品名の左側には、"中止", "ケツバン", "保留"の文字が含まれている行が存在しております。その行を削除したいのですが、なぜか、コードの中にある「各検索文字列についてチェック」の次の行にある、targetで、コンパイルエラー→変数が定義されていないとエラーになってしまうのです。 
 
AIからの回答では、変数は使っていないため、理由が不明と言われてしまい、進行しない状態です。
何が、原因かがわかる方がおりましたら、ご指導頂けないでしょうか
 
お忙しいとは思いますが宜しくお願い致します。
 
 
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim i As Long
    Dim targetStrings As Variant
    Dim cell As Range
    Dim shouldDelete As Boolean
     
    ' アクティブなシートを設定
    Set ws = ActiveSheet
     
    ' A列の最終行を取得
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
     
    ' 検索する文字列の配列
    targetStrings = Array("中止", "ケツバン", "保留")
     
    ' 最後の行から最初の行までループ(逆順にループすることで行削除の影響を避ける)
    For i = lastRow To 1 Step -1
        shouldDelete = False
        ' C列のセルを取得
        Set cell = ws.Cells(i, "C")
         
        ' 各検索文字列についてチェック
        For Each target In targetStrings
            If InStr(cell.Value, target) > 0 Then
                shouldDelete = True
                Exit For
            End If
        Next target
         
        ' 行を削除
        If shouldDelete Then
            ws.Rows(i).Delete
        End If
    Next i

回答
投稿日時: 24/09/20 16:38:13
投稿者: simple

指摘通りだとおもいますが、
あなたの考えでは、変数targetはどこで定義されているんですか?

回答
投稿日時: 24/09/20 17:06:41
投稿者: simple

Dim target As Variant
という変数宣言を追加してください。
私はこれで。

投稿日時: 24/09/20 17:20:48
投稿者: takatada72

早速、ありがとうございました。
無事、解決しました。