2013-05-10 47 views
9

Có ai biết tại sao điều này không gây ra lỗi Variable not defined khi tôi biên dịch không?Tại sao Option Option không bắt ReDim <undeclared>?

'Class1.cls' 
Option Explicit 

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

Tôi có hiểu nhầm cách Option Explicit được cho là hoạt động không? Hoặc có điều gì sai với thử nghiệm này? Hay đây chỉ là một lỗi trong VBA?

(Tôi đang thử nghiệm này trên Excel 2007)

+1

ReDim là một thủ tục tiêu chuẩn (ẩn), vì vậy bạn chỉ cần chuyển các đối số cho một proc; Option Explicit không kích hoạt trong trường hợp này. –

+0

@AlexBell Không, không có ReDim, chuyển biến chưa khai báo tới một proc vẫn tạo ra "lỗi biến không khai báo". Tôi nghĩ rằng Adrien Lacroix đã đúng. – RBarryYoung

+0

Vâng, tôi đồng ý! Dù sao, kết luận cuối cùng: nó không phải là một lỗi, nhưng một hành vi tài liệu. –

Trả lời

11

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

"Khi tùy chọn xuất hiện rõ ràng trong một tập tin, bạn phải khai báo rõ ràng tất cả các biến bằng cách sử dụng Dim hoặc báo cáo ReDim. "

Vì vậy, ReDim hoạt động trong Tùy chọn Rõ ràng.

+1

Vâng, nó hoạt động nhưng nó vẫn là một cách xấu để lập trình. Tuy nhiên, tôi không biết liệu nó có tác động đến hiệu suất hay không. –