此事件不適用的核取方塊、 選項按鈕或切換按鈕選項群組中。 它只適用於選項群組本身。
發生這些事件時執行巨集或事件程序,將
OnEnter
或
OnExit
屬性設定為巨集名稱或 [事件程序]。
因為
Enter
事件發生於焦點移至的特定控制項之前,您可以使用
Enter
巨集或事件程序顯示指示;例如,您可以使用巨集或事件程序來顯示小型表單或訊息] 方塊中識別的控制項通常包含、 資料類型或提供如何使用控制項的指示。
Enter
事件會在
GotFocus
事件之前發生。
Exit
事件會在
LostFocus
事件之前發生。
GotFocus
和
LostFocus
事件,不同表單接收或失去焦點時並不會發生
Enter
和
Exit
事件。 例如,假設您選取 [表單] 核取方塊,然後按一下 [報表。 在
輸入
和
GotFocus
事件發生時選取此核取方塊。 當您按一下 [報表會發生
LostFocus
事件。 (因為將焦點移至不同的視窗) 不會發生
Exit
事件。 如果您選取一次以將其移至最上層的表單上核取方塊,會發生
GotFocus
事件,但不是
Enter
事件 (因為控制項有焦點時表單上次使用時間)。 只有當您按一下表單上的另一個控制項時,會發生
Exit
事件。
如果您將焦點移至表單上的控制項,而且該控制項沒有焦點在該表單上,則在您移動的控制項的
Enter
和
GotFocus
事件之前,會發生焦點在表單上的控制項 Exit 和
LostFocus
事件。
如果您用滑鼠將焦點從主表單中的控制項移到該表單之子表單中的控制項 (子表單上的該控制項尚未取得焦點),則會發生下列事件:
結束
(如主表單上的控制項)
LostFocus
(如主表單上的控制項)
輸入
(適用於子表單控制項)
結束
(適用於子表單中具有焦點的控制項)
LostFocus
(適用於子表單中具有焦點的控制項)
輸入
(適用於子表單中焦點的控制項)
GotFocus
(適用於子表單中焦點的控制項)
如果您在子表單上移至 的控制項先前擁有焦點,則不會發生其
Enter
事件或
GotFocus
事件,但子表單控制項的
Enter
事件確實發生。 如果您將焦點從子表單上的控制項移至主表單上的控制項,子表單上控制項的
Exit
和
LostFocus
事件不會發生,只有子表單控制項的
Exit
事件,以及主表單上控制項的
Enter
和
GotFocus
事件。
您通常會使用滑鼠或 Tab 之類的索引鍵,將焦點移至另一個控制項。 此時除了本主題所討論的事件之外,還會引發滑鼠或鍵盤事件。
在下列範例中,會將兩個事件程序附加至
LastName
文字方塊。
Enter
事件程序會顯示指定的資料類型使用者可以在 [文字] 方塊中輸入訊息。
Exit
事件程序會顯示對話方塊要求使用者如果應儲存變更之前將焦點移動至另一個控制項。 如果使用者按一下 [
取消
] 按鈕,
Cancel 自變
量會設定為
True
(1) ,這會將焦點移至文字方塊而不儲存變更。 如果使用者選擇 [
確定]
按鈕,則會儲存變更,並將焦點移至另一個控制項。
若要嘗試此範例,請將下列事件程序新增至包含名為
LastName
之文字方塊的表單。
Private Sub LastName_Enter()
MsgBox "Enter your last name."
End Sub
Private Sub LastName_Exit(Cancel As Integer)
Dim strMsg As String
strMsg = "You entered '" & Me!LastName _
& "' as your last name." & _
vbCrLf & "Is this correct?"
If MsgBox(strMsg, vbYesNo) = vbNo Then
Cancel = True ' Cancel exit.
Exit Sub ' Save changes and exit.
End If
End Sub
支援和意見反應
有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應。