0

複数の条件に基づいて生データ ファイルから行を自動的に削除するマクロを作成しようとしています。特定の列に空白の値がある行を削除するマクロを作成できましたが、別のワークシートの特定のセルに含まれる日付以上の日付を持つ行も削除する必要があります。私はインターネットのいたるところにいましたが、この特定のケースに対処する説明、またはそれを理解するのに十分な類似の説明を見つけられませんでした. 私は他の多くのレポートの自動化に取り組んでおり、これがいくつかのレポートを完成させるために必要な最後のピースです。これが私が使用しようとしているコードです。

 Sub Deletedatesbeyondreportmonth()

 Application.ScreenUpdating = False

 With ActiveSheet

    .AutoFilterMode = False

    .Columns("E").AutoFilter Field:=1, Criteria1:=">= sheets("Sheet2").Range("C1")"

    .AutoFilter.Range.Offset(1, 0).EntireRow.Delete

    .AutoFilterMode = False

End With

End Sub

条件を指定したセルに含まれる実際の値に置き換えるsheets("Sheet2").Range("C1")と、マクロは機能しますが、そのセルに含まれる値に基づいて実行できるようにする必要があります。構文のバリエーションをいくつか試してみたところ、さまざまなエラー メッセージが表示されましたが、それを理解できませんでした。これをそのまま実行すると、基準行の Sheet2 という単語が強調表示され、次のように表示されます。

コンパイル エラーが予想されます: ステートメントの終わり

4

2 に答える 2

0

VBA ロジックを引用符でカプセル化すると、実際には文字列がハードコーディングされるためSheets("Sheet2").Range("C1")、Range 値を評価するのではなく、フィルター内のテキストが使用されます。以下を使用する必要があります。

.Columns("E").AutoFilter Field:=1, Criteria1:=">=" & Sheets("Sheet2").Range("C1")
于 2012-12-24T10:37:05.907 に答える
0

おそらくネストされた二重引用符です。次のように、二重引用符を使用してみてください。

.Columns("E").AutoFilter Field:=1, Criteria1:=">= sheets(""Sheet2"").Range(""C1"")"

はこちら

于 2012-12-24T05:35:54.083 に答える