在宏终止时,变量是否会持续存在?

时间:2016-08-11 21:35:52

标签: arrays excel vba excel-vba macros

我正在设置一个excel / vba宏,我希望在循环期间将数字附加到数组中。但是,我希望数组从宏使用持续到宏使用(即,如果在星期二运行宏时数组填充[1,3,5],并且我在星期三再次运行宏并追加8,9和10,那么数组需要[1,3,5,8,9,10])。这是否可以在VBA中完成(即使整个Excel工作表已关闭并且稍后重新打开 - 虽然它在关闭之前保存 - )?

1 个答案:

答案 0 :(得分:2)

通过使用Static关键字声明宏,然后Macro的变量将在函数调用之间保存它们的值。但是当您关闭工作簿时将删除这些值。

或者,您可以将数组保存在Workbook的Names集合中。

enter image description here

Function getArrayFromName(name As String)
    Dim s As String
    On Error Resume Next
    s = ThisWorkbook.Names(name)
    s = Mid(s, 3, Len(s) - 3)
    On Error GoTo 0

    getArrayFromName = Split(s, ",")

End Function

Sub setArrayFromName(name As String, value As Variant)
    ThisWorkbook.Names.Add name, value, False
End Sub