VBS, использующий переменную строку для ссылки на имя массива, дает несоответствие типов 'ubound' Код: 800A000D - PullRequest
0 голосов
/ 02 мая 2018

У меня 40 именованных массивов, например, arrOne , arrTwo , arrThree и т. Д. Итак:

Dim arrOne

arrOne = Array("word","Cat","Dog","Bob")

' I can lbound and ubound this array... **BUT!!!**

strChooseOne = "arrOne"

For I = 0 to ubound(strChooseOne)

' ***do stuff***

Next

Это приводит к ошибке:

Несоответствие типов 'ubound'
Код: 800A000D

Возможно, поскольку strChooseOne является строковой переменной, содержащей "arrOne", тогда как arrOne является фактическим массивом ...

Мне нужно перебрать 500 элементов, которые будут ссылаться на 1 из 40 массивов, в любом порядке ... Я бы предпочел не дублировать ' делать вещи код 40 раз, проверяя каждый массив ... Я хотел бы использовать код цикла For ... Next один раз, меняя имя массива каждый раз через ...

Я погуглил код ошибки, но ничего не актуально.

1 Ответ

0 голосов
/ 07 мая 2018

Посмотрите на приведенный ниже пример:

Option Explicit

Dim aData
Dim aTmp
Dim i
Dim j
Dim s

' Populate main array with 40 nested arrays of random elements quantity
Randomize
ReDim aData(39)
For i = 0 To 39
    aTmp = Array()
    Do
        ReDim Preserve aTmp(UBound(aTmp) + 1)
        aTmp(UBound(aTmp)) = "[" & Right("0" & i, 2) & Chr(65 + UBound(aTmp)) & "]"
    Loop Until Rnd > 0.55
    aData(i) = aTmp
Next

' Make processing you need
s = ""
For i = 0 To 39
    For j = 0 To UBound(aData(i))
        ' ***do stuff***
        s = s & aData(i)(j)
    Next
    s = s & vbCrLf
Next

WScript.Echo s
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...