使用VBA自动清除功能

时间:2017-12-11 16:48:49

标签: excel vba excel-vba

我正在尝试在Excel中设置自动删除功能,以便在日期过后清除单元格。在我的工作表中,我可以获得第一行的代码,但需要一些建议来扩展范围,以便它涵盖B2之后在B列​​中输入的所有日期。

工作表有8列数据,一旦日期过去就需要清算。

我目前使用的代码是

Private Sub Worksheet_Activate()

If Date > Range("B2").Value Then
    Range("B2:H2").ClearContents
End If

End Sub

1 个答案:

答案 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