1. 아별툴
  2. 아별툴 패밀리
  3. 엑셀 질문하기
  4. 엑셀 강좌
  5. 엑셀 팁
  6. 엑셀 자료실
  7. 엑셀 연구과제
  8. 엑셀 북마크
  9. 관련 프로그램 소개

스스로 사라지는 메시지 박스

조회 수 5638 추천 수 0 2009.05.07 13:37:09
출처 : 엑사모_팁

관련파일 : VBA_927_SelfCloseMsgBox.zip



 Option Explicit

' 윈도우를 찾아 핸들값을 반환
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
        (ByVal lpClassName As String, _
        ByVal lpWindowName As String) As Long
' 타이머를 설정
Private Declare Function SetTimer Lib "user32" _
        (ByVal hwnd As Long, _
        ByVal nIDEvent As Long, _
        ByVal uElapse As Long, _
        ByVal lpTimerFunc As Long) As Long
' 타이머를 종료
Private Declare Function KillTimer Lib "user32" _
        (ByVal hwnd As Long, _
        ByVal nIDEvent As Long) As Long
' 메시지를 윈도우에 전송
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
        (ByVal hwnd As Long, _
        ByVal wMsg As Long, _
        ByVal wParam As Integer, _
        ByVal lParam As Any) As Long

Private strTitle As String
Private lngTimerID As Long
Sub dhMain()
Dim iResult As Integer ' VbMsgBoxResult
Dim strPrompt As String
Dim sTitle As String
Dim lngInterval As Long
        strPrompt = "버튼을 누르거나" & vbCr & _
                  "누르지 않더라도 2초 뒤에 이 메시지 상자는 닫힙니다."
        sTitle = "MagicSheet & 엑사모"
       
        '실행할 시간
        lngInterval = 2000
        StartTimer lngInterval
            strTitle = sTitle
            iResult = MsgBox(strPrompt, vbOKCancel + vbInformation, sTitle)
        EndTimer

End Sub

'아래의 코드는 VBA 877 타이머를 만들려면이란 예제를 참고하라
Function EndTimer() As Boolean
    If lngTimerID Then
        lngTimerID = KillTimer(0&, lngTimerID)
        lngTimerID = 0
        EndTimer = True
    End If
End Function

Sub StartTimer(llngInterval As Long)
    If lngTimerID Then
        EndTimer
    End If
    lngTimerID = SetTimer(0, 0, ByVal llngInterval, AddressOf TimerProc)
End Sub

Private Sub TimerProc(ByVal lhwnd As Long, _
                        ByVal lMsg As Long, _
                        ByVal lIDEvent As Long, _
                        ByVal lTime As Long)
    Const WM_CLOSE = &H10
    Dim lHwndMsgbox As Long
   
    lHwndMsgbox = FindWindow(vbNullString, strTitle)
    SendMessage lHwndMsgbox, WM_CLOSE, 0, ByVal 0&
End Sub





댓글 '1'

구름바다

2015.09.12 15:18:59
*.1.132.10

안녕 하세요.

개발에 많은 도움을 받고 있습니다. 감사 합니다

올려주신 윈도우 timer를 사용하려 하는데 첨부파일을 똑같이 올리고 돌리는데

SetTimer에서 "컴파일 오류=> 형식이 일치하지 않습니다" AddressOf TimerProc

이부분에서 오류가 납니다.

혹시 도구 => 참조에서 뭘 더 추가해야 하나요?

아니면 제가 뭘 빼먹고 돌리는지 궁금 합니다.

답변 부탁 드립니다.

감사 합니다.

문서 첨부 제한 : 0Byte/ 2.00MB
파일 제한 크기 : 2.00MB (허용 확장자 : *.*)
List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 기타 엑셀 VBA 간단한 팁 모아놓기.. +_+ [레벨:30]아별 2007-01-24 34087