2016-07-08 1 views
0

같은 간단한있는 MsgBox, 표시하는 경우 :왜있는 MsgBox가 바이트 변수를 필요로 않습니다 [VBA]

MsgBox("Hello World!") 

잘 작동, 왜 조금 더 기록 할 수있는 "고급"메시지 박스가있다 않습니다 이런 식으로 :

Dim DisplayMsgBox as Byte 
DisplayMsgBox = MsgBox("Hello world!", vbOKOnly, "Say Hi") 

"추가 첨부 파일"이없는 "일반"MsgBox처럼이 방법을 사용해야하는 특별한 이유가 있습니까? (이

MsgBox("Hello world!", vbOKOnly, "Say Hi") 
+1

'MsgBox "Hello world!"할 수 있습니다. vbOKOnly, "Say Hi"'='를 사용할 때'()'가 필요합니다. –

+2

'()'이 마음에 들면'Call'을 앞에 놓으십시오.'MsgBox를 호출하십시오. ("Hello world!", vbOKOnly, "Say Hi")' –

+0

빨리 대답 해주셔서 감사합니다. 이제 내가 표현하는 세 가지 새로운 방법 :) @ SkottCraner –

답변

1

을 :)과 같이 당신이 사용하는 경우 :

:

Dim DisplayMsgBox as Byte 
DisplayMsgBox = MsgBox("Hello world!", vbOKOnly, "Say Hi") 

DisplayMsgBox 버튼의 값이

이 시도하고 차이에 대한보고를 누르면 얻을 것이다

Sub Test_MsgBox_Result() 
Dim DisplayMsgBox As Byte 
DisplayMsgBox = MsgBox("Hello world!", vbOKOnly, "Say Hi") 
MsgBox "The value of Ok is " & DisplayMsgBox 
DisplayMsgBox = MsgBox("Hello world!", vbYesNo, "Say Hi") 
If DisplayMsgBox = vbYes Then 
    MsgBox "The value of Yes is " & DisplayMsgBox 
Else 
    MsgBox "The value of No is " & DisplayMsgBox 
End If 
DisplayMsgBox = MsgBox("Hello world!", vbYesNoCancel, "Say Hi") 
If DisplayMsgBox = vbYes Then 
    MsgBox "The value of Yes is " & DisplayMsgBox 
ElseIf DisplayMsgBox = vbNo Then 
    MsgBox "The value of No is " & DisplayMsgBox 
Else 
    MsgBox "The value of Cancel is " & DisplayMsgBox 
End If 
End Sub 

자세한 내용은보십시오 here

+0

고마워, 그게 정말 도움이 :) –

2

반환 유형은 Byte 그 자체가 아니지만 vbMsgBoxResult 열거 형 값입니다.

MSDN의 문서는 찾기 힘들어지고 있지만, 어쨌든 Rubberduck 당신은 반환 형식을 확인하는 상황에 맞는 라벨 특색 명령 모음 얻을 :

Rubberduck commandbar

실제로로드에서오고 프로젝트의 참조 된 COM 라이브러리 및 COM 유형과 해당 멤버를 반복합니다 (저는 Rubberduck 저장소를 소유하고 있습니다).

vbMsgBoxResultEnum되고, 기본 유형이 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) 
관련 문제