VBA Function

MsgBox 함수

노만e 2025. 3. 17. 07:19

엑셀 VBA에서 MsgBox 함수는 사용자에게 메시지를 표시하고, 버튼을 클릭하여 응답을 받을 수 있도록 하는 기능입니다.

즉, 단순한 메시지 출력부터 사용자 입력 확인까지 다양한 용도로 사용됩니다.


1. 기본 문법

MsgBox "메시지", [버튼 유형], ["제목"]
  • "메시지" → 메시지 박스에 표시할 텍스트
  • [버튼 유형] (선택 사항) → vbOKOnly, vbYesNo, vbYesNoCancel 등 (기본값: vbOKOnly)
  • ["제목"] (선택 사항) → 메시지 박스의 제목

2. 기본 메시지 출력

Sub 기본_메시지()
MsgBox "Hello, VBA!"
End Sub

📌 "Hello, VBA!" 메시지가 표시됨

📌 사용자가 "확인" 버튼을 클릭하면 메시지 박스가 닫힘


3. 메시지 창에 제목 추가

Sub 제목_추가()
MsgBox "이것은 메시지 창입니다.", vbOKOnly, "알림"
End Sub

📌 제목이 "알림"인 메시지 박스 표시

📌 "이것은 메시지 창입니다." 메시지와 "확인" 버튼이 포함됨


4. 여러 개의 줄로 메시지 출력 (vbNewLine)

Sub 줄바꿈_메시지()
MsgBox "첫 번째 줄" & vbNewLine & "두 번째 줄", vbOKOnly, "줄바꿈 예제"
End Sub

📌 메시지 창에서 줄바꿈 (vbNewLine)을 사용하여 두 줄로 출력


5. 여러 개의 버튼 추가 (vbYesNo, vbYesNoCancel 등)

버튼 옵션
설명
vbOKOnly
"확인" 버튼만 표시 (기본값)
vbYesNo
"예", "아니오" 버튼 표시
vbYesNoCancel
"예", "아니오", "취소" 버튼 표시
vbOKCancel
"확인", "취소" 버튼 표시
vbRetryCancel
"다시 시도", "취소" 버튼 표시
vbAbortRetryIgnore
"중지", "다시 시도", "무시" 버튼 표시

📌 사용자 응답 확인 (vbYesNo)

Sub 예_아니오_메시지()
Dim 응답 As Integer
응답 = MsgBox("작업을 진행할까요?", vbYesNo, "확인")
If 응답 = vbYes Then
MsgBox "사용자가 '예'를 선택했습니다."
Else
MsgBox "사용자가 '아니오'를 선택했습니다."
End If
End Sub

📌 사용자가 "예"를 클릭하면 "사용자가 '예'를 선택했습니다." 출력

📌 "아니오"를 클릭하면 "사용자가 '아니오'를 선택했습니다." 출력


📌 예/아니오/취소 (vbYesNoCancel)

Sub 예_아니오_취소()
Dim 응답 As Integer
응답 = MsgBox("이 작업을 실행하시겠습니까?", vbYesNoCancel, "확인")
Select Case 응답
Case vbYes
MsgBox "작업을 실행합니다."
Case vbNo
MsgBox "작업을 취소합니다."
Case vbCancel
MsgBox "사용자가 취소를 선택했습니다."
End Select
End Sub

📌 "예" 클릭 → "작업을 실행합니다."

📌 "아니오" 클릭 → "작업을 취소합니다."

📌 "취소" 클릭 → "사용자가 취소를 선택했습니다."


6. 아이콘 추가 (vbCritical, vbInformation, vbExclamation, vbQuestion)

아이콘 옵션
설명
vbCritical
❌ 오류 아이콘
vbInformation
ℹ️ 정보 아이콘
vbExclamation
⚠️ 경고 아이콘
vbQuestion
❓ 질문 아이콘

📌 경고 메시지 (vbExclamation)

Sub 경고_메시지()
MsgBox "잘못된 입력입니다!", vbExclamation, "경고"
End Sub

📌 ⚠️ "경고" 제목과 함께 경고 아이콘이 표시됨


📌 오류 메시지 (vbCritical)

Sub 오류_메시지()
MsgBox "시스템 오류가 발생했습니다.", vbCritical, "오류"
End Sub

📌 ❌ "오류" 제목과 함께 오류 아이콘이 표시됨


📌 정보 메시지 (vbInformation)

Sub 정보_메시지()
MsgBox "작업이 완료되었습니다.", vbInformation, "완료"
End Sub

📌 ℹ️ "완료" 제목과 함께 정보 아이콘이 표시됨


📌 질문 메시지 (vbQuestion)

Sub 질문_메시지()
MsgBox "파일을 저장하시겠습니까?", vbQuestion, "질문"
End Sub

📌 ❓ "질문" 제목과 함께 질문 아이콘이 표시됨


7. 사용자 응답을 변수로 저장

Sub 응답_변수_저장()
Dim 응답 As Integer
응답 = MsgBox("이 작업을 계속하시겠습니까?", vbYesNo, "확인")
If 응답 = vbYes Then
MsgBox "작업을 계속합니다."
Else
MsgBox "작업을 중단합니다."
End If
End Sub

📌 사용자가 선택한 버튼에 따라 다른 동작 수행


8. 긴 메시지 표시 (vbNewLine, _ 사용)

Sub 긴_메시지()
MsgBox "이 프로그램은 엑셀 VBA를 활용하여 " & vbNewLine & _
"자동화 작업을 수행하는 기능을 제공합니다." & vbNewLine & _
"사용자의 편의를 위해 다양한 기능이 포함되어 있습니다.", _
vbInformation, "프로그램 소개"
End Sub

📌 줄바꿈(vbNewLine)을 활용하여 긴 메시지를 보기 좋게 표시


9. 메시지 박스 타이머 (Application.OnTime)

Sub 타이머_메시지()
Application.OnTime Now + TimeValue("00:00:05"), "자동_닫기"
End Sub
Sub 자동_닫기()
MsgBox "5초 후 자동으로 닫힙니다.", vbInformation, "자동 닫기"
End Sub

📌 5초 후 자동으로 메시지 창이 표시됨


📝 정리

기능
VBA 코드
기본 메시지 출력
MsgBox "메시지"
제목 추가
MsgBox "메시지", vbOKOnly, "제목"
줄바꿈 추가
"첫 번째 줄" & vbNewLine & "두 번째 줄"
예/아니오 버튼
MsgBox "질문?", vbYesNo
예/아니오/취소 버튼
MsgBox "질문?", vbYesNoCancel
경고 아이콘 추가
MsgBox "경고!", vbExclamation
오류 아이콘 추가
MsgBox "오류!", vbCritical
정보 아이콘 추가
MsgBox "완료!", vbInformation
질문 아이콘 추가
MsgBox "질문?", vbQuestion
사용자 응답 변수 저장
Dim 응답 As Integer : 응답 = MsgBox(...)

🔥 VBA의 MsgBox를 활용하면 사용자와 상호작용할 수 있습니다! 🚀