Сбой происходит как из-за пропуска первого измерения или, возможно, лучше сформулированного, пропуска при nLastDimension - 1 , так и из-за использования ключевого слова TO в следующем измерении.
Я взял ваш маленький образец и попытался сделать так, чтобы он НЕ вылетал: P
Option Explicit 'Just wanted to make the Interpreter more picky
Private Sub test()
'Go through some basic declaration
Dim v() As Variant
Dim M As Integer
Dim New_Value As Integer
ReDim v(2, 2) 'No Problem
ReDim Preserve v(1, 1 To M) ' No Problem
ReDim Preserve v(1 To M) ' No Problem
ReDim Preserve v(,400) 'Compile Error
'Crash on this
'ReDim Preserve v(,1 To M) 'BOOM!!!
'and this:
'ReDim Preserve v(,1 To 2) 'BOOM!!!
'and this:
'ReDim Preserve v(1 to 5,,1 To 2) 'BOOM!!!
End Sub
В итоге, ни один из кодов перед строками "BOOM" не сможет смягчить падение. Ошибка компилятора я бы понял, но VBA не кодируется для обработки
ReDim myVar(,x TO y)
Я использовал Office 2007.
Для пинки и ухмылки я также пробовал этот код в следующих местах:
- Доступ '97 (CRASH)
- Visual Basic 5 IDE (CRASH)
- ОСНОВНАЯ среда для OpenOffice Calc. (См. Ниже)
Это не привело к сбою, и я получил следующие две ошибки компилятора:
Сначала это:
![enter image description here](https://i.stack.imgur.com/fd6fr.jpg)
Тогда это:
![enter image description here](https://i.stack.imgur.com/CET9m.jpg)