2010-03-19 3 views
1

그래서 몇 가지 바보 같은 질문 :MS 액세스 2003 - 메시지 박스 : 나는 자동으로 코드를 통해 "확인"대답 할 수있는 방법

좀 사건이 포함 된 경우 :

MsgBox " ", vbOkOnly, "This little message box" 

수 나는 다음 몇 가지 더 많은 코드가 돌아 서서 'ok'버튼을 클릭하십시오. 기본적으로 메시지 boox가 자동으로 팝업되고 자동으로 사라집니다. 당신이 알고 싶어하기 때문에

나는 그 바보를 알고, 당신은 내가 당신이 할 수 있는지 알고 싶어) 잘 다음 메시지 상자 .....

을 원하지 않는 이유, 그리고이 될 것입니다 무슨 명령

b) 메시지 상자가 나타날 때 표시되는 기본 모양 (모양 개체)이 있습니다. 그러나 메시지 상자가 없어도 버튼을 클릭하기를 기다리는 동안 코드가 일시적으로 중단되는 일이 없으므로 표시되는 예쁜 이미지 객체가 양식에 적용됩니다.

그래서 메시지 상자가 필요 없으며 개체를 보여주는 임시 중단이 필요합니다.

감사합니다.

답변

5

MsgBox은 모달입니다. 이 두 물리 요법 관련 설정

  • ApplicationModal

SystemModal이있는 MSGBOX 현재 응용 프로그램에서 팝업되는 경우 메시지 상자의 버튼을 클릭 할 때까지 그래서, 어떤 코드가 실행되지 않습니다.

이 문제를 해결할 수있는 방법은 양식을 사용하여 메시지 상자를 디자인하는 것입니다. 이것을 팝업하고 계속 켜 놓으면 원하는 버튼을 "클릭"할 수 있습니다. 당신이 지연을 원하는 경우에

, 당신은 MSGBOX을 기각해야

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 

Private Sub ApiSleep(SleepMilliseconds as Long) 
    Sleep SleepMilliseconds 
End Sub 
-1
Sendkeys "~",false 

잠을 윈 API를 사용할 수 있습니다 난 당신이 찾고있는 생각

을 (포커스가있을 가정) 이벤트를 페인트하거나, 폼을 새로 고칠 필요가 있습니다.

편집 : 아, 젠장, 모달 코드가 일시 중지되었으므로 ... 오! 제안대로, 직접 작성하거나, 다른 스레드에서이를 수행하기 위해 무언가를 던져 야합니다. MS Access에서 다중 스레딩을 수행하는 방법을 모릅니다!

두 번째 편집 : 일시 중지하려면 Application.Echo False을 보았으며 페인트 레이아웃을 다시 시작하려면 Application.Echo True을 보셨습니까?

+3

Sendkeys는 피해야하며 Vista에서는 작동하지 않습니다. – Fionnuala

+0

+1 감사합니다. Sendkeys가 Vista에서 작동하지 않는다고 들었습니다. Access에서 무엇인가를 개발 한 지 오래되었습니다. – Doogie

+1

코드가 일시 중지되고 MsgBox가 닫힐 때까지 SendKeys 문으로 이동하지 않으므로 MsgBox 문 다음에 작동하지 않습니다. –

1

나는이 얼마 전에 질문을 받았다 알고 있지만 내가 사용하는 솔루션이 있습니다 :

이 어떻게 작동
CreateObject("WScript.Shell").PopUp "Save Successful!", 1, "Save" 

메시지 상자가 그냥 보통 하나의 표시입니다 것 그러나 그것은 자신의 시스템 타이머를 가지고있는 아무 것도하지 않고도 메시지 상자를 자동으로 닫을 수 있음을 의미합니다.

숫자 1은 자동으로 닫기 전에 표시 할 시간 (초)을 나타냅니다.

저장 절차에 "저장"을했지만 실제로 "확인"을 클릭 할 필요가 없다는 유용한 알림으로이 값을 사용합니다.

어쨌든 그건 내 두 페니 가치가 있습니다. 희망이 다른 사람도 도움이되기를 바랍니다!

관련 문제