내 사용자 지정 클래스의 인스턴스 인 전역 변수가 있습니다.
객체가 설정되었는지 또는 초기화해야하는지 어떻게 확인합니까?
내 사용자 지정 클래스의 인스턴스 인 전역 변수가 있습니다.
객체가 설정되었는지 또는 초기화해야하는지 어떻게 확인합니까?
답변:
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
. 문제 외에는 아무것도 얻지 못합니다. 동작을 "전환"하려면 조건부 컴파일을 사용하십시오.