0

我找不到任何文件来支持我的发现,但这就是我在这里的原因。在我的模块中,我声明了多个全局数组,这本身不是问题,但似乎正在发生的事情是,如果我尝试在一个语句中声明多个数组,则只有第一个被初始化。任何人都可以确认这是行为和/或指向支持此行为的文档吗?

非工作语句示例

Global arr1, arr2, arr3

当我进入代码时,如果我查找 a​​rr1 的定义,就可以找到它。如果我查找 a​​rr2 或 arr3,我会收到一条消息“无法识别 cusor 下的标识符”。如果我将 arr3 移动到新行并像这样贴花:

Global arr1, arr2
Global arr3

现在已经被认可了。所以我不知道这是已知的行为、错误还是其他。

4

2 回答 2

0

我不确定使用“全球”而不是“公共”。我认为前者实际上没有记录。但无论如何, arrX 都是类型变体。在被强制之前,它们不是专门的数组。正如前面评论中提到的,数组可以这样声明: Dim arr1() as myType Dim arr2(1 to 10) as myType

在代码的某处,您还需要初始化 arr1 Redim arr1(i to j) 的结构

这比纠结于变体更安全、更有效。变体可以有效地读取和写入数据块,但如果您要大量使用它们,最好将它们转换为数组。

以下是一些参考资料,除了 MSDN:

http://www.cpearson.com/excel/topic.aspx

http://fastexcel.wordpress.com/2011/05/25/writing-efficient-vba-udfs-part-1/

于 2013-10-22T11:13:55.173 回答
0

这有效

Global arr1, arr2, arr3

Sub test()

    Debug.Print CLng(arr1)
    Debug.Print CLng(arr2)
    Debug.Print CLng(arr3)

End Sub

因为它打印三个零。你说“如果我寻找”的定义,但我不确定那是什么意思。如果我在代码中放置断点并将鼠标悬停在变量上,它们都会返回“空”。

于 2012-05-31T20:13:13.443 回答