2012-01-17 3 views
1

Access 2003 및 VBA에서 일을하고 있습니다. 많은 반복 작업을 수행하며 때로는 무언가 일어났습니다. 사용자를 중지하고 알리고 싶지만 MsgBox가 아니라 텍스트 필드에 알려야합니다.Access 2003에서 바쁜 대기 방지

그래서 메시지를 출력하고 전역 "보류"부울을 검사하는 루프를 사용합니다. DoEvents를 사용하여 Windows는 KeyDown을 확인하고, KeyDown이 있으면 Hold가 False로 설정되고 반복이 계속됩니다.

그러나 "바쁜 대기"의 예가 아니기 때문에 더 나은 방법이있을 것으로 생각됩니다. 부울 체크 만하는 것은 아니지만 내 컴퓨터가 사운드를 만들기에 충분할 정도로 바쁘고 전체적인 인상은 강력하지 않습니다.

그냥 잠깐 (아무 것도하지 않고) 키 다운 인터럽트를 계속할 수있는 방법이 있습니까?

+0

그럴 수도 있지만 메시지 상자가 손상 될 수 있으므로 메시지 상자가 나타나기를 원하지 않습니다. 예를 들어 10 회 또는 15 회와 같이 C ("반복 반복"용)를 누르기를 원한다면 상상해보십시오. 더 좋은 방법이있을 것이라고 확신합니다. –

+0

@EmanuelBerg 당신의 솔루션은 좋은 것처럼 보입니다. 불변하게 기계를 바쁘게 만드는 상수 부울 검사의 의미를 이해합니다. 불행히도 이는 아마도 키 다운 이벤트를 끊임없이 기다리고 확인하는 최선의 방법 일 것입니다. –

+0

일부 정보를 표시하는 경우 사용자에게 '키 다운 인터럽트'를 기다리고 싶다면 Enter 키를 눌러 MsgBox를 닫을 수없는 이유는 무엇입니까? – mischab1

답변

1

msgbox를 사용할 필요없이 텍스트 상자와 해당 코드가 포함 된 양식을 정의 할 수 있습니다. 이 양식을 acDialog 매개 변수로 열면 msgbox와 동일한 코드가 중지됩니다.

+0

MsgBox를 사용하고 있지 않습니다. 그게 문제 야. 만약 내가 그렇다면, 암시 적으로 중단 될 것인가? 당신 솔루션은 내 자신의 MsgBox를 만드는 것처럼 들립니다. MsgBox를 원한다면 왜 MsgBox를 사용하지 않았을까요? (아니면 내가 잘못 해석 한 것입니까?) 텍스트 필드에 로그 출력을 덤프하는 것이 매우 행복합니다. 때로는 실행을 중단하고 입력을 기다리고 싶을 때가 있습니다. 글로벌 변수와 "busy wait"루프가이를 달성하지만, 내가 말했듯이 나는 그 솔루션에 만족하지 않는다. –

관련 문제