Почему Option Explicit не перехватывает ReDim ‹недекларированный›?

Кто-нибудь знает, почему это не вызывает ошибку Variable not defined при компиляции?

'Class1.cls'
Option Explicit

Public Sub foo()
    ReDim fubar(1 To 2, 1 To 1)
End Sub

Я неправильно понимаю, как должен работать Option Explicit? Или что-то не так с этим тестом? Или это просто ошибка в VBA?

(Я тестирую это на Excel 2007)


person RBarryYoung    schedule 10.05.2013    source источник
comment
ReDim — это стандартная (неявная) процедура, поэтому вы просто передаете аргументы процедуре; Option Explicit в этом случае не срабатывает.   -  person Alexander Bell    schedule 10.05.2013
comment
@AlexBell Нет, без ReDim передача необъявленной переменной в процедуру по-прежнему вызывает ошибку необъявленной переменной. Я думаю, что Адриан Лакруа прав.   -  person RBarryYoung    schedule 10.05.2013
comment
Да я согласен! В любом случае, окончательный вывод: это не баг, а задокументированное поведение.   -  person Alexander Bell    schedule 10.05.2013


Ответы (1)


Из MSDN (http://msdn.microsoft.com/en-gb/library/y9341s4f%28v=vs.80%29.aspx)

"Когда в файле появляется Option Explicit, вы должны явно объявить все переменные с помощью операторов Dim или ReDim."

Таким образом, ReDim работает в Option Explicit.

person Adrien Lacroix    schedule 10.05.2013
comment
Да, это работает, но это все еще плохой способ программирования. Однако я не знаю, влияет ли это на производительность. - person Adrien Lacroix; 10.05.2013