Просто добавить к ответу @ Томалака ... Если переменная объекта не была создана, то тестирование с помощью TypeOf вызовет ошибку времени выполнения. Также обратите внимание, что класс может реализовывать интерфейсы, например
Dim fs As Scripting.FileSystemObject
On Error Goto Err_Handler
If TypeOf fs Is Scripting.FileSystemObject Then
Debug.Print "[Won't get here]"
End If
Err_Handler:
If Err.Number <> 0 Then
Debug.Print "Oops, error when fs Is Nothing"
End If
On Error Resume Next
Set fs = New Scripting.FileSystemObject
If TypeOf fs Is Scripting.FileSystemObject Then
Debug.Print "Is a FileSystemObject"
End If
If TypeOf fs Is IFileSystem Then
Debug.Print "Implements IFileSystem "
End If