重置静态计数器vba

时间:2017-07-20 17:07:10

标签: excel vba excel-vba

我有一个excel工作簿,用户可以在其中导入数据。我有一个静态计数器来计算完成了多少次进口。计数器代码..每次用户导入数据集时都会调用此宏。

Public Sub Macro()
Static i As Integer
Worksheets("Hidden").Activate

i = i + 1

Cells(i + 1, 1).Select
ActiveCell.FormulaR1C1 = "=" & i

Cells(2, 2).Select
ActiveCell.FormulaR1C1 = "=" & i

End Sub

现在,如果用户通过按"清除数据"清除工作表中的所有数据。按钮我希望静态计数器重置。关于如何编码的任何想法?我一直在网上找不到答案! TIA

2 个答案:

答案 0 :(得分:3)

添加可选的布尔值"重置"默认为False的参数:调用Macro True重置计数器。

Public Sub Macro(Optional reset As Boolean = False)

    Static i As Integer
    If reset Then
        i = 0
        Exit Sub
    End If

    Worksheets("Hidden").Activate

    i = i + 1

    Cells(i + 1, 1).Select
    ActiveCell.FormulaR1C1 = "=" & i

    Cells(2, 2).Select
    ActiveCell.FormulaR1C1 = "=" & i

End Sub

答案 1 :(得分:2)

不必使用静态变量,而是必须使用Public变量(在例程之外声明) - 这是其他宏可以“看到”它的唯一方式。

Public i As Integer

Public Sub Macro()
Worksheets("Hidden").Activate

i = i + 1

Cells(i + 1, 1).Select
ActiveCell.FormulaR1C1 = "=" & i

Cells(2, 2).Select
ActiveCell.FormulaR1C1 = "=" & i

End Sub