若要在這些事件發生時執行宏或事件程序,請將 OnLostFocus 屬性設定為宏的名稱或 [事件程序]。

當焦點在回應使用者動作時移動,例如按 Tab 鍵或按一下物件,或在 Visual Basic 中使用 SetFocus 方法或宏中的 SelectObject、GoToRecord、GoToControl 或 GoToPage 巨集指令時,就會發生此事件。

只有在 其 Visible 啟用 屬性會設為 [是] 控制項可以收到焦點。 只有當它沒有任何控制項或所有可見的控制項已停用表單才能接收焦點。 如果表單包含任何可見、 已啟用的控制項,則不會發生 GotFocus 事件表單。

您可以指定當表單或控制項收到焦點 GotFocus 事件發生時執行巨集或事件程序會發生什麼事。 例如,將 GotFocus 事件程序附加於每一個表單上的控制項,您可以指引使用者透過您的應用程式顯示在文字方塊中的簡短說明或訊息。 您也可以提供視覺提示啟用、 停用,或顯示取決於控制項具有焦點的控制項。

若要自訂當您按下 Tab 鍵時,焦點從控制項移至表單上控制項的順序,請設定定位順序或指定控制項的便捷鍵。

LostFocus 事件與 Exit 事件,因為每次控制項失去焦點時就會發生 LostFocus 事件。 只有在控制項上的焦點移到相同表單上的另一個控制項之前會發生 Exit 事件。 LostFocus 事件會發生 Exit 事件之後。

如果您將焦點移至表單上控制項和控制項沒有焦點 離開 該表單上及表單上沒有焦點的控制項 LostFocus 事件之前發生 Enter GotFocus 事件控制項您移動至。

如果您用滑鼠將焦點從主表單中的控制項移到該表單之子表單中的控制項,則發生下列事件:

  • 結束 (如主表單上的控制項)
  • LostFocus (如主表單上的控制項)
  • 輸入 (適用於子表單控制項)
  • 結束 (適用於子表單中具有焦點的控制項)
  • LostFocus (適用於子表單中具有焦點的控制項)
  • 輸入 (適用於子表單中焦點的控制項)
  • GotFocus (適用於子表單中焦點的控制項)
  • 如果您在子表單上移至 的控制項先前擁有焦點,則不會發生其 Enter 事件或 GotFocus 事件,但子表單控制項的 Enter 事件確實發生。 如果您子表單上控制項的焦點移至主表單上的控制項, 退出 和子表單控制項的 LostFocus 事件不會發生, Exit 事件子表單控制項和主表單上控制項的 輸入 GotFocus 事件。

    您通常會使用滑鼠或 Tab 之類的索引鍵,將焦點移至另一個控制項。 此時除了本主題所討論的事件之外,還會引發滑鼠或鍵盤事件。

    兩個開啟的表單之間進行切換, Deactivate 事件發生於第一個表單,並 Activate 事件發生在第二個表單。 如果表單包含不可見,啟用 LostFocus 事件會發生 Deactivate 事件之前的第一個表單的控制項,並 GotFocus 事件會在發生第二個表單的 Activate 事件之後。

    下列範例會在焦點移到選項按鈕時將訊息顯示於標籤上。 若要嘗試此範例,請將下列事件程序新增至名為 Contacts 的表單,其中包含名為 OptionYes 的 選項按鈕和名為 LabelYes 的 標籤。

    Private Sub OptionYes_GotFocus() 
     Me!LabelYes.Caption = "Option button 'Yes' has the focus." 
    End Sub 
    Private Sub OptionYes_LostFocus() 
     Me!LabelYes.Caption = "" ' Clear caption. 
    End Sub
    

    支援和意見反應

    有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應