내 사용자 지정 클래스의 인스턴스 인 전역 변수가 있습니다.
객체가 설정되었는지 또는 초기화해야하는지 어떻게 확인합니까?
내 사용자 지정 클래스의 인스턴스 인 전역 변수가 있습니다.
객체가 설정되었는지 또는 초기화해야하는지 어떻게 확인합니까?
답변:
If obj Is Nothing Then
' need to initialize obj: '
Set obj = ...
Else
' obj already set / initialized. '
End If
또는 다른 방법을 선호하는 경우 :
If Not obj Is Nothing Then
' obj already set / initialized. '
Else
' need to initialize obj: '
Set obj = ...
End If
obj Is Nothing은 확인 과 동일하지 않습니다 IsNothing(obj)! 올바른 구문에 대한 감사는 확실하지 왜 ...이 확인 IsNothing()... 다르게 작동
Not (obj Is Nothing)보다 이해하기 쉽다 Not obj Is Nothing. 내 두뇌는 "Not obj"가 무엇인지 모릅니다!
이를 수행하는 (불) 안전한 방법-명시 적 옵션을 사용하지 않는 것이 괜찮다면 ...
Not TypeName(myObj) = "Empty"
이것은 또한 객체가 선언되지 않은 경우를 처리합니다. 이것은 일부 동작을 끄는 선언을 주석 처리하려는 경우 유용합니다.
Dim myObj as Object
Not TypeName(myObj) = "Empty" '/ true, the object exists - TypeName is Object
'Dim myObj as Object
Not TypeName(myObj) = "Empty" '/ false, the object has not been declared
이것은 VBA가 선언되지 않은 변수를 Empty Variant 유형으로 자동 인스턴스화하기 때문에 작동합니다. 동작을 관리하기 위해 보조 부울이 필요하지 않습니다.
Option Explicit. 문제 외에는 아무것도 얻지 못합니다. 동작을 "전환"하려면 조건부 컴파일을 사용하십시오.