在xlsm文件中执行的最后一个宏的VBA日期

时间:2016-07-04 09:11:39

标签: excel vba excel-vba macros

我想在2个单元格中写下以下信息:

Sheets("Dates").Range("A1").Value = Date '(today 's date)
Sheets("Dates").Range("A2").Value= ' ??? Date of macro executed 

是否有代码可以告诉我们何时执行宏?不是上次修改的日期,所以我可以比较两个日期?

由于

3 个答案:

答案 0 :(得分:2)

我在运行时使用此代码执行隐藏工作表上的类似操作:

Dim LastRunDate As Date
Dim LastRunTime As Date
Dim CurrentDate As Date
Dim CurrentTime As Date

CurrentDate = Format(Now, "dd/mm/yyyy")
CurrentTime = Format(Now, "hh:mm:ss")

LastRunDate = WB1.Names("LastRunDate").RefersToRange
LastRunTime = WB1.Names("LastRunTime").RefersToRange
LastRunTime = LastRunTime + TimeSerial(0, 10, 0)

If CurrentDate <= LastRunDate Then
    If CurrentTime <= LastRunTime Then
        End
    End If
End If

Range(WB1.Names("LastRunDate")) = CurrentDate
Range(WB1.Names("LastRunTime")) = CurrentTime

因此,如果代码已在最近10分钟内运行,那么这只会成功。我只是在该代码之后强行保存一下

答案 1 :(得分:2)

通过最后修改,我假设你想要上次保存工作簿的日期?如果是这样的话:

Private Sub Workbook_Open()
Sheets("Dates").Range("A1").Value = NOW()
End Sub

Sub YourMacro()
'Whatever code the macro runs
Sheets("Dates").Range("A2").Value = NOW()
End Sub

答案 2 :(得分:1)

默认情况下,Excel不会存储这样的数据,但您可以创建一个非常隐藏的工作表来在实例之间存储数据。在您的情况下,为每个宏创建一个隐藏的工作表,然后将代码添加到例程中,该例程将当前日期存储到该行的单元格中,您可以在以后调用该