2014-11-11 3 views
1

Вы можете использовать UBound, чтобы определить размер массива. Я хочу, чтобы это к массиву, возвращенному в результате функции, но затем я получаю ошибку Invalid procedure call. Это (упрощенно) функция:Размер возвращаемого массива из функции

Public Function GetCheckBlocks(fileName) 
    Dim counter, checkBlocks 
    Set checkBlocks = CreateObject("System.Collections.ArrayList") 

    For counter = 0 To 10 
     checkBlocks.Add counter 
    Next 

    Set GetCheckBlocks = checkBlocks 
End Function 

А вот так, я вызываю функцию и хочу, чтобы получить размер массива:

Dim expectedChecks, expectedFile 
expectedFile = "test.txt" 

Set expectedChecks = GetCheckBlocks(expectedFile) 
MsgBox UBound(expectedChecks) 

Что здесь не так, и как я могу получить размер возвращаемого массива?

ответ

1

Ваша функция возвращает объект ArrayList, а не массив. UBound работает только с массивами. Для того, чтобы получить число элементов, содержащихся в ArrayList, используйте .Count свойство:

expectedChecks.Count 
+1

В качестве альтернативы: есть функция возврата 'checkBlocks.ToArray' если вы хотите/нужно массив VBScript. –

Смежные вопросы