Почему этот ArrayList работает без объявления в Visual Basic? - PullRequest
0 голосов
/ 20 мая 2019

Я работаю над некоторым примером кода в Word 2010, но он ломается после 10 добавленных переменных.Я пытаюсь понять ArrayLists в VB.

 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 Arraylists, требует объявления вроде:

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

Если я следую шаблону и создаю больше объектов, используя .Variables.add, то индекс прерывается после 10. Сейчас я просто пытаюсь понять список.

1 Ответ

0 голосов
/ 20 мая 2019

От Винсента Г. - «Переменные - это свойство коллекции объекта 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

исправил мою проблему, спасибо всем, кто нашел время, чтобы помочь!

...