VBA - 添加跟踪计数器

时间:2018-05-30 21:22:16

标签: excel vba

在VBA中编写代码的新手,我需要添加一种计算/跟踪宏使用频率的方法。我很难找到任何可以执行此功能的代码示例。请求任何可能的例子。

3 个答案:

答案 0 :(得分:1)

Excel VBA没有任何在会话中持续存在的内置存储 - 当应用程序关闭时,所有变量都会被释放。但是,您确实拥有一个随时可用的存储源 - 工作簿本身。这是一种方法:

制作名为Counter(或其他)的工作表。可选地,隐藏它以便没有人混淆它。然后,当您的宏运行时,增加Cell(1,1)的值,这将保存您的计数器值。

Dim runCount As Integer
Dim counterWS As Worksheet
Set counterWS = ThisWorkbook.Worksheets("Counter")

If counterWS.Cells(1,1) <> vbNullString And IsNumeric(counterWS.Cells(1,1)) Then
    runCount = counterWS.Cells(1,1) + 1
Else
    runCount = 1
End If

counterWS.Cells(1,1) = runCount

答案 1 :(得分:0)

在声明变量时使用static

来自"EXCEL" Ytics

我们可以声明一个变量来保留以前运行的值吗?

过程中的静态声明将变量限制为该过程 - 但有助于保留先前运行的变量值,直到使用“ReDim”或值设置通过显式声明强制重新初始化。

Sub MySub( )
    Static Cnt As Integer
    Dim Msg As String
    Cnt = Cnt + 1
    Msg = “You’ve run the procedure ” & Cnt & ” times”
    MsgBox Msg
End Sub

答案 2 :(得分:0)

这将在隐藏的工作表上为您构建一个表格,显示宏的所有历史用途,直到 n 使用宏以及时间戳,以便您知道何时使用了宏。有了这个,您可以使用方程式来提取您想要的精确数据。如果你想要一个单元格显示使用计数,只需要“Countif(”A:A“,”*“) - 1”...(减去1以忽略A1中的标题)

实施此宏:
创建一个名为“MacroCount”的新工作表 设置A1 =“实例”
设置B1 =“时间戳”

我个人认为这是宏做的最后一件事,所以一旦宏完成所有分配的职责,它只会计算实例

另外,删除“Sub MacroCount()”&amp;以下代码中的“End Sub”。

Sub MacroCount()

Dim WS As Worksheet
Set WS = ThisWorkbook.Sheets("MacroCount")

Application.Screenupdating = False
WS.Visible = True
Dim LRow As Long
LRow = WS.Range("A" & Rows.Count).End(xlUp).Offset(1).Row

WS.Range("A" & LRow).Value = LRow - 1
WS.Range("B" & LRow).Value = Now()
WS.Visible = False
Application.Screenupdating = True

End Sub