检查月份是否更改,如果月份已更改,则重置单元格

时间:2015-11-18 19:07:55

标签: excel vba excel-vba

我在A4单元格中有当前日期(TODAY())。格式为Nov-15,值为B4:T4。我希望在月份从11月到12月更改时将值重置为0.以下是我的尝试,

Private Sub Workbook_Open()
    If Sheets("Output").Range("A4").Value Like "01*" Then Range("B4:T4").ClearContents
End Sub

但我的问题是,这张纸每天都不会打开。假设如果在第1天没有打开excel表,则值不会被重置。我们可以修改此宏以在excel表打开时运行并检查上一次运行中的月份,如果它已更改,我们可以重置单元格的内容。

有人可以帮我这么做吗?

2 个答案:

答案 0 :(得分:3)

每次关闭工作簿时存储日期,并与打开日期进行比较。

Private Sub Workbook_Open()

With ThisWorkbook.Sheets("Output")
      If Month(.Range("A4")) <> Month (.Cells(.Rows.Count,.Columns.Count))Then .Range("B4:T4").ClearContents
End With

End Sub

将它放在工作簿关闭事件中。

Private Sub Workbook_Close()

With ThisWorkbook.Sheets("Output")
     .Cells(.Rows.Count,.Columns.Count).Value = .Range("A4")
End With

End Sub

答案 1 :(得分:2)

正如Raystafarian所说,你需要将当月储存在一个单元格中。我在Z4中有它,你可以改变它。

试试这个:

Private Sub Workbook_Open()
    if Sheets("Output").Range("Z4").value > 0 then
        If Month(Sheets("Output").Range("A4")) <> Sheets("Output").Range("Z4") Then
            Range("B4:T4").ClearContents
            Sheets("Output").Range("Z4") = Month(Sheets("Output").Range("A4"))
        End If
    End IF
End Sub
相关问题