반환 유형은 Byte
그 자체가 아니지만 vbMsgBoxResult
열거 형 값입니다.
MSDN의 문서는 찾기 힘들어지고 있지만, 어쨌든 Rubberduck 당신은 반환 형식을 확인하는 상황에 맞는 라벨 특색 명령 모음 얻을 :
실제로로드에서오고 프로젝트의 참조 된 COM 라이브러리 및 COM 유형과 해당 멤버를 반복합니다 (저는 Rubberduck 저장소를 소유하고 있습니다).
vbMsgBoxResult
는 Enum
되고, 기본 유형이 Long
아닌 Byte
- 당신은 쉽게 즉시 창에서이를 확인할 수 있습니다 : 괄호에 관해서는
?TypeName(VbMsgBoxResult.vbOK)
Long
, 특별한 아무것도 없다에 대한 MsgBox
- 다른 어떤 Function
프로 시저와 같은 구문입니다. 이 작품
그 이유는 문자열 인수 "Test"
이 값에 의해 전달 될 강요하고 있기 때문에
MsgBox ("Test")
인가
(! 그것은 괄호 할 것을입니다) 그리고 그 이유는이하지 않습니다 작업 : 하나 개의 인수가 함수에 ByVal
를 전달하기로 VBA가 "Test", vbOkOnly
을 평가할 수 없기 때문에
MsgBox ("Test", vbOkOnly)
입니다.
MsgBox ("Test"), (vbOkOnly)
을하지만 바보 같을 것이다
이 작동합니다.
당신 같은 VBA Function
를 호출 할 때하고자했다 Sub
(즉, 당신은 반환 값을 걱정하지 않을 때), 당신은 괄호를 떨어 뜨리거나 [오래된] 명시 적 Call
구문을 사용해야합니다
Call MsgBox("Test", vbOkOnly)
을
'MsgBox "Hello world!"할 수 있습니다. vbOKOnly, "Say Hi"'='를 사용할 때'()'가 필요합니다. –
'()'이 마음에 들면'Call'을 앞에 놓으십시오.'MsgBox를 호출하십시오. ("Hello world!", vbOKOnly, "Say Hi")' –
빨리 대답 해주셔서 감사합니다. 이제 내가 표현하는 세 가지 새로운 방법 :) @ SkottCraner –