VBA를 이용해 개발을 하다 보면 원하는 메시지를 출력하고, 또 사용자의 선택을 받아오기 위해 MsgBox를 자주 사용하게 됩니다. 오늘은 이 MsgBox에 대해 알아보겠습니다.
사용법
MsgBox는 VBA에서 기본적으로 제공하는 함수로, 사용법은 다음과 같습니다.
MsgBox(prompt, [, buttons] [, title] [, helpfile, context])
Parameter로 사용하는 값들 중 필수적으로 입력해야 할 요소는 prompt 밖에 없으며, 나머지는 모두 옵션입니다.
prompt: MsgBox에 띄울 메시지 문자열 (필수 값)
buttons: MsgBox에 표시할 버튼과 아이콘
title: MsgBox 창에 표시할 제목
helpfile: 도움말
context: 도움말 파일의 context id
Buttons Option
Buttons 옵션을 사용하고자 한다면, 다음 중 하나를 골라 사용하시면 됩니다.
Constant | Value | Desciption |
vbOKOnly | 0 | 확인 버튼만 존재 |
vbOKCancel | 1 | 확인, 취소 버튼 |
vbAbortRetryIgnore | 2 | 중단, 다시 시도, 무시 버튼 |
vbYesNoCancel | 3 | 예, 아니오, 취소 버튼 |
vbYesNo | 4 | 예, 아니오 버튼 |
vbRetryCancel | 5 | 다시 시도, 취소 버튼 |
vbCritical | 16 | 치명적 오류 표시, 확인 버튼 |
vbQuestion | 32 | 물음표 표시, 확인 버튼 |
vbExclamation | 48 | 주의 표시, 확인 버튼 |
vbInformation | 64 | 정보 표시, 확인 버튼 |
vbDefaultButton1 | 0 | 첫번째 단추 선택이 기본값 |
vbDefaultButton2 | 256 | 두번째 단추 선택이 기본값 |
vbDefaultButton3 | 512 | 세번째 단추 선택이 기본값 |
vbDefaultButton4 | 768 | 네번째 단추 선택이 기본값 |
vbSystemModal | 4096 | 시스템 모달 메시지 |
vbMshBoxHelpButton | 16384 | 확인, 도움말 버튼 |
코드에는 [, buttons]의 자리에 Constant 또는 Value를 입력하시면 됩니다.
Ex1)
Call MsgBox("This is MsgBox", vbCritical)
Ex2)
Call MsgBox("This is MsgBox", 2)
Return Value
개발자의 니즈에 따라 여러 버튼을 지원하는 것을 알 수 있었는데요, 그렇다면 사용자가 어떤 버튼을 눌렀는지도 알 수 있어야겠죠? 각 버튼을 눌렀을 때마다 다른 Return Value를 반환함으로써 이를 구분합니다.
Constant | Value | Button Clicked |
vbOK | 1 | OK |
vbCancel | 2 | Cancel |
vbAbort | 3 | Abort |
vbRetry | 4 | Retry |
vbIgnore | 5 | Ignore |
vbYes | 6 | Yes |
vbNo | 7 | No |
Return Value로는 Constant 값과 Value 값을 모두 반환됩니다. 예를 들면, OK 버튼을 누르면 vbOK와 1을 반환하고, Retry 버튼을 누르면 vbRetry와 4를 반환합니다. 둘 중 원하는 값을 사용하시면 됩니다.
다음과 같이 사용할 수 있겠죠.
Sub MsgBox_Example()
If MsgBox("Do you want to Continue?", vbYesNo) = 1 Then
'Continue Code
Else
'Cancel Code
End If
End Sub
다음과 같이 작성해도 똑같이 돌아갑니다.
Sub MsgBox_Example()
If MsgBox("Do you want to Continue?", vbYesNo) = vbYes Then
'Continue Code
Else
'Cancel Code
End If
End Sub
'프로젝트 및 실습 > VBA' 카테고리의 다른 글
[VBA] IIf Function (0) | 2022.08.04 |
---|---|
[VBA] Error Handling (0) | 2022.08.03 |
[VBA] Optional Arguments (0) | 2022.08.02 |
[VBA] Do While과 Do Until (0) | 2022.08.02 |
[VBA] Select Case Construct (Switch문) (0) | 2022.08.02 |