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

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

조회 수 4904 추천 수 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 31086
44 기타 엑셀 기본 제공 대화 상자 인수 목록 file [레벨:30]아별 2009-11-04 6959
43 엑셀2007에서 셀의 색상을 RGB로 뽑아내기 file [레벨:30]아별 2009-10-06 9534
42 [VBA팁] 화일이 존재하는지 확인하기 [레벨:30]아별 2009-07-31 7457
41 엑셀에서 사용하는 언어 확인하기. file [1] [레벨:30]아별 2009-06-03 12952
40 메시지 박스 대용으로 Shape 사용하기 file [레벨:30]아별 2009-05-07 15522
39 유저폼 크기 조절 가능하게 만들기 file [레벨:30]아별 2009-05-07 5058
» 스스로 사라지는 메시지 박스 file [1] [레벨:30]아별 2009-05-07 4904
37 마우스 좌표를 반환 받기 file [레벨:30]아별 2009-05-07 5188
36 [펌] Excel Macro(VBA) 입문자를 위한 소개자료 image [레벨:30]아별 2008-12-19 6182
35 기타 [Excel VBA] 피벗테이블(PivotTable)을 VBA로 컨트롤해보자.. [레벨:30]아별 2008-12-19 9773
34 [펌] 엑셀로 최대 공약수 구하기 [2] [레벨:30]아별 2008-12-18 4844
33 바로 옆셀의 메모값 가져 오기 [1] [레벨:30]아별 2008-10-20 4785
32 [엑셀VBA] ERROR CODE file [레벨:30]아별 2008-08-28 6806
31 [엑셀VBA] 자동필터를 매크로로 구현하기 [레벨:30]아별 2008-08-28 10626
30 [VBA] 전역변수 설정하기. Public 문, Private 문 imagefile [레벨:30]아별 2008-07-01 13265
29 [엑셀VBA] 네이버 지식인 답변 _ 엑셀 쿼리를 이용해서 펀드 기준가 데이터를 읽어오기. file [레벨:30]아별 2008-04-30 8120
28 엑셀 추가 기능 만들기 [레벨:30]a☆ 2006-01-19 6757
27 메모 입력할때 사용자 이름 제거하고 입력하기.. [레벨:30]a☆ 2006-01-19 4793
26 시트에서 콤보박스 활용하기 file [레벨:30]a☆ 2005-11-12 16102