【发布时间】:2014-07-17 20:44:43
【问题描述】:
出于某些技术原因,我们不能在 word 中使用样式。为了加速反复应用全局属性,我创建了一个可以从简单的 xml 样式表中读取的类。工作表包含不同的“段落”。每个段落只存储我们最常用的段落属性。
我已经习惯了可以使用动态内存的 C++,并且我正在尝试复制动态分配数组的行为。但是,当我尝试重新调暗时,我收到错误消息“Array arleady dimensioned”。
我对 MSDN 的研究表明,为了 ReDim,数组必须是全局的或在“一般声明上下文”中,这让我认为在一个类中可能根本不可能做到这一点。
摘自 MSDN:
"您只能在过程级别使用 ReDim。因此,声明 变量的上下文必须是一个过程;它不能是来源 文件、命名空间、接口、类、结构、模块或 块。”
我已尝试在堆栈溢出中搜索“Word VBA 数组已标注尺寸”,但无济于事地浏览了所有 3 页结果。
private type pStyle 'Definition removed because it's not needed
private Paragraphs(0) As pStyle 'Initially an empty array of paragraphs
后来我有以下功能
Public Function AddEmpty()
'Create space
count = count + 1
ReDim Preserve Paragraphs(count)
AddEmpty = count
End Function
如果有任何想法,请告诉我。我宁愿不必“估计”每个样式表所需的段落样式数量,因为每个文件都不同。
【问题讨论】:
-
通常,至少在 VBA 中,如果您不知道编译时元素的数量,您可以使用 Collection 或 Dictionary 或 CustomCollection。
-
我对 VB 数据结构不是很熟悉。在 C++ 中有几种不同的可动态调整大小的数据结构。在这种情况下,链表将是完美的。我不认为有任何真正相似的东西,但快速浏览一下收藏告诉我这可能是一个不错的选择。感谢您的信息。