Excel VBA의 대화 상자(Dialog Boxes)는 사용자에게 정보를 표시하는 데 사용됩니다.
MsgBox 함수는 대화 상자에 메시지를 표시하고 사용자가 버튼을 클릭할 때까지 기다린 다음 사용자가 클릭한 버튼을 나타내는 정수를 반환합니다.
가장 일반적인 대화 상자는 메시지 상자이지만 입력 상자를 사용할 수도 있습니다.
지금까지 우리는 MsgBox 대화 상자를 사용하여 화면에 정보를 표시했습니다.
Sub delete_B2() Range("B2").ClearContents MsgBox "The contents of B2 have been deleted !" '"B2 셀의 내용이 삭제되었습니다!" End Sub
이 경우 MsgBox은 하나의 인수로만 호출됩니다. 보다 아래 코드:
이제 두 명령이 실행되기 전에 삭제 확인을 요청하는 대화 상자를 만듭니다. 그런 다음 우리가 사용할 세 가지 인수가 있습니다.
MsgBox([TEXT], [BUTTONS], [TITLE])
Sub delete_B2() If MsgBox("Are you sure that you wish to delete the contents of B2 ?", vbYesNo, "Confirm") = vbYes Then Range("B2").ClearContents MsgBox "The contents of B2 have been deleted !" End If End Sub
결과:
Private Sub warning(var_text As String) MsgBox "Caution : " & var_text & " !" End Sub Sub macro_test() If Range("A1") = "" Then warning "empty cell" '"빈 셀" ElseIf Not IsNumeric(Range("A1")) Then warning "non-numerical value" '"숫자가 아닌 값" End If End Sub
vbYesNo는 대화 상자 버튼이 "Yes" 및 "No"임을 지정하고 vbYes는 "Yes" 버튼을 나타냅니다.
If MsgBox("Text", vbYesNo, "Title") = vbYes Then 'Yes 버튼을 누르면...
끊임없는 | 수치 | 설명 |
---|---|---|
vbOKOnly | 0 | |
vbOKCancel | 1 | |
vbAbortRetryIgnore | 2 | |
vbYesNoCancel | 3 | |
vbYesNo | 4 | |
vbRetryCancel | 5 |
vbCritical | 16 | |
vbQuestion | 32 | |
vbExclamation | 48 | |
vbInformation | 64 |
다음은 사용자가 Yes을 누를 때까지 루프에서 매번 계속 표시되는 MsgBox의 예입니다.
Sub humor() Do If MsgBox("Do you like the Moonexcel site ?", vbYesNo, "Survey") = vbYes Then Exit Do '=> 응답 Yes = 예, 루프를 종료합니다. End If Loop While 1 = 1 '=> 무한 루프 MsgBox ";-)" End Sub
새 리본을 표시하려면 리본 이동을 담당하는 인수 10과 함께 Chr 함수를 사용할 수 있습니다. 예를 들면 다음과 같습니다.
MsgBox "Example 1" & Chr(10) & "Example 2" & Chr(10) & Chr(10) & "Example 3"
우리는 다음과 같은 결과를 얻습니다.
InputBox는 사용자에게 대화 상자에 값을 입력하라는 메시지를 표시합니다. 예:
Sub example() Dim result As String result = InputBox("Text ?", "Title") '변수에는 InputBox에 입력된 값이 할당됩니다. If result <> "" Then '값이 ""가 아닌 경우 결과가 표시됩니다. MsgBox result End If End Sub
우리는 다음과 같은 결과를 얻습니다.
세 번째 인수는 기본값을 설정하는 데 사용할 수 있습니다.
InputBox("Text ?", "Title", "Default value")
결과는 다음과 같습니다.