为什么此ArrayList在Visual Basic中没有声明就可以工作?

时间:2019-05-20 13:49:44

标签: vba ms-word word-vba

我正在处理Word 2010中的一些示例代码,但是在添加10个变量后它就中断了。我现在正在尝试了解VB中的ArrayList。

 If (ActiveDocument.Name = "template.docm") Then
 With ActiveDocument

    On Error Resume Next
    .Variables.Add Name:="1", Value:="1"
    .Variables.Add Name:="2", Value:="2"

我认为代码开始将对象添加到ArrayList,但是我在VBA Arraylist上阅读的所有内容都需要声明,例如:

 Dim Variables As Object
 Set Variables = CreateObject("System.Collections.ArrayList") 

如果我遵循该模式并使用.Variables.add创建更多对象,那么索引将在10之后中断。现在,我只是在试图理解列表。

1 个答案:

答案 0 :(得分:0)

从Vincent G.-“变量是对象Document的集合属性,而不是ArrayList,并且至少在我的系统上,添加10个变量后,变量似乎没有中断。”

这帮助我弄清楚问题不是在声明数组/集合。

我的实际问题是遍历下一个循环。我以前有:

     Dim z As String
     int i = 1
     For Each f In myarray
        .Variables(i).Value = f
        i = i + 1
     Next f

并且为索引变量传递的参数实际上是一个字符串

.Variables(name) 

所以:

     int i = 1
     For Each f In myarray
     z = CStr(i)
        .Variables(z).Value = f
        i = i + 1
     Next f

解决了我的问题,感谢所有花时间帮助的人!