我想知道在代码结束并关闭excel文件之后是否有办法将一些值保存在数组中。
这个想法是拥有一个包含一些值的数组。在运行代码时,我可能会也可能不会修改它的某些值,当我关闭文件时,我希望这个数组存活并保持其值。 我的意思是,当我重新打开文件并运行代码时,所有其他变量将被重新初始化(显然会再次获得默认值),但这个特殊数组仍将存储其所有值(所以我当然不会在那段代码中重新声明它。)
避免此问题的一种方法是将数组中包含的所有值存储在工作表中,每当代码再次运行时,将它们放回到新数组中。 但我想知道是否有办法在不使用工作表的情况下执行此操作。
答案 0 :(得分:3)
人们倾向于将工作表视为Excel的核心和灵魂,因此,不愿意做出如此大的努力"只存储一个数组。从Excel的角度来看,工作表只不过是一个数组,在空的时候只占用几个字节的内存。我认为,一个VeryHidden工作表正是你所要求的,实际上与Word的文档变量非常相似。
作为替代方案,我可以建议使用其中一个内置属性(如关键字或注释)来存储可以拆分为数组的字符串。这可能更符合您的喜好,但我认为它较差,因为用户可以编辑它,除非您可以利用这些优势。
从技术上讲,出于所有实际目的,VeryHidden工作表正是您所要求的。你的抵抗是基于心理学的,而不是理性 - 至少,这就是我说服自己的方式,而且我可以说随着我创造的工作单数量更加自由,给了我更多的自由,没有明显的代价。
答案 1 :(得分:1)
如您所述,在(隐藏)工作表中存储信息,或使用Document Variables。
来自文档:
Sub AddDocumentVariable()
ActiveDocument.Variables.Add Name:="Age", Value:=12
End Sub
即使您的代码已完成或工作簿已关闭并再次打开,这些变量也可用。
编辑:(对于excel,代码找到here)
Sub test()
Dim wb As Workbook
Dim docProps As DocumentProperties
Dim docProp As DocumentProperty
Set wb = ActiveWorkbook
Set docProps = wb.CustomDocumentProperties
With docProps
.Add Name:="CustomNumber", _
LinkToContent:=False, _
Type:=msoPropertyTypeNumber, _
Value:=1000
.Add Name:="CustomString", _
LinkToContent:=False, _
Type:=msoPropertyTypeString, _
Value:="This is a custom property."
.Add Name:="CustomDate", _
LinkToContent:=False, _
Type:=msoPropertyTypeDate, _
Value:=Date
End With
For Each docProp In docProps
Debug.Print docProp.Name, docProp.Value
Next
End Sub