我正在尝试在Excel中设置自动删除功能,以便在日期过后清除单元格。在我的工作表中,我可以获得第一行的代码,但需要一些建议来扩展范围,以便它涵盖B2之后在B列中输入的所有日期。
工作表有8列数据,一旦日期过去就需要清算。
我目前使用的代码是
Private Sub Worksheet_Activate()
If Date > Range("B2").Value Then
Range("B2:H2").ClearContents
End If
End Sub
答案 0 :(得分:1)
尝试这一点,它找到B列中最后一个使用过的单元格,然后从B2循环到此lastRow,检查日期是否为>细胞价值。它使用union
来收集过去的范围并将它们存储在变量clearRange中。最后,如果clearRange不是什么,即过去发现了一些日期,它会一次性清除内容。
Private Sub Worksheet_Activate()
Dim lastRow As Long
lastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, "B").End(xlUp).Row
Dim loopRange As Range
Dim clearRange As Range
Set loopRange = ActiveSheet.Range("B2:B" & lastRow)
Dim currCell As Range
For Each currCell In loopRange
If Date > currCell.Value2 Then
If Not clearRange Is Nothing Then
Set clearRange = Union(clearRange, currCell.Resize(, 7))
Else
Set clearRange = currCell.Resize(, 7)
End If
End If
Next currCell
If Not clearRange Is Nothing Then clearRange.ClearContents
End Sub