TOP

VBA-10과. 대화 상자(Dialog box)

YouLibreCalc for Excel logo

Excel VBA의 대화 상자(Dialog Boxes)는 사용자에게 정보를 표시하는 데 사용됩니다.

MsgBox 함수는 대화 상자에 메시지를 표시하고 사용자가 버튼을 클릭할 때까지 기다린 다음 사용자가 클릭한 버튼을 나타내는 정수를 반환합니다.

가장 일반적인 대화 상자는 메시지 상자이지만 입력 상자를 사용할 수도 있습니다.


MsgBox

지금까지 우리는 MsgBox 대화 상자를 사용하여 화면에 정보를 표시했습니다.

Sub delete_B2()
    Range("B2").ClearContents
    MsgBox "The contents of B2 have been deleted !"  '"B2 셀의 내용이 삭제되었습니다!"
End Sub

이 경우 MsgBox은 하나의 인수로만 호출됩니다. 보다 아래 코드:

이제 두 명령이 실행되기 전에 삭제 확인을 요청하는 대화 상자를 만듭니다. 그런 다음 우리가 사용할 세 가지 인수가 있습니다.

MsgBox([TEXT], [BUTTONS], [TITLE])
  • 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 버튼을 누르면...
    

    MsgBox에서 두 번째 인수를 사용하기 위한 옵션

    끊임없는 수치 설명
    vbOKOnly0ok - dialog boxes
    vbOKCancel1ok - dialog boxescancel - dialog boxes
    vbAbortRetryIgnore2abort - dialog boxesretry - dialog boxesignore - dialog boxes
    vbYesNoCancel3yes - dialog boxesno - dialog boxescancel - dialog boxes
    vbYesNo4yes - dialog boxesno - dialog boxes
    vbRetryCancel5retry - dialog boxescancel - dialog boxes
    vbCritical16critical - dialog boxes
    vbQuestion32question - dialog boxes
    vbExclamation48exclamation - dialog boxes
    vbInformation64information - dialog boxes

    MsgBox에서 두 번째 인수를 사용하는 예

    다음은 사용자가 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")
    

    결과는 다음과 같습니다.