화면에 메시지를 표시하려면 MsgBox 함수를 사용합니다.
예를 들어 다음 코드는 화면에 "LOTIONY" 라는 문자열을 표시합니다.
Sub Sample () MsgBox "LOTIONY" End Sub
화면에는 [OK] 버튼이 있는 메시지 상자가 표시됩니다.
이 메시지 상자는 사용자가 OK 버튼을 누를 때 까지 계속해서 모달창으로 표시가 되지요.
지정된 시간이 지나면 자동으로 닫히는 메시지 상자를 만들수는 없을까 해서 찾아보았습니다.
우선 MsgBox가 가지고 있는 기본 인자값들만으로는 구현이 불가능했습니다.
그리고 그것을 대체할만한 함수나 기능이 VB/VBA 에는 별도로 마련되어 있지 않습니다.
이 기능을 구현하려면 Windows Scripting Host (WSH) 를 사용합니다.
지정된 시간이 지나면 자동으로 닫히는 메시지박스(MsgBox) 만들기
Sub test() Dim WSH As Object Set WSH = CreateObject("WScript.Shell") WSH.Popup "5 초 후 자동으로 닫습니다", 5, "Title", vbInformation Set WSH = Nothing End Sub
WSH.Popup (strText, [nSecondsToWait], [strTitle], [nType])
매개변수 |
의미 |
strText |
메시지 상자에 표시 할 문자열. 필수 요소 |
nSecondsToWait |
메시지 상자를 닫을 때까지의 시간. 선택적 |
strTitle |
메시지 상자의 제목. 선택적 |
nType |
아이콘이나 버튼의 종류. 선택적 |
매개변수 nSecondsToWait에서 지정한 시간이 되기 전에 사용자가 버튼을 조작하면 언제든지 메시지박스를 닫을 수 있습니다.
매개변수 nType은 다음 값을 지정할 수 있고 MsgBox 에서 사용되는 상수와 다르지 않습니다.
값 |
VBA 상수 |
의미 |
0 |
vbOKOnly | [OK] 버튼을 표시합니다 |
1 |
vbOKCancel | [OK] 버튼과 취소 버튼을 표시합니다 |
2 |
vbAbortRetryIgnore | 중지 버튼, 다시 시도 버튼 및 무시 단추를 표시합니다 |
3 |
vbYesNoCancel | [예] 버튼 아니요 단추 및 취소 단추를 표시합니다 |
4 |
vbYesNo | [예] 버튼과 [아니오] 버튼을 표시합니다 |
5 |
vbRetryCancel | 다시 시도 버튼과 취소 버튼을 표시합니다 |
16 |
vbCritical | 아이콘을 표시합니다 |
32 |
vbQuestion | 아이콘을 표시합니다 |
48 |
vbExclamation | 아이콘을 표시합니다 |
64 |
vbInformation | 아이콘을 표시합니다 |
Popup메서드로 띄운 메시지 상자에서 버튼을 클릭했을 때 반횐되는 값도 MsgBox와 동일합니다.
값 |
VBA 상수 |
클릭된 버튼 |
1 |
vbOK | [OK] 버튼 |
2 |
vbCancel | 취소 버튼 |
3 |
vbAbort | 중지 버튼 |
4 |
vbRetry | 다시 시도 버튼 |
5 |
vbIgnore | 무시 버튼 |
6 |
vbYes | [예] 버튼 |
7 |
vbNo | 아니오 버튼 |
시간이 경과해서 자동으로 메시지상자가 닫힌 경우에는 -1 이 리턴됩니다.
'Excel Develop > VBA' 카테고리의 다른 글
[ACCESS] 엑세스의 일련번호(Autonumber Counter) 를 초기화하는 쿼리 (0) | 2013.07.04 |
---|---|
[VBA] API로 유저폼(Userform) 주무르기 - 타이틀바(캡션) 없애기, 모서리 둥글게 만들기, 투명한 유저폼 만들기 (3) | 2012.11.24 |
[VBA] 크기조절이 가능한 유저폼 생성하기. (Resizable Userform) (3) | 2012.11.24 |
[vba] Twain드라이버와 Lead Tools를 이용해 스캐너 직접 제어 (5) | 2012.01.20 |