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

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

조회 수 5636 추천 수 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
번호 제목 글쓴이 날짜 조회 수sort
공지 기타 엑셀 VBA 간단한 팁 모아놓기.. +_+ [레벨:30]아별 2007-01-24 34067
65 기타 [펌] 한글을 자음 모음으로 나누기 + 합치기(초성,중성,종성) [레벨:30]아별 2022-03-22 2598
64 엑셀.. 잡다구리.. 폼에서 홈페이지 링크 등.. [레벨:30]a☆ 2004-10-25 3385
63 기타 [펌] 추가 기능 개발시 리본메뉴에 넣을 MSO Image 쉽게 확인하기 imagefile [레벨:30]아별 2015-01-09 3542
62 엑셀에서 에러 처리 [1] [레벨:30]a☆ 2004-10-23 3727
61 엑셀 기본작업 매크로.. 선택/입력/복사 등 [레벨:30]a☆ 2004-10-25 3856
60 엑셀에서 매크로 실행 동안 화면이 업데이트 되지 않게 하기.. [레벨:30]a☆ 2004-10-26 3917
59 [엑셀VBA 기본 규칙] 순환문.. [레벨:30]a☆ 2005-08-04 4190
58 기타 [VBA] 컴퓨터 이름 알아내기 등 PC 환경 변수 읽오이기.. Environ [레벨:30]아별 2015-04-08 4539
57 [엑셀VBA] 변수의 전달 [레벨:30]a☆ 2005-05-13 4583
56 엑셀의 내용을 복사해서 메모장을 띄우고 붙여넣기 [레벨:30]a☆ 2005-07-21 4787
55 하이퍼링크 일괄 제거하기 [레벨:30]a☆ 2005-07-21 4997
54 엑셀 실행시 자동으로 실행 // 종료시 자동으로 실행 [레벨:30]아별 2004-10-25 5070
53 [펌] 엑셀로 최대 공약수 구하기 [2] [레벨:30]아별 2008-12-18 5301
52 셀의 상대 위치 이동< offset(행,열) >과 절대 위치 이동.. [레벨:30]a☆ 2004-10-20 5427
51 메모 입력할때 사용자 이름 제거하고 입력하기.. [레벨:30]a☆ 2006-01-19 5431
50 엑셀 도구모음에 콤보박스로 매크로 실행하기.. +_+ [레벨:30]a☆ 2005-11-03 5466
49 바로 옆셀의 메모값 가져 오기 [1] [레벨:30]아별 2008-10-20 5516
» 스스로 사라지는 메시지 박스 file [1] [레벨:30]아별 2009-05-07 5636
47 기타 VBA로 인디언식 이름 만들어주는 사용자 정의 함수 만들기.. imagefile [1] [레벨:30]아별 2012-01-11 5737
46 마우스 좌표를 반환 받기 file [레벨:30]아별 2009-05-07 5857