2013-05-10 9 views
9

Czy ktoś wie, dlaczego nie spowoduje to błędu Variable not defined podczas kompilacji?Dlaczego opcja Jawnie złapać ReDim <undeclared>?

'Class1.cls' 
Option Explicit 

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

Czy nie rozumiem, jak powinien działać Option Explicit? Czy coś jest nie tak z tym testem? Czy jest to tylko błąd w VBA?

(I m testowania to na Excel 2007)

+1

ReDim jest standardową (niejawną) procedurą, więc po prostu przekazujesz argumenty do proc; Opcja Jawny nie uruchamia się w tym przypadku. –

+0

@AlexBell Nie, bez ReDim, przekazanie niezadeklarowanej zmiennej do proc wciąż generuje "niezadeklarowany błąd zmiennej". Myślę, że Adrien Lacroix ma rację. – RBarryYoung

+0

Tak, zgadzam się! W każdym razie końcowy wniosek: nie jest to błąd, ale udokumentowane zachowanie. –

Odpowiedz

11

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

"Gdy pojawi Explicit Option w pliku, należy jawnie zadeklarować wszystkie zmienne za pomocą ciemny lub Redim oświadczenia. "

Więc ReDim działa w Opcja Wyraźna.

+1

Tak, to działa, ale nadal jest to zły sposób na programowanie. Jednak nie wiem, czy ma to wpływ na wydajność. –

Powiązane problemy