화면에 메시지를 표시하려면 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 이 리턴됩니다.
 

+ Recent posts