프로그램을 사용하다 보면 많은 대화 상자들을 만납니다. 단순히 결과를 알려주거나 정보를 제공해 주는 대화 상자도 있지만, 데이터를 입력받는 대화 상자도 있습니다. 이번에는 대화 상자를 사용하여 데이터를 입력받고 그 결과를 출력하는 방법에 대해 알아보겠습니다.
대화 상자를 사용하기 위해서는 함수를 사용합니다.
먼저 이들 함수에 대해 알아보겠습니다.
1. MsgBox 함수
MsgBox 함수는 사용자에게 정보나 결괏값을 알려주어 이의 확인이 필요할 때 주로 사용합니다.
MsgBox 함수 사용은 다음과 같습니다.
MsgBox 메시지, 버튼 / 메시지 아이콘, 창 제목
[버튼]
값 | 코드 | 설명 |
0 | vbOkOnly | 확인 버튼 생성 |
1 | vbOkCancel | 확인, 취소 버튼 생성 |
2 | vbAbortRetryIgnore | 중단, 다시 시도, 무시 버튼 생성 |
3 | vbYesNoCancel | 예, 아니오, 취소 버튼 생성 |
4 | vbYesNo | 예, 아니오 버튼 생성 |
5 | vbRetryCancel | 다시 시도, 취소 버튼 생성 |
[메시지 아이콘]
값 | 코드 | 설명 |
16 | vbCritical | 중지 메시지 아이콘 생성 |
32 | vbQuestion | 문의 메시지 아이콘 생성 |
48 | vbExclamation | 경고 메시지 아이콘 생성 |
64 | vbInformation | 정보 메세지 아이콘 생성 |
[포커스 설정]
값 | 코드 | 설명 |
0 | vbDefaultButton1 | 첫 번째 버튼에 포커스 설정 |
256 | vbDefaultButton2 | 두 번째 버튼에 포커스 설정 |
512 | vbDefaultButton3 | 세 번째 버튼에 포커스 설정 |
768 | vbDefaultButton4 | 네 번째 버튼에 포커스 설정 |
버튼은 대화 상자에 생성할 버튼의 종류를 선택하는 것이고 메시지 아이콘은 작성한 메시지와 함께 출력될 아이콘의 종류를 선택하는 것입니다. 또한, 포커스 설정은 대화 상자가 출력되었을 때 선택되어 있을 버튼을 결정하는 것으로 바로 엔터키를 쳤을 때 실행되는 버튼을 정하는 것입니다.
예제로 MsgBox를 출력해 보겠습니다. 아래와 같이 코딩을 합니다.
Sub MsgBox1()
MsgBox "계속하시겠습니까?", 3+48+0, "진행사항"
End Sub
코드를 입력하고 실행을 하면 다음과 같은 결과를 얻습니다.
[그림 1]에서 보시듯이 '계속하시겠습니까?'라는 메시지와 함께 경고 메시지 아이콘이 함께 출력된 모습을 보실 수 있습니다. 이는 '3+48+0'에서 두 번째 숫자 48이 메시지 아이콘 선택 값으로 vbExclamation에 해당하기 때문입니다. 또한 버튼 선택 번호 '3'은 vbYesNoCancel이므로 예, 아니오, 취소 버튼이 출력되었습니다.
'0'은 vbDefaultButton1으로 첫 번째 버튼에 포커스를 맞추라는 의미입니다. 그래서 [그림 1]에서 '예' 버튼에 포커스가 있는 것을 알 수 있습니다. 이 상태에서 엔터키를 클릭하면 '예' 버튼이 실행됩니다. 입력 시에 숫자 대신 표의 코드값을 입력하여도 됩니다. 그리고 창 맨 위 좌측에 '진행사항'이라는 제목이 표시되었습니다.
그럼, 대화상자의 버튼을 클릭하면 어떻게 될까요?
버튼을 클릭하게 되면 반환 값이 발생하게 됩니다. 아래 표는 각 버튼이 클릭되었을 때 반환 값입니다.
값 | 코드 | 설명 |
1 | vbOk | 확인 버튼을 클릭했을 때 반환값 |
2 | vbCancel | 취소 버튼을 클릭했을 때 반환값 |
3 | vbAbort | 중단 버튼을 클릭했을 때 반환값 |
4 | vbRetry | 다시 시도 버튼을 클릭했을 때 반환값 |
5 | vbIgnore | 무시 버튼을 클릭했을 때 반환값 |
6 | vbYes | 예 버튼을 클릭했을 때 반환값 |
7 | vbNo | 아니오 버튼을 클릭했을 때 반환값 |
반환 값의 값이나 코드를 이용하여 버튼이 클릭됐을 때 실행문을 작성하게 됩니다.
2. InputBox 함수
InputBox 함수는 사용자로부터 데이터를 입력받을 수 있는 대화 상자를 출력합니다.
InputBox 함수 사용방법은 다음과 같습니다.
InputBox 메시지, 창 제목, 메시지 입력란에 표시할 메시지
메시지는 대화 상자에 출력될 메시지를 말하며 창 제목은 대화 상자 좌측 맨 위에 표시되는 제목입니다.
메시지 입력창에 표시할 메시지는 사용자가 입력하는 사각 박스에 어떤 내용이나 형식으로 입력하라는 안내 메시지를 입력할 때 사용합니다. 생략하면 빈 사각 박스만 표시됩니다.
예제로 Inputbox( ) 함수를 이용하여 입력받은 데이터가 숫자인지 문자인지를 알려주는 VBA 프로그램을 작성해 보겠습니다.
Public Sub 입력()
Dim i As Variant
i = InputBox("값을 입력해주세요.", "데이터 입력")
If i = "" Then
MsgBox "값을 입력하지 않으셨습니다."
ElseIf IsNumeric(i) Then
MsgBox "입력하신 값은 숫자입니다."
Else
MsgBox "입력하신 값은 문자입니다."
End If
End Sub
프로그램을 실행하면 출력되는 창에서 문자 또는 숫자를 입력하면 그 결괏값을 알려줍니다.
프로그램 내용 중에서 IsNumeric( ) 함수는 인수가 숫자인지를 확인하여 숫자이면 참을 숫자가 아니면 거짓을 반환하는 함수입니다.
또한 If ... Then ... Else 문을 사용하였는데 제어문에 대한 내용은 이전 글에서 설명하였습니다.
[그림 2]는 위의 예제 실행 결과 출력된 대화 상자 모습입니다.
'엑셀 > VBA' 카테고리의 다른 글
VBA 이벤트와 이벤트 프로시저 삽입하고 실행해보기 II (0) | 2021.07.09 |
---|---|
VBA 이벤트와 이벤트 프로시저 삽입하고 실행해보기 I (0) | 2021.07.09 |
VBA를 작성하여 엑셀 개체 다루기 (0) | 2021.07.05 |
VBA 연산자와 제어문에 대해 알아보기 II (0) | 2021.07.05 |
VBA 연산자와 제어문에 대해 알아보기 I (0) | 2021.07.02 |