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

Array keeping values after the end of the code

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

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

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

如您所述,将信息存储在(隐藏的)sheet 中,或者使用 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

人们倾向于将作品sheet视为Excel的核心和灵魂,因此不愿意让"such a big effort"只存储一个数组。从 Excel 的角度来看, sheet 只不过是一个数组,在它为空时只占用几个字节的内存。我认为 VeryHidden 作品sheet 正是您所要求的,实际上与 Word 的文档变量非常相似。

作为替代方案,我建议使用内置属性之一(例如关键字或注释)来存储可以拆分为数组的字符串。这可能更符合您的喜好,但我认为它较差,因为用户可以编辑它,除非您可以利用它来发挥自己的优势。

从技术上和所有实际目的来看,VeryHidden 作品sheet正是您所要求的。你的抵制是基于心理,而不是理性——至少,我是这样说服自己的,我可以说,对我创作的作品数量 sheet 更加自由,这让我在没有明显成本的情况下获得了更多的自由。