Applies ToMicrosoft 365용 Access Access 2024 Access 2021 Access 2019 Access 2016

개체의 한 컨트롤에서 다른 컨트롤로 이동하는 등의 단일 작업으로 여러 가지 이벤트가 특정 순서로 발생될 수 있습니다. 이벤트가 발생하는 경우 및 이벤트가 발생되는 순서를 알면 매크로 또는 이벤트 프로시저가 실행되는 방법 및 시기에 영향을 줄 수 있으므로 중요합니다. 예를 들어 특정 순서로 실행되어야 하는 두 개의 이벤트 프로시저가 있는 경우 이러한 이벤트 프로시저가 연결된 이벤트도 동일한 순서도 발생되는지 확인할 수 있습니다.

이 문서의 내용

폼의 컨트롤에 대한 이벤트 순서

폼의 컨트롤에 대한 이벤트는 포커스를 컨트롤로 이동하는 경우 및 컨트롤의 데이터를 변경하고 업데이트하는 경우에 발생합니다.

참고: Microsoft Office Access는 이벤트 이름을 Visual Basic Editor에서 속성 시트 및 매크로 작성기에 표시되는 것과 약간 다르게 표시합니다. 예를 들어 폼의 속성 시트와 매크로 작성기에서 On Got Focus라는 이벤트는 Visual Basic Editor에서 GotFocus로 표시됩니다. 이 문서의 예제에서는 이벤트 이름에 VBA(Visual Basic for Applications) 형식을 사용합니다.

컨트롤로 포커스 이동

하나 이상의 활성 컨트롤이 포함된 폼을 열거나 동일한 폼에 있는 다른 컨트롤로 포커스를 이동하는 등 폼의 컨트롤로 포커스를 이동하면 EnterGotFocus 이벤트가 다음 순서로 발생합니다.

화살표 GotFocus 입력

폼을 열면 EnterGotFocus 이벤트가 다음과 같이 폼 열기와 관련된 이벤트(예: Open, ActivateCurrent) 다음에 발생합니다.

열기 (양식) 화살표활성화 (양식) 화살표현재 (양식) 화살표Enter (컨트롤) 화살표GotFocus (컨트롤)

포커스가 폼의 컨트롤에서 나가는 경우(예: 하나 이상의 활성 컨트롤이 포함된 폼을 닫는 경우 또는 동일한 폼에 있는 다른 컨트롤로 이동하는 경우) ExitLostFocus 이벤트가 다음 순서로 발생합니다.

Exit 화살표 LostFocus

폼을 닫으면 ExitLostFocus 이벤트가 다음과 같이 폼 닫기와 관련된 이벤트(예: Unload, DeactivateClose) 전에 발생합니다.

Exit (control) 화살표LostFocus (컨트롤) 화살표언로드 (양식) 화살표비활성화 (양식) 화살표닫기 (양식)

컨트롤의 데이터 변경 및 업데이트

폼의 컨트롤에서 데이터를 입력하거나 변경한 다음 포커스를 다른 컨트롤로 이동하면 BeforeUpdateAfterUpdate 이벤트가 발생합니다.

BeforeUpdate 화살표 Afte rUpdate

값이 변경되는 컨트롤에 대한 ExitLostFocus 이벤트는 BeforeUpdateAfterUpdate 이벤트 다음에 발생합니다.

BeforeUpdate 화살표 AfterUpdate 화살표 Exit 화살표 LostFocus

텍스트 상자 또는 콤보 상자의 텍스트 상자 구역에서 텍스트를 변경하면 Change 이벤트가 발생합니다. 이 이벤트는 컨트롤의 콘텐츠가 변경될 때마다 발생하지만 포커스를 다른 컨트롤이나 레코드로 이동하기 전에 발생하므로 BeforeUpdateAfterUpdate 이벤트가 발생하기 전에 발생합니다. 텍스트 상자 또는 콤보 상자의 텍스트 상자 구역에서 누르는 각 키에 대한 이벤트는 다음 순서로 발생합니다.

KeyDown 화살표 KeyPress 화살표 더티 화살표 변경 화살표 KeyUp

NotInList 이벤트는 콤보 상자 목록에 없는 콤보 상자에 값을 입력한 다음 포커스를 다른 컨트롤이나 레코드로 이동하려고 시도하면 발생합니다. NotInList 이벤트는 키보드 이벤트 및 콤보 상자에 대한 Change 이벤트 다음에 발생하지만 다른 모든 컨트롤이나 폼에 대한 이벤트 전에 발생합니다. 콤보 상자의 LimitToList 속성이 Yes로 설정된 경우 폼에 대한 Error 이벤트가 NotInList 이벤트 바로 다음에 발생합니다.

KeyDown 화살표 KeyPress 화살표 더티 화살표 변경 화살표 KeyUp 화살표 NotInList 0 오류

맨 위로 이동

폼의 레코드에 대한 이벤트 순서

폼의 레코드에 대한 이벤트는 포커스을 다른 레코드로 이동하거나, 레코드의 데이터를 업데이트하거나, 기존 레코드를 삭제하거나, 새 레코드를 만들면 발생합니다.

레코드로 포커스 이동 및 레코드의 데이터 업데이트

폼의 기존 레코드로 포커스를 이동하고 레코드에서 데이터를 입력하거나 변경한 다음 다른 레코드로 포커스를 이동하면 폼에 대한 이벤트가 다음 순서로 발생합니다.

현재 (양식) 화살표BeforeUpdate (양식) 화살표AfterUpdate (양식) 화살표Current (양식)

데이터가 변경된 레코드에서 나오지만 다음 레코드를 입력하기 전에 포커스가 있는 컨트롤에 대해 ExitLostFocus 이벤트가 발생합니다. 이러한 이벤트는 다음과 같이 폼에 대한 BeforeUpdateAfterUpdate 이벤트 다음에 발생합니다.

BeforeUpdate (양식) 화살표AfterUpdate (양식) 화살표Exit (컨트롤) 화살표LostFocus (컨트롤) 화살표현재 (양식)

폼의 컨트롤 사이에서 포커스를 이동하면 각 컨트롤에 대한 이벤트가 발생합니다. 예를 들어 다음 작업을 수행하면 이벤트가 다음 순서로 발생합니다.

  • 폼을 열고 컨트롤의 데이터 변경:

    현재 (양식) 화살표Enter (컨트롤) 화살표GotFocus (컨트롤) 화살표BeforeUpdate (컨트롤) 화살표AfterUpdate (컨트롤)

  • 다른 컨트롤로 포커스 이동:

    Exit (control1) 화살표LostFocus (control1) 화살표Enter (control2) 화살표GotFocus (control2)

  • 다른 레코드로 포커스 이동:

    BeforeUpdate (양식) 화살표AfterUpdate (양식) 화살표Exit (control2) 화살표LostFocus (control2) 화살표Current (양식)

레코드 삭제

레코드를 삭제하면 폼에 대해 다음과 같은 이벤트가 발생하며 Microsoft Office Access에는 삭제를 확인하는 대화 상자가 표시됩니다.

AfterDelConfirm 화살표 BeforeDelConfirm 화살표 삭제

Delete 이벤트를 취소하면 BeforeDelConfirmAfterDelConfirm 이벤트가 발생하지 않고 대화 상자가 표시되지 않습니다.

새 레코드 만들기

폼의 비어 있는 새 레코드로 포커스를 이동한 다음 컨트롤에 데이터를 입력하여 새 레코드를 만들면 이벤트가 다음 순서로 발생합니다.

현재 (양식) 화살표Enter (컨트롤) 화살표GotFocus (컨트롤) 화살표BeforeInsert (양식) 화살표AfterInsert (양식)

BeforeInsert(양식) 이벤트는 컨트롤에 입력을 시작하는 즉시 트리거됩니다. 레코드를 종료한 후 AfterInsert (양식) 이벤트가 트리거됩니다.

폼의 컨트롤 및 새 레코드에 대한 BeforeUpdateAfterUpdate 이벤트는 BeforeInsert 이벤트 다음 AfterInsert 이벤트 이전에 발생합니다.

맨 위로 이동

폼 및 하위 폼에 대한 이벤트 순서

폼에 대한 이벤트는 폼을 열고 닫거나, 폼 사이를 이동하거나, 폼이나 하위 폼에서 데이터로 작업할 때 발생합니다.

폼 열기 및 닫기

폼을 열면 폼에 대한 이벤트가 다음 순서로 발생합니다.

화살표 로드 화살표 크기 조정 화살표#x6 현재활성화 열기

폼에 활성 컨트롤이 없는 경우 폼에 대한 GotFocus 이벤트가 Activate 이벤트 다음 Current 이벤트 이전에 발생합니다.

폼을 닫으면 폼에 대한 이벤트가 다음 순서로 발생합니다.

언로드 화살표 비활성화 화살표 닫기

폼에 활성 컨트롤이 없는 경우 폼에 대한 LostFocus 이벤트가 Unload 이벤트 다음 Deactivate 이벤트 이전에 발생합니다.

폼 간 이동

열려 있는 두 폼 사이를 전환하면 첫 번째 폼에 대해 Deactivate 이벤트가 발생하고 두 번째 폼에 대해 Activate 이벤트가 발생합니다.

비활성화 (form1) 화살표활성화 (form2)

폼에 대한 Deactivate 이벤트는 폼에서 Access의 다른 개체 탭으로 전환하는 경우에도 발생합니다. 그러나 대화 상자, PopUp 속성이 Yes로 설정되어 있는 폼 또는 다른 프로그램의 창으로 전환하면 Deactivate 이벤트가 발생하지 않습니다.

참고:  이미 열려 있는 폼으로 포커스를 이동하는 경우 Open 이벤트가 발생하지 않으며, OpenForm 작업을 수행하여 해당 폼으로 포커스를 이동한 경우에도 발생하지 않습니다.

폼의 데이터로 작업

폼 및 컨트롤 이벤트는 폼의 레코드 사이를 이동하고 데이터를 변경할 때 발생합니다. 예를 들어 처음으로 폼을 열면 이벤트가 다음 순서로 발생합니다.

열기 (양식) 화살표로드 (양식) 화살표크기 조정 (양식) 화살표활성화 (양식) 화살표현재 (양식) 화살표Enter (제어)0 GotFocus (컨트롤)

마찬가지로 폼을 닫으면 이벤트가 다음 순서로 발생합니다.

종료 (제어) 화살표LostFocus (컨트롤) 화살표언로드 (양식) 화살표비활성화 (양식) 화살표닫기 (양식)

컨트롤의 데이터를 변경한 경우 컨트롤과 폼 둘 다에 대한 BeforeUpdateAfterUpdate 이벤트가 컨트롤에 대한 Exit 이벤트 전에 발생합니다.

하위 폼 작업

하위 폼이 포함된 폼을 열면 하위 폼과 해당 레코드가 기본 폼보다 먼저 로드됩니다. 따라서 하위 폼과 해당 컨트롤에 대한 이벤트(예: Open, Current, EnterGotFocus)가 폼에 대한 이벤트 전에 발생합니다. 그러나 Activate 이벤트는 하위 폼에 대해 발생하지 않습니다. 따라서 기본 폼을 열면 기본 폼에 대해서만 Activate 이벤트가 트리거됩니다.

마찬가지로 하위 폼이 포함된 폼을 닫으면 하위 폼과 해당 레코드가 폼보다 나중에 언로드됩니다. Deactivate 이벤트는 하위 폼에 대해 발생하지 않습니다. 따라서 기본 폼을 닫으면 기본 폼에 대해서만 Deactivate 이벤트가 트리거됩니다. 컨트롤, 폼 및 하위 폼에 대한 이벤트가 다음 순서로 발생합니다.

  1. 하위 폼의 컨트롤에 대한 이벤트(예: ExitLostFocus)

  2. 폼의 컨트롤(하위 폼 컨트롤 포함)에 대한 이벤트

  3. 폼에 대한 이벤트(예: DeactivateClose)

  4. 하위 폼에 대한 이벤트

참고: 하위 폼에 대한 이벤트는 기본 폼을 닫은 후에 발생하므로 하위 폼의 이벤트에서 기본 폼 닫기 취소와 같은 특정 이벤트가 발생하지 않습니다. 이러한 유형의 유효성 검사 테스트를 기본 폼의 이벤트로 이동해야 할 수 있습니다.

맨 위로 이동

키 입력 및 마우스 클릭에 대한 이벤트 순서

키보드 이벤트는 폼이나 컨트롤에 포커스가 있는 동안 키를 누르거나 키 입력을 전송하면 폼 및 컨트롤에 대해 발생합니다. 마우스 이벤트는 마우스 포인터가 폼, 구역 또는 컨트롤에 있는 동안 마우스 단추를 클릭하면 폼, 폼 구역 및 폼의 컨트롤에 대해 발생합니다. 마우스 이벤트는 마우스 포인터를 폼, 구역 또는 컨트롤로 이동하는 경우에도 발생합니다.

키보드 이벤트

폼의 컨트롤에 포커스가 있는 동안 키를 눌렀다가 놓거나 SendKeys 동작이나 문을 사용하여 키 입력을 전송하면 이벤트가 다음 순서로 발생합니다.

KeyDown 화살표 KeyPress 화살표 KeyUp

키를 눌렀다가 놓거나 ANSI 문자 집합에서 키 입력을 전송하면 KeyDown, KeyPressKeyUp 이벤트가 모두 발생합니다. ANSI 키를 누르고 있으면 KeyDownKeyPress 이벤트가 키를 놓을 때까지 반복해서 번갈아 발생(KeyDown, KeyPress, KeyDown, KeyPress 등)한 다음 KeyUp 이벤트가 발생합니다.

ANSI가 아닌 키를 눌렀다가 놓으면 KeyDownKeyUp 이벤트가 발생합니다. ANSI가 아닌 키를 누르고 있으면 키를 놓을 때까지 KeyDown 이벤트가 반복해서 발생한 다음 KeyUp 이벤트가 발생합니다.

키를 눌러 컨트롤에 대해 다른 이벤트를 트리거하면 해당 이벤트가 KeyPress 이벤트 다음 KeyUp 이벤트 이전에 발생합니다. 예를 들어 키 입력으로 텍스트 상자의 텍스트를 변경하여 Change 이벤트를 트리거하면 이벤트가 다음 순서로 발생합니다.

KeyDown 화살표 KeyPress 화살표 변경 화살표 KeyUp

키 입력으로 포커스가 한 컨트롤에서 다른 컨트롤로 이동하면 첫 번째 컨트롤에 대해서는 KeyDown 이벤트가 발생하는 반면 두 번째 컨트롤에 대해서는 KeyPressKeyUp 이벤트가 발생합니다. 예를 들어 컨트롤의 데이터를 변경한 다음 Tab 키를 눌러 다음 컨트롤로 이동하면 이벤트가 다음 순서로 발생합니다.

  • 첫 번째 컨트롤:

    KeyDown 화살표 BeforeUpdate 화살표 AfterUpdate 화살표 Exit 화살표 LostFocus

  • 두 번째 컨트롤:

    화살표GotFocus 화살표 KeyPress 화살표 KeyUp 을 입력합니다.

마우스 이벤트

마우스 포인터가 폼의 컨트롤에 있는 동안 마우스 단추를 클릭했다가 놓으면 컨트롤에 대한 이벤트가 다음 순서로 발생합니다.

MouseDown 화살표 MouseUp 화살표 클릭

컨트롤에 포커스가 있는 경우 다른 컨트롤을 클릭하여 이 두 번째 컨트롤로 포커스를 이동하면 이벤트가 다음 순서로 발생합니다.

  • 첫 번째 컨트롤:

    Exit 화살표 LostFocus

  • 두 번째 컨트롤:

    마우스 화살표마우스 포커스 화살표마우스다운 화살표마우스업 화살표클릭을 입력합니다.

다른 레코드로 이동한 다음 컨트롤을 클릭하면 폼에 대한 Current 이벤트도 컨트롤에 대한 Enter 이벤트 전에 발생합니다.

컨트롤을 두 번 클릭하면 ClickDblClick 이벤트가 둘 다 발생합니다. 예를 들어 명령 단추가 아닌 컨트롤을 두 번 클릭하면 컨트롤에 대한 이벤트가 다음 순서로 발생합니다.

MouseD 자체 화살표 MouseUp 화살표 클릭 화살표 DblClick 화살표 MouseUp

명령 단추를 두 번 클릭하면 이벤트가 위의 순서로 발생한 다음 두 번째 Click 이벤트가 발생합니다.

폼, 구역 또는 컨트롤에 대한 MouseMove 이벤트는 마우스 포인터를 폼, 구역 또는 컨트롤 위로 이동하면 발생합니다. 이 이벤트는 다른 마우스 이벤트와 다릅니다.

맨 위로 이동

보고서 및 보고서 구역에 대한 이벤트 순서

보고서 및 보고서 구역에 대한 이벤트는 보고서를 열어 인쇄하거나 보고서를 미리 보거나 보고서를 닫을 때 발생합니다.

보고서에 대한 이벤트

보고서를 열어 인쇄하거나 미리 본 다음 나중에 보고서를 닫거나 Access의 다른 개체 탭으로 이동하면 보고서에 대한 이벤트가 다음 순서로 발생합니다.

열기 화살표 활성화 화살표 닫기 화살표 비활성화

열려 있는 두 보고서 사이를 전환하면 첫 번째 보고서에 대해 Deactivate 이벤트가 발생하고 두 번째 보고서에 대해 Activate 이벤트가 발생합니다.

비활성화 (보고서1) 화살표활성화 (보고서2)

보고서에 대한 Deactivate 이벤트는 보고서에서 Access의 다른 개체 탭으로 전환하는 경우에도 발생합니다. 그러나 대화 상자, PopUp 속성이 Yes로 설정되어 있는 폼 또는 다른 프로그램의 창으로 전환하면 Deactivate 이벤트가 발생하지 않습니다.

쿼리를 기반으로 하는 보고서를 열면 기본 쿼리를 실행하기 전에 보고서에 대한 Open 이벤트가 트리거됩니다. 따라서 Open 이벤트에 응답하는 매크로 또는 이벤트 프로시저를 사용하여 보고서에 대한 조건을 설정할 수 있습니다. 예를 들어 매크로 또는 이벤트 프로시저에서 보고서 조건을 입력하는 사용자 지정 대화 상자를 열 수 있습니다.

보고서 구역에 대한 이벤트

보고서를 인쇄하거나 미리 보면 보고서 구역에 대한 FormatPrint 이벤트가 보고서에 대한 OpenActivate 이벤트 다음 보고서의 Close 또는 Deactivate 이벤트 이전에 발생합니다.

열기 (보고서) 화살표활성화 (보고서) 화살표형식 (보고서 섹션) 화살표인쇄 (보고서 섹션) 화살표닫기 (보고서) 화살표비활성화 (보고서)

보안    보고서 보기를 사용하여 보고서의 사용자 필터링을 사용하도록 설정할 수 있습니다. 그러나 인쇄 미리 보기와 달리 모든 섹션의 서식인쇄 이벤트는 보고서 보기에서 발생하지 않습니다. 이는 해당 이벤트 내에서 컨트롤(예: 레이블 캡션, 표시 상태, 조건부 서식, 컨트롤 크기 조정 등)에 표시되는 VBA 함수 결과 및 사용자 정의 프로시저에도 적용됩니다. 따라서 이 이벤트의 코드를 사용하여 노출될 수 있는 기밀 데이터의 형식을 지정, 숨기기 또는 인쇄하지 마세요. AllowReportView 속성을 아니요로 설정하여 데이터를 미리 필터링하거나 보고서 미리 보기를 사용하지 않도록 설정하는 것이 좋습니다.

또한 서식 지정 중이나 이후 Print 이벤트 이전에 다음 이벤트가 발생할 수 있습니다.

  • Retreat 이벤트는 보고서 서식 지정 중 Access가 이전 구역으로 돌아가면 발생합니다.

  • NoData 이벤트는 보고서에 표시되는 레코드가 없는 경우 발생합니다.

  • Page 이벤트는 서식 지정 후 인쇄 전에 발생합니다. 이 이벤트를 사용하여 인쇄된 보고서의 모양을 사용자 지정할 수 있습니다.

맨 위로 이동

도움이 더 필요하세요?

더 많은 옵션을 원하세요?

구독 혜택을 살펴보고, 교육 과정을 찾아보고, 디바이스를 보호하는 방법 등을 알아봅니다.

커뮤니티를 통해 질문하고 답변하고, 피드백을 제공하고, 풍부한 지식을 갖춘 전문가의 의견을 들을 수 있습니다.