2013-02-27 2 views
2

Excel 상수 "True"가 True로 평가되고 상수 "vbTrue"가 -1로 평가됩니다. 나는 항상 이것을 VBA 코드에서 서로 교환 할 수 있다고 생각했지만, 그렇지는 않습니다. 이 두 상수가 다른 결과를 생성하는 곳 중 하나는 CheckBox를 설정하는 것입니다. CheckBox.value를 True로 설정하면 예상 결과가 생성되지만 vbTrue로 설정하면 CheckBox가 TripleState로 남습니다.vbTrue가 참이 아닙니다.

Sub setCkBox1() 
     CheckBox1.TripleState = False 
     CheckBox1.Value = vbTrue '<<<< the check mark is dimmed to show TripleState is True 
     Debug.Print CheckBox1.TripleState: Stop '<<<< even though it won't admit it 

     CheckBox1.Value = True '<<<< check mark is not dimmed 

End Sub 

그래서 내 질문은 VBA의 다른 부분은 상호 교환 할 수없는이 두 상수입니까?

답변

7

True은 부울입니다. vbTrue은 Long입니다. 부울과 롱은 상호 교환 할 수없는 어느 곳에서도 상호 교환 할 수 없습니다.

+0

vbTrue는 상수 (Tristate 그룹에서)로 어디에서 '긴'이라고 보았습니까? –

+2

실제로 IIRC TriState의 Enum 회원입니다. 그러나 어느 쪽이든 상수 (및 Enum 멤버)도 데이터 유형이 있습니다. 'TypeName (vbTrue)'의 리턴 문자열을 보시오. – RBarryYoung

+2

+1'? TypeName (vbTrue) = Long' –

관련 문제