2010-04-13 5 views

답변

80
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 
+0

나는 그것이 인터넷 검색을 할 때 간단해야한다는 것을 알았고 아무 것도 발견하지 못했습니다! 당신의 도움을 주셔서 감사합니다! – Icode4food

+16

찾기 아무것도 정답이 아닙니다! ;) –

+3

'obj Is Nothing'을 체크하는 것은'IsNothing (obj)'를 체크하는 것과 같지 않다는 것을 주목하라! 올바른 구문을 확인해 주셔서 감사합니다. 왜 IsNothing()이 다르게 동작하는지 모르겠습니다 ... –

0

(UN)이 작업을 수행하는 안전한 방법 - 당신이 명시 적 옵션을 사용하지 않는로 확인하는 경우는 -입니다. ..

Not TypeName(myObj) = "Empty" 

이것은 또한 객체가 선언되지 않은 경우 케이스를 처리합니다. 당신은 단지 몇 가지 행동을 전환하는 선언을 주석하려는 경우 VBA가 빈 변형 유형으로 선언되지 않은 변수를 자동으로 인스턴스화 때문 작동

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 

... 유용합니다. 동작을 관리하기 위해 보조 부울을 사용할 필요가 없습니다.

+1

과 같은 느낌이 들지 않습니다. 'Option Explicit'이없는 VBA 코드는 절대 없어야합니다. 문제를 제외하고는 아무 것도 얻지 못합니다. 동작을 "전환"하려면 조건부 컴파일을 사용하십시오. – Andre

+0

@andre, yes, fair point. 범위가 없으면 헝가리 표기법을 사용하기 때문에 기분이 좋지 않지만 요즘에는 vba를 피하려고 노력합니다. 내가 보는 것은 대부분 명시적인 선언, 이름 안전 및 무시 무시한 변형을 피하는 것입니다. 당신의 주요 이유는 무엇입니까? –

관련 문제