VBA – Yes No 메시지 박스(Msgbox)
In this Article
이 튜토리얼에서는 VBA MsgBox 함수를 사용하여 사용자에게 메시지 상자를 표시하는 방법(예/아니요 메시지 상자 포함)을 다룹니다. InputBoxes에 대한 글도 읽어보실 수 있습니다.
VBA MsgBox 함수
VBA에서는 간단한 MsgBox를 쉽게 표시할 수 있습니다:
MsgBox "이것이 메시지박스 입니다"
단순한 확인 메시지 상자를 표시하는 것 이상으로 다양한 작업을 수행할 수 있습니다. 자세한 내용을 살펴보기 전에 복잡한 예제를 빠르게 살펴보겠습니다…
VBA YesNo 메시지 박스
아래에서는 다음과 같은 메시지 박스를 만들겠습니다:
- 제목 : “메시지박스 제목”, 프롬프트 : “텍스트”
- 물음표 아이콘
- 단순한 “확인”이 아닌 Yes / No 옵션
- 기본 설정 버튼 = “아니요”
Dim answer As Integer
answer = MsgBox("Text", vbQuestion + vbYesNo + vbDefaultButton2, "Message Box Title")
메시지 상자는 사용자의 선택에 따라 예 또는 아니요를 반환합니다. 그런 다음 선택에 따라 다른 작업을 수행할 수 있습니다:
If answer = vbYes Then
MsgBox "예"
Else
MsgBox "아니요"
End If
다음 섹션에서는 메시지 상자를 만들 때 사용할 수 있는 모든 옵션을 보여드리겠습니다. 그런 다음 MsgBox 함수의 구문을 소개하고 마지막으로 다른 메시지 상자 예제를 살펴보겠습니다.
VBA 메시지박스 옵션
아래 이미지를 보시면 메시지 박스를 만들 때 사용할 수 있는 거의 모든 옵션을 볼 수 있습니다. 아이콘과 다양한 버튼에 주목하세요.
프리미엄 VBA 애드인(AutoMacro)의 “메시지 박스 빌더” 의 스크린샷입니다: 메시지박스 빌더를 사용하면 원하는 메시지박스를 빠르게 디자인하고 코드 모듈에 코드를 삽입할 수 있습니다. 또한 다른 많은 코드 빌더, 광범위한 VBA 코드 라이브러리 및 다양한 코딩 도구가 포함되어 있습니다. 모든 VBA 개발자에게 필수품입니다.
MsgBox 함수 구문
MsgBox( 프롬프트, buttons, 제목, 도움말파일, 컨텍스트 )
프롬프트(필수) – 메시지 박스의 텍스트입니다.
버튼 – 표시할 버튼을 선택합니다. 생략하면 ‘확인 전용’이 됩니다. 여기에서 표시할 아이콘과 기본 버튼을 지정할 수도 있습니다.
제목 – 메시지 상자 상단의 제목입니다. 생략하면 현재 애플리케이션의 이름이 표시됩니다(예: Microsoft Excel).
도움말파일 – 용자가 ‘도움말’ 버튼을 클릭할 때 액세스할 수 있는 도움말 파일을 지정합니다. 지정한 경우 컨텍스트(아래)도 추가해야 합니다.
컨텍스트 – 해당 도움말 주제에 할당된 도움말 컨텍스트 번호를 나타내는 숫자 표현식입니다.
도움말 파일 및 컨텍스트 인수는 무시해도 됩니다. 사용하는 것을 본 적이 없습니다.
메시지 박스 제목과 프롬프트 커스터마이징하기
MsgBox 함수를 사용하면 다음과 같이 제목 및 프롬프트 메시지를 사용자 지정할 수 있습니다:
Msgbox "프롬프트",,"제목"
다른 예시입니다:
Sub MsgBoxPromptTitle()
MsgBox "1단계 완료. 2단계를 실행하려면 확인을 클릭하세요.",,"5단계 중 1단계"
End Sub
중요합니다! 텍스트를 따옴표로 묶는 것을 잊지 마세요.
메시지박스 줄 바꿈
‘vbNewLine’을 사용하여 메시지 상자 프롬프트에 줄 바꿈을 추가할 수도 있습니다.
Sub MsgBoxPromptTitle_NewLine()
MsgBox "1단계 완료." & vbNewLine & "2단계를 실행하려면 확인을 클릭하세요.", , "5단계 중 1단계"
End Sub
& 기호를 사용하여 텍스트를 결합하는 것을 알 수 있습니다. 텍스트에 &를 사용하는 방법과 줄 바꿈 삽입을 위한 다른 옵션에 대한 자세한 내용은 텍스트 결합에 대한 문서에서 확인할 수 있습니다.
MsgBox 아이콘들
VBA를 사용하면 메시지 상자에 미리 만들어진 네 가지 아이콘 중 하나를 추가할 수 있습니다:
아이콘 상수 | 아이콘 |
---|---|
vbInformation | |
vbCritical | |
vbQuestion | |
vbExclamation |
Icon 상수는 버튼 인수 위치에 배치해야 합니다:
Sub MsgBoxQuestionIcon()
MsgBox "질문 예시", vbQuestion
End Sub
위의 코드를 실행하면 아래와 같이 질문 아이콘이 있는 기본 ‘OK’ 메시지 상자가 생성됩니다:
문자를 입력하면 VBA 편집기에 사용 가능한 옵션이 아래와 같이 표시되는 것을 확인할 수 있습니다:
이 기능은 아이콘이나 버튼의 정확한 구문이나 이름을 기억할 필요가 없다는 면에서 유용합니다.
이제 각 메시지 상자 아이콘을 만들어 보겠습니다:
MsgBox 아이콘- 정보
Sub MsgBoxInformationIcon()
MsgBox "정보 예시", vbInformation
End Sub
MsgBox 아이콘- 중요
Sub MsgBoxCriticalIcon()
MsgBox "중요 예시", vbCritical
End Sub
MsgBox Icons – 질문
Sub MsgBoxQuestionIcon()
MsgBox "질문 예시", vbQuestion
End Sub
MsgBox 아이콘- 느낌표
Sub MsgBoxExclamationIcon()
MsgBox "느낌표 예제", vbExclamation
End Sub
아래에서는 버튼 레이아웃이 다른 메시지 상자를 생성하는 방법에 대해 설명합니다. 다른 메시지 상자 유형을 선택하는 경우 버튼 뒤에 “+”를 사용하여 아이콘 유형을 추가해야 합니다:
Sub MsgBoxQuestionIcon()
MsgBox "계속 하시겠습니까?", vbOKCancel + vbQuestion
End Sub
MsgBox 변수
지금까지는 주로 기본 ‘확인’ 메시지 상자로 작업했습니다. 확인 메시지 상자에는 옵션이 하나만 있습니다: ‘OK’를 누르면 코드가 계속 실행됩니다. 하지만 다른 버튼 그룹을 지정할 수도 있습니다: 확인/취소, 예/아니요 등 다른 버튼 그룹을 지정할 수도 있습니다.
이 경우 어떤 버튼을 누르느냐에 따라 다른 작업을 수행할 수 있습니다. 예를 살펴보겠습니다.
다음은 우리가 생성할 메시지 상자입니다:
전체 코드는 다음과 같습니다(다음에 자세히 설명하겠습니다):
Sub MsgBoxVariable()
Dim answer As Integer
answer = MsgBox("계속 하시겠습니까?", vbQuestion + vbYesNo)
If answer = vbYes Then
MsgBox "예"
Else
MsgBox "아니오"
End If
End Sub
먼저 메시지 상자 출력을 정수 변수에 할당합니다.
Dim answer As Integer
answer = MsgBox("계속 하시겠습니까?", vbQuestion + vbYesNo)
다음으로 If-Else를 사용하여 어떤 버튼을 눌렀는지에 따라 수행할 작업을 결정합니다:
If answer = vbYes Then
MsgBox "예"
Else
MsgBox "아니오"
End If
MsgBox 함수는 정수 값(1~7 사이)을 반환하므로 변수를 정수 유형으로 정의합니다. 그러나 정수를 참조하는 대신 상수를 참조할 수 있습니다(예: vbOK, vbCancel 등). 모든 옵션을 보려면 이 표를 참조하세요:
버튼 | 상수 | 값 |
---|---|---|
OK(확인) | vbOK | 1 |
Cancel(취소) | vbCancel | 2 |
Abort(중단) | vbAbort | 3 |
Retry(재시도) | vbRetry | 4 |
Ignore(무시) | vbIgnore | 5 |
Yes(예) | vbYes | 6 |
No(아니요) | vbNo | 7 |
이제 각 버튼에 대한 코드를 데모해 보겠습니다:
확인 메시지 박스 – vbOKOnly
이것은 VBA의 표준 메시지 박스입니다.
Sub MsgBox_OKOnly()
Dim answer As Integer
answer = MsgBox("OKOnly 예시", vbOKOnly)
End Sub
확인 취소 메시지 박스 – vbOKCancel
Sub MsgBox_OKCancel()
Dim answer As Integer
answer = MsgBox("확인 취소 예시", vbOKCancel)
If answer = vbOK Then
MsgBox "확인"
Else
MsgBox "취소"
End If
End Sub
Yes No 메시지 박스 – vbYesNo
Sub MsgBox_YesNo()
Dim answer As Integer
answer = MsgBox("예 아니요 예시", vbYesNo)
If answer = vbYes Then
MsgBox "예"
Else
MsgBox "아니요"
End If
End Sub
예 아니요 취소 메시지박스 – vbYesNoCancel
Sub MsgBox_YesNoCancel()
Dim answer As Integer
answer = MsgBox("예 아니요 취소 예시", vbYesNoCancel)
If answer = vbYes Then
MsgBox "예"
ElseIf answer = vbNo Then
MsgBox "아니요"
Else
MsgBox "취소"
End If
End Sub
중단 다시시도 무시 메시지박스 – vbAbortRetryIgnore
Sub MsgBox_AbortRetryIgnore()
Dim answer As Integer
answer = MsgBox("중단 다시시도 무시 예시", vbAbortRetryIgnore)
If answer = vbAbort Then
MsgBox "중단"
ElseIf answer = vbRetry Then
MsgBox "다시시도"
Else
MsgBox "무시"
End If
End Sub
다시시도 취소 메시지박스 – vbRetryCancel
Sub MsgBox_RetryCancel()
Dim answer As Integer
answer = MsgBox("다시시도 취소 예시", vbRetryCancel)
If answer = vbRetry Then
MsgBox "다시시도"
Else
MsgBox "취소"
End If
End Sub
VBA 메시지박스 예시
매크로 실행 전 메시지박스 확인
이 코드는 매크로를 호출하기 전에 예 아니오 메시지 상자를 표시합니다. 예를 클릭하면 매크로가 호출되고, 아니요를 클릭하면 매크로가 실행되지 않습니다.
Sub Msgbox_BeforeRunning()
Dim answer As Integer
answer = MsgBox("매크로를 실행하시겠습니까?", vbQuestion + vbYesNo)
If answer = vbYes Then Call Macro1
End Sub
예 / 아니요 메시지박스 – Exit Sub
여기서 매크로를 계속 실행할지 여부를 사용자에게 확인합니다. 아니요를 클릭하면 코드가 프로시저를 종료하고, 그렇지 않으면 프로시저가 계속됩니다.
Sub Msgbox_BeforeRunning()
Dim answer As Integer
answer = MsgBox("계속 하시겠습니까?", vbQuestion + vbYesNo)
If answer = vbNo Then Exit Sub
'실행할 코드
End Sub
Access VBA의 메시지박스
위의 모든 예제는 Excel VBA에서와 마찬가지로 Access VBA에서도 똑같이 작동합니다.