1
180日以上のレコードを削除しようとしています。日付は列Fにあります。これを実行すると何も起こりません。私はそれがDate()関数と関係していると思っています。Excel VBA:古いレコードを削除する
Sub ClearOldData()
Application.ScreenUpdating = False
Sheets("Data").Select
Dim LastRow As Long
With ActiveSheet
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
End With
For i = 2 To LastRow
Dim recdate As Date
recdate = Cells(i, "F").Value
If DateDiff(d, Date, recdate) > 179 Then
ws.Rows(i).Delete
End If
Next i
Application.ScreenUpdating = True
End Sub
行を削除するときは、行のインデックスが干渉しないように、下から上に移動することをお勧めします。 'For i = LastRow to 2 Step -1' –
良い点。私はその変更を行った。しかし、手元の問題に対処していません。 – superblowncolon
Timには、forループを 'For i = LastRow to 2 Step -1'として下から上に移動するだけでなく、' ws'オブジェクト(おそらくワークシートへの参照)を使用していますが、あなたは決してそれをどこにでも置かない。 'Debug.Print recdate&" "&Date&" "&DateDiff(" d "、Date、recdate)'をループの先頭に追加して、正確に何が計算されているかを確認することもできます。 – Dave