此事件不適用的核取方塊、 選項按鈕或切換按鈕選項群組中。 它只適用於選項群組本身。

發生這些事件時執行巨集或事件程序,將 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 支援與意見反應