Arrays 在代码结束后保留值的数组

Arrays 在代码结束后保留值的数组,arrays,vba,excel,variables,storage,Arrays,Vba,Excel,Variables,Storage,我想知道是否有一种方法可以在代码结束和excel文件关闭后将一些值存储在数组中 这个想法是让数组包含一些值。在运行代码时,我可能会修改它的一些值,也可能不会修改。当我关闭文件时,我希望这个数组存在并保留它的值。 我的意思是,当我重新打开文件并运行代码时,所有其他变量都将被重新初始化(显然会再次获得默认值),但这个特殊数组仍将存储其所有值(因此我当然不会在代码中重新声明它) 避免此问题的一种方法是将数组中包含的所有值存储在工作表中,并且每当代码再次运行时,将它们放回新数组中。 但是我想知道是否有一

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

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

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

如您所述,将信息存储在(隐藏的)工作表中,或者使用

从文件中:

Sub AddDocumentVariable() 
 ActiveDocument.Variables.Add Name:="Age", Value:=12 
End Sub
即使代码已完成或工作簿已关闭并再次打开,这些变量也将可用

编辑:(对于excel,找到代码)


如您所述,可以将信息存储在(隐藏的)工作表中,也可以使用

从文件中:

Sub AddDocumentVariable() 
 ActiveDocument.Variables.Add Name:="Age", Value:=12 
End Sub
即使代码已完成或工作簿已关闭并再次打开,这些变量也将可用

编辑:(对于excel,找到代码)


人们往往认为工作表是Excel的核心和灵魂,因此不愿意“花这么大的力气”只存储一个数组。从Excel的角度来看,工作表只不过是一个数组,当它为空时只占用几个字节的内存。我认为一个非常隐蔽的工作表正是您想要的,事实上它与Word的文档变量非常相似

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


从技术上讲,出于所有实际目的,一份非常隐蔽的工作表正是您所需要的。你的抵制是基于心理学,而不是理性——至少,这是我说服自己的方式,我可以说,对我创建的工作表的数量更加开放,让我在没有明显成本的情况下获得了更多的自由。

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

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


从技术上讲,出于所有实际目的,一份非常隐蔽的工作表正是您所需要的。你的抵制是基于心理学,而不是理性——至少,这是我说服自己的方式,我可以说,对我创建的工作表的数量更加开放,让我在没有明显成本的情况下获得了更多的自由。

感谢你的引导。但这似乎只对Word文档有效。我正试图为Excel找到同样的东西。这正是我要寻找的,但数组变量除外。正如您在链接的帖子中所解释的,如果类型为array,则没有msoPropertyType。所以我应该创建一个变量来存储数组中的每个元素(在我的例子中是36个,但可能更糟)。因此,从阵列角度来看,最好的解决方案似乎是使用(非常)隐藏的表,感谢这一线索。但这似乎只对Word文档有效。我正试图为Excel找到同样的东西。这正是我要寻找的,但数组变量除外。正如您在链接的帖子中所解释的,如果类型为array,则没有msoPropertyType。所以我应该创建一个变量来存储数组中的每个元素(在我的例子中是36个,但可能更糟)。因此,在数组方面,最好的解决方案似乎是使用(非常)隐藏的Sheetry。我从来没用过,但它可能对你有用。试试看。我从来没用过,但可能对你有用。谢谢。我认为在我的情况下最好的选择是一个隐藏的(或非常隐藏的表可能)。我希望找到一种方法将数组变量存储在文件中,但显然,正如@davidg所示,这是不可能的。除了在用户界面上完全不可访问之外,非常隐藏和隐藏的工作表之间有什么不同吗?就像内存方面的问题一样?一个包含所有数据(和工作表)的工作簿实际上是一个xml文件的集合。您可以自己检查,只需将
文件.xlsx
重命名为
文件.zip
并解压缩即可。在内存中,将数据存储在(隐藏)工作表中与将其存储在文档属性中完全相同。它是文本,存储在xml文件中。隐藏的工作表自然会给你更多的工具。唯一的区别是键盘的可访问性。谢谢。我认为在我的情况下最好的选择是一个隐藏的(或非常隐藏的表可能)。我希望找到一种方法将数组变量存储在文件中,但显然,正如@davidg所示,这是不可能的。除了在用户界面上完全不可访问之外,非常隐藏和隐藏的工作表之间有什么不同吗?就像内存方面的问题一样?一个包含所有数据(和工作表)的工作簿实际上是一个xml文件的集合。您可以自己检查,只需重命名您的