Ответ 1
Авария происходит как из-за отсутствия первого измерения, так и, возможно, с большей точки зрения, бездействия в 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
Нижняя строка, ни один из кодов перед строками "БУМ" не смягчит падение. Ошибка компилятора, которую я бы понял, но VBA не кодируется для обработки
ReDim myVar(,x TO y)
Я использовал Office 2007.
Для ударов и усмешек я также пробовал этот код в следующих местах:
- Доступ '97 (CRASH)
- Visual Basic 5 IDE (CRASH)
- ОСНОВНАЯ среда для OpenOffice Calc. (См. Ниже).
Это не сбой, и я получил следующие две ошибки компилятора:
Сначала это:
Затем это: