如何在 Excel 2016 VBA 中使用 OnTime 事件和按鍵事件

如何在 Excel 2016 VBA 中使用 OnTime 事件和按鍵事件

您可以在 Excel 2016 的 VBA 編程中使用兩種與對象無關的事件:時間和按鍵。由於時間和按鍵與特定對象(例如工作簿或工作表)無關,因此您可以在普通 VBA 模塊中對這些事件進行編程。

OnTime 事件

OnTime 事件發生在一天中的特定時間。以下示例演示瞭如何在下午 3 點事件發生時讓 Excel 執行過程。在這種情況下,機器人的聲音告訴你醒來,並伴隨著一個消息框:

子設置警報()
  Application.OnTime 0.625,“顯示警報”
結束子
子顯示報警()
  Application.Speech.Speak(“嘿,醒醒”)
  MsgBox “下午休息時間到了!”
結束子

在此示例中,使用了 Application 對象的 OnTime 方法。此方法有兩個參數:時間(0.625 或下午 3:00)和時間事件發生時要執行的 Sub 過程的名稱 (DisplayAlarm)。

如果您忙於工作以至於忘記了會議和約會,則此過程非常有用。只需設置一個 OnTime 事件來提醒自己。

大多數人發現很難根據 Excel 編號系統來考慮時間。因此,您可能希望使用 VBA TimeValue 函數來表示時間。TimeValue 將看起來像時間的字符串轉換為 Excel 可以處理的值。以下語句顯示了一種更簡單的方法來為下午 3 點安排事件:

Application.OnTime TimeValue(“3:00:00 pm”), “DisplayAlarm”

如果要相對於當前時間(例如,從現在起 20 分鐘後)安排事件,可以使用如下語句:

Application.OnTime Now + TimeValue(“00:20:00”), “DisplayAlarm”

您還可以使用 OnTime 方法在特定日期運行 VBA 過程。您必須確保您的計算機繼續運行並且包含該過程的工作簿保持打開狀態。以下語句在 2016 年 12 月 31 日下午 5 點運行 DisplayAlarm 程序:

Application.OnTime DateValue(“12/31/2016 5:00 pm”), “DisplayAlarm”

這個特殊的代碼行可能會派上用場,警告您需要回家為新年前夜慶祝活動做好準備。

這是使用 OnTime 事件的另一個示例。執行 UpdateClock 過程將時間寫入單元格 A1,並在五秒後編程另一個事件。此事件重新運行 UpdateClock 過程。最終效果是單元格 A1 每五秒更新一次當前時間。要停止事件,請執行 StopClock 過程(取消事件)。請注意,NextTick 是一個模塊級變量,用於存儲下一個事件的時間。

Dim NextTick As Date
子更新時鐘()
' 用當前時間更新單元格 A1
  ThisWorkbook.Sheets(1).Range(“A1”) = 時間
' 從現在起 5 秒後設置下一個事件
  NextTick = Now + TimeValue(“00:00:05”)
  Application.OnTime NextTick, “UpdateClock”
結束子
子停止時鐘()
' 取消 OnTime 事件(停止時鐘)
  出錯時繼續下一步
  Application.OnTime NextTick, “UpdateClock”, , False
結束子

即使在工作簿關閉後 OnTime 事件仍然存在。換句話說,如果您在不運行 StopClock 過程的情況下關閉工作簿,則工作簿將在五秒鐘內重新打開(假設 Excel 仍在運行)。為防止出現這種情況,請使用包含以下語句的 Workbook_BeforeClose 事件過程:

呼叫停止時鐘

OnTime 方法有兩個額外的參數。如果您打算使用此方法,您應該參考幫助系統以獲取完整的詳細信息。

如果您想查看一個相當複雜的應用程序,請查看這個模擬時鐘應用程序。鐘面實際上是一個圖表,圖表每秒更新一次以顯示一天中的時間。沒用,但很有趣。

如何在 Excel 2016 VBA 中使用 OnTime 事件和按鍵事件

一個模擬時鐘應用程序。

按鍵事件

在您工作時,Excel 會持續監控您鍵入的內容。因此,您可以進行設置,以便按鍵或組合鍵執行過程。

下面是一個重新分配 PgDn 和 PgUp 鍵的示例:

子 Setup_OnKey()
  Application.OnKey “{PgDn}”、“PgDn_Sub”
  Application.OnKey “{PgUp}”、“PgUp_Sub”
結束子
子 PgDn_Sub()
  出錯時繼續下一步
  ActiveCell.Offset(1, 0).Activate
結束子
子 PgUp_Sub()
  出錯時繼續下一步
  ActiveCell.Offset(-1, 0).Activate
結束子

通過執行 Setup_OnKey 過程設置 OnKey 事件後,按 PgDn 會將您向下移動一行。按 PgUp 將您向上移動一行。

請注意,關鍵代碼括在大括號中,而不是括號中。有關鍵盤代碼的完整列表,請查閱幫助系統。搜索OnKey。

在此示例中, On Error Resume Next 用於忽略生成的任何錯誤。例如,如果活動單元格位於第一行,則嘗試向上移動一行會導致可以安全忽略的錯誤。如果圖表工作表處於活動狀態,則沒有活動單元格。

通過執行以下例程,您可以取消 OnKey 事件:

子 Cancel_OnKey()
  Application.OnKey “{PgDn}”
  Application.OnKey “{PgUp}”
結束子

使用空字符串作為 OnKey 方法的第二個參數不會取消 OnKey 事件。相反,它會導致 Excel 簡單地忽略擊鍵。例如,以下語句告訴 Excel 忽略 Alt+F4。百分號代表 Alt 鍵:

  Application.OnKey “%{F4}”, “”

儘管您可以使用 OnKey 方法為執行宏指定快捷鍵,但您應該使用“宏選項”對話框來執行此任務。

如果關閉包含代碼的工作簿並讓 Excel 保持打開狀態,則不會重置 OnKey 方法。因此,按快捷鍵將使 Excel 自動打開帶有宏的文件。為了防止這種情況發生,您應該在 Workbook_BeforeClose 事件代碼中包含代碼以重置 OnKey 事件。


智能表9.1.1

智能表9.1.1

Smartsheet 是一個動態工作平台,可讓您管理專案、建立工作流程以及與團隊合作。

共享點

共享點

SharePoint 是一個基於 Web 的協作系統,它使用各種工作流程應用程式、「清單」資料庫和其他 Web 元件以及安全功能來控制業務群組的協同工作。

萬年曆1.0.38/1.0.36

萬年曆1.0.38/1.0.36

萬年日曆是一款手機上的日曆檢視應用程式,可協助您在手機上快速查看陰陽日期,從而安排您的重要工作。

微軟 Outlook 2021

微軟 Outlook 2021

Microsoft Outlook 是由 Microsoft Corporation 開發的商業和生產力應用程式。

點擊按鈕

點擊按鈕

ClickUp 是所有企業評價最高的生產力平台之一。Google、Booking.com、San Diego Padres 和 Uber 等大型企業都使用 ClickUp 來提高工作效率。

PDF-XChange 檢視器 2.5.322.10

PDF-XChange 檢視器 2.5.322.10

PDF 已成為閱讀、建立和傳送文字文件的常用格式。反過來,用於此類文件的程式數量也有所增加。PDF-XChange Viewer 是數量不斷增長的 PDF 檢視器之一。

阿帕契開放辦公室

阿帕契開放辦公室

Apache OpenOffice 提供了一整套可與 Microsoft 365 競爭的 Office 應用程序,尤其是 Excel、PowerPoint 和 Word。它允許您更有效地管理您的項目,並支援多種文件格式。

下載 iTaxviewer 1.8.7

下載 iTaxviewer 1.8.7

iTaxViewer軟體是當今最受歡迎的XML檔案讀取軟體。該軟體是用於讀取稅務總局 XML 格式電子報稅單的應用程式。

硝基 PDF 閱讀器

硝基 PDF 閱讀器

Nitro PDF Reader 是一款方便的 PDF 編輯器,涵蓋了大多數人每天使用 PDF 文件執行的所有基本任務。

福昕閱讀器12

福昕閱讀器12

Foxit Reader主要是一個PDF閱讀器,還允許您建立PDF文件、對其進行簽名、編輯以及添加註釋。它適用於作業系統,有 Microsoft Office 軟體包中各種程式的插件。