数组,在代码结束后保留值



我想知道是否有一种方法可以在代码结束并关闭excel文件后将一些值存储在数组中。

这个想法是有一个包含一些值的数组。当运行代码时,我可能会也可能不会修改它的一些值,当我关闭文件时,我希望这个数组存在并保留它的值。我的意思是,当我重新打开文件并运行代码时,所有其他变量都会被重新初始化(显然会再次获得默认值(,但这个特殊的数组仍然会存储其所有值(所以我当然不会在代码中重新声明它(。

避免此问题的一种方法是将数组中包含的所有值存储在工作表中,每当再次运行代码时,将它们放回新数组中。但我想知道是否有一种方法可以在不使用工作表的情况下做到这一点。

人们倾向于将工作表视为Excel的核心和灵魂,因此不愿意"付出如此大的努力"只存储一个数组。从Excel的角度来看,工作表只不过是一个数组,在它为空时只占用几个字节的内存。我认为VeryHidden工作表正是你想要的,事实上与Word的文档变量非常相似。

作为替代方案,我可以建议使用一个内置属性,如Keywords或Comments,来存储可以拆分为数组的字符串。这可能更符合你的喜好,但我认为它较差,因为用户可以编辑它,除非这是你可以利用的优势。

从技术上讲,出于所有实际目的,VeryHidden工作表正是您所要求的。你的抵抗是基于心理学,而不是理性——至少,这就是我说服自己的方式,我可以说,对我创建的工作表数量更加自由,给了我更多的自由,而不会付出明显的代价。

如前所述,将信息存储在(隐藏的(工作表中,或者使用文档变量。

来自文件:

Sub AddDocumentVariable() 
ActiveDocument.Variables.Add Name:="Age", Value:=12 
End Sub

即使您的代码已完成,或者工作簿已关闭并再次打开,这些变量也将可用。

编辑:(对于excel,可在此处找到代码(

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

最新更新