VBA: 조건부 - 아무것도 아니다
이 있습니다.IfVBA 어플리케이션의 상태를 다음에 나타냅니다.
If Not My_Object Is Nothing Then
My_Object.Compute
코드가 디버깅모드로 실행되었을 때,If조건이 true를 반환한다.My_Object에는 "변수 없음"이 있습니다.
누가 설명 좀 해줄래요?나는 되고 싶다.My_Object.Compute그때만 처형되다My_Object존재한다.
Issun에 대한 귀하의 코멘트에 근거합니다.
설명해 주셔서 감사합니다.이 경우 개체는 If 조건보다 먼저 선언되고 생성됩니다.그럼 If 조건을 사용하여 <No Variables>를 체크하려면 어떻게 해야 하나요?즉, My_Object를 실행하고 싶지 않습니다.My_Object에 <변수 없음>이 있는 경우 계산
개체의 속성 중 하나를 확인해야 합니다.목적이 무엇인지 알려주지 않으면 도와드릴 수 없습니다.
몇 가지 일반적인 오브젝트를 테스트해보니Collection항목을 추가하지 않고 표시됨<No Variables>감시창에서요객체가 실제로 컬렉션인 경우 다음 항목을 확인할 수 있습니다.<No Variables>를 사용한 조건.Count속성:
Sub TestObj()
Dim Obj As Object
Set Obj = New Collection
If Obj Is Nothing Then
Debug.Print "Object not instantiated"
Else
If Obj.Count = 0 Then
Debug.Print "<No Variables> (ie, no items added to the collection)"
Else
Debug.Print "Object instantiated and at least one item added"
End If
End If
End Sub
또한 만약 당신이 어떤 오브젝트를 선언할 필요가 있다.As New그 다음에Is Nothing수표는 무용지물이 된다.그 이유는 당신이 어떤 대상을 선언할 때As New처음 호출했을 때 존재 여부를 확인하기 위해서라도 처음 호출했을 때 자동으로 생성됩니다.
Dim MyObject As New Collection
If MyObject Is Nothing Then ' <--- This check always returns False
이것이 당신의 특정 문제의 원인은 아닌 것 같습니다.하지만 다른 사람들이 구글 검색을 통해 이 질문을 찾을 수 있기 때문에, 저는 흔한 초보자 실수이기 때문에 포함시키고 싶었습니다.
클래스 객체에 변수가 없다고 해서 아무것도 아닌 것은 아닙니다.오브젝트를 선언하는 것과 오브젝트를 작성하는 것은 별개의 문제입니다.개체를 설정/작성하고 있는지 확인합니다.
예를 들어 사전 개체를 예로 들 수 있습니다. 변수가 없다고 해서 사전 개체가 생성되지 않은 것은 아닙니다.
Sub test()
Dim dict As Object
Set dict = CreateObject("scripting.dictionary")
If Not dict Is Nothing Then
MsgBox "Dict is something!" '<--- This shows
Else
MsgBox "Dict is nothing!"
End If
End Sub
그러나 개체를 선언하고 생성하지 않으면 아무것도 아닙니다.
Sub test()
Dim temp As Object
If Not temp Is Nothing Then
MsgBox "Temp is something!"
Else
MsgBox "Temp is nothing!" '<---- This shows
End If
End Sub
제 샘플 코드에서, 저는my objectif 스테이트먼트의 "not" 부분을 오브젝트와 함께 사용할 수 없습니다.나는 노력했다.if My_Object is not nothing그리고 또if not My_Object is nothing구문적인 문제일 수도 있지만 시간을 낭비할 시간이 없어서 다음과 같은 간단한 회피책을 사용했습니다.
if My_Object is Nothing Then
'do nothing
Else
'Do something
End if
언급URL : https://stackoverflow.com/questions/8472907/vba-conditional-is-nothing
'programing' 카테고리의 다른 글
| Bash 변수 범위 (0) | 2023.04.12 |
|---|---|
| 포스트그레스 자동 증가 카운터 재설정 (0) | 2023.04.12 |
| EF Code First의 계산된 열 (0) | 2023.04.12 |
| UNION [ALL]에서 SELECT INTO 조항을 사용할 수 있습니까? (0) | 2023.04.07 |
| Dapper를 사용하여 삽입된 ID를 반환하려면 어떻게 해야 합니까? (0) | 2023.04.07 |