выше ответ является правильным, но я просто хотел бы добавить несколько деталей.
Если вы используете Сохранить ключевое слово, вы можете размер только последний массив измерение, и вы не можете изменить количество измерений на всех. Например, для , если ваш массив имеет только одно измерение, вы можете изменить размер этого размера , потому что это последнее и единственное измерение. Однако, если ваш массив имеет два или более измерений, вы можете изменить размер только последнего измерения и сохранить содержимое массива. Следующий пример показывает, как вы можете увеличить размер последнего измерения динамического массива без удаления любых существующих данных , содержащихся в массиве.
От documentation:
В этом примере используется оператор ReDim для распределения и перераспределения дискового пространства для переменных динамического массива. Предполагается, что опционная база равна 1.
Dim MyArray() As Integer ' Declare dynamic array.
Redim MyArray(5) ' Allocate 5 elements.
For I = 1 To 5 ' Loop 5 times.
MyArray(I) = I ' Initialize array.
Next I
Следующий оператор изменяет размер массива и стирает элементы.
Redim MyArray(10) ' Resize to 10 elements.
For I = 1 To 10 ' Loop 10 times.
MyArray(I) = I ' Initialize array.
Next I
Следующий оператор изменяет размер массива, но не стирает элементы.
Redim Preserve MyArray(15) ' Resize to 15 elements.
Так ваша ошибка: ReDim Preserve DynArray(5 To 5)
где вы изменили нижнюю границу.
Почему ваш заголовок говорит C++, когда речь идет о vba? –
тип неправильное имя .... но не знаю, как изменить после отправки ... – angelbj55
Спасибо за помощь! – angelbj55