Public Dynamic Array возвращает ошибку - PullRequest
1 голос
/ 21 августа 2009

Привет всем Я получаю сообщение об ошибке

Run-time error '9':
Subscript out of range 

со следующим кодом

Public newarray() As String

Sub test1() 
    Dim int1 As Integer 
    int1 = 0
    Do 
        int1 = int1 + 1 
        newarray(int1) = int1 * 5     
    Loop Until int1 > 3
End Sub

когда я уменьшаю массив

Public newarray(4) As string

это работает, однако я хочу объявить динамический массив. Пожалуйста помоги. Спасибо.

1 Ответ

8 голосов
/ 21 августа 2009

Вы можете выделить размер массива, используя ReDim:

Public newarray() As String

Sub test1() 

    Dim int1 As Integer 
    ReDim newarray(4)

    int1 = 0

    Do 

        int1 = int1 + 1 

        newarray(int1) = int1 * 5 

    Loop Until int1 > 3

End Sub

Это переопределит весь ваш массив. Если вам нужно сохранить содержимое массива и просто изменить размер, вы можете использовать ReDim Preserve newarray(4).

Ваш код предполагает, что массивы основаны на 1. Это может быть 0 на основе (устанавливается опцией в VB). Чтобы ваш код работал независимо от этой опции, вы должны использовать LBound / UBound для ограничения вашего счетчика:

    int1 = LBound(newarray)

    Do 

        newarray(int1) = int1 * 5 

        int1 = int1 + 1 


    Loop Until int1 > UBound(newarray)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...