これは、簡単な答えがあるように感じる別の質問ですが、見つけられません。列 D の各セルをループして (ユーザー入力から) 特定の日付を探し、そのセルの日付と対応するセルの日付に基づいて、行の色を変更しています。
行に色を付ける代わりに、行を削除できるようにしたいと思います。
現在、これらの行に色を付ける私のコードは次のとおりです。
Range(Cells(2, 4), Cells(Rows.Count, 4).End(xlUp)).Select
Dim rCell, otherCell As Range
Dim TheAnswer$
Dim ConvertedDate#
TheAnswer = InputBox("In M/D/YY format, enter the first day of the month for which this report is being run." & _
vbCr & vbCr & "For example, you would enter ""12/1/2012"" for the December 2012 report.", "Enter Date M/D/YY")
ConvertedDate = CDate(TheAnswer)
For Each rCell In Selection
If rCell.Value <> "" Then
If rCell.Value And rCell.Offset(, 5) < ConvertedDate And rCell.Offset(, 5) <> "" Then rCell.EntireRow.Interior.Color = RGB(255, 102, 0)
If rCell.Value < ConvertedDate And rCell.Offset(, 5) = "" Then
If rCell.Offset(, 6) < ConvertedDate And rCell.Offset(, 6) <> "" Then rCell.EntireRow.Interior.Color = RGB(255, 102, 0)
If rCell.Offset(, 7) < ConvertedDate And rCell.Offset(, 7) <> "" Then rCell.EntireRow.Interior.Color = RGB(255, 102, 0)
End If
End If
Next rCell
で置き換えるrCell.EntireRow.Interior.Color = RGB(255, 102, 0)
とrCell.EntireRow.Delete
、エラーが発生します。コードをステップ実行すると、実際には最初の行が削除されますが、次の行でエラーが発生することがわかります。
明らかに複数の「If Then」ステートメントがありますが、最初の「If Then」条件が満たされ、行が削除された場合、次のセルに移動する必要があります。削除された行をまだチェックしようとしているようです。私は間違いなく Excel VBA の専門家ではありませんがrCell.EntireRow.Delete
、次のセルに移動するように指示する部分の後に何か追加する必要があると考えています。を追加しようとしましNext rCell
たが、エラーになります。 Exit For
マクロを完全に停止するだけです。