Рассмотрим следующий код:
Public Sub VBACompilerIsMad()
Dim Ap As Application
Dim Wb As Workbook
Dim Ws As Worksheet
Debug.Print Ap.XXX ' No compile error
Debug.Print Wb.XXX ' No compile error
Debug.Print Ws.XXX ' Compile error
End Sub
Когда я скомпилирую это, я получаю ошибку компилятора для ссылки на существующий член Worksheet
. Однако, если я прокомментирую последнюю строку, ошибка компилятора отсутствует, хотя ни один из Application
и Workbook
не имеет метода или свойства XXX
. Это как если бы я объявлял Ap
и Wb
как переменные Object
.
Почему компилятор рассматривает Application
/Workbook
по-другому от Worksheet
?
Существуют ли какие-либо другие классы, подобные этому, что компилятор выглядит так, как будто они были Object
?