Excel VBA 示例:介紹性事件示例

如果您想很好地掌握 Excel VBA,您可能會從幾個示例中受益,以開發視覺基礎能力。在這裡,您可以找到一些 Excel VBA 示例,以便您掌握這個事件處理業務的竅門。

Excel VBA 示例:工作簿的 Open 事件

最常用的Excel VBA 事件之一是工作簿打開事件。假設您有一個每天使用的工作簿。每次打開工作簿時都會執行此示例中的 Workbook_Open 過程。該程序檢查星期幾;如果是星期五,代碼會為您顯示一條提醒消息。

要創建在 Workbook Open 事件發生時執行的 Excel VBA 過程,請執行以下步驟:

打開 Excel 工作簿。
任何 Excel 工作簿都可以。

按 Alt+F11 激活 VBE。

在“項目”窗口中找到工作簿。

如有必要,雙擊項目名稱以顯示其項目。

雙擊 ThisWorkbook 項目。
VBE 為 ThisWorkbook 對象顯示一個空的代碼窗口。

在代碼窗口中,從對象(左側)下拉列表中選擇工作簿。
VBE 輸入 Workbook_Open 過程的開始和結束語句。

輸入以下語句,因此完整的事件過程如下所示:

私有子工作簿_Open()
  將消息調暗為字符串
  如果工作日(現在)= 6 那麼
    Msg = "今天是星期五,別忘了"
    Msg = Msg & "提交 TPS 報告!"
    消息框消息
  萬一
結束子

代碼窗口應如下所示。

Excel VBA 示例:介紹性事件示例

該事件處理程序在工作簿打開時執行。

Workbook_Open 每當打開工作簿時自動執行。它使用 VBA 的 WeekDay 函數來確定星期幾。如果是星期五(第 6 天),則會有一個消息框提醒用戶提交報告。如果不是星期五,什麼都不會發生。

如果今天不是星期五,您可能很難測試此程序。您可以將 6 更改為對應於今天的實際天數。

當然,您可以按照自己喜歡的任何方式修改此過程。例如,以下版本每次打開工作簿時都會顯示一條消息。這會在一段時間後變得煩人。

Workbook_Open 過程幾乎可以做任何事情。這些事件處理程序通常用於以下用途:

  • 顯示歡迎信息(例如在 Frank 的酷工作簿中)
  • 打開其他工作簿
  • 激活工作簿中的特定工作表
  • 設置自定義快捷菜單

下面是 Workbook_Open 過程的最終 Excel VBA 示例,該過程使用 GetSetting 和 SaveSetting 函數來跟踪工作簿已打開的次數。SaveSetting 函數將一個值寫入 Windows 註冊表,GetSetting 函數檢索該值(有關詳細信息,請參閱幫助系統)。下面的 Excel VBA 示例從註冊表中檢索計數,將其遞增,然後將其保存回註冊表。它還告訴用戶對應於工作簿打開次數的 Cnt 值。

私有子工作簿_Open()
  將 Cnt 調暗至長
  Cnt = GetSetting("MyApp", "設置", "打開", 0)
  Cnt = Cnt + 1
  SaveSetting "MyApp", "Settings", "Open", Cnt
  MsgBox "此工作簿已被打開 " & Cnt & " 次。
結束子

Excel VBA 示例:介紹性事件示例

使用 Workbook_Open 事件處理程序來跟踪工作簿被打開的次數。

Excel VBA 示例:工作簿的 BeforeClose 事件

這是 Excel VBA Workbook_BeforeClose 事件處理程序過程的示例,該過程在工作簿關閉前立即自動執行。此過程位於 ThisWorkbook 對象的代碼窗口中:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
  將消息調暗為字符串
  Dim Ans 長
  將 FName 調暗為字符串
  Msg = "你要備份這個文件嗎?"
  Ans = MsgBox(Msg, vbYesNo)
  如果 Ans = vbYes 那麼
    FName = "F:\BACKUP\" & ThisWorkbook.Name
    ThisWorkbook.SaveCopyAs FName
  萬一
結束子

此例程使用消息框詢問用戶是否要製作工作簿的備份副本。如果答案是肯定的,則代碼使用 SaveCopyAs 方法在驅動器 F 上保存文件的備份副本。如果您調整此過程以供自己使用,則需要更改驅動器和路徑。

Excel 程序員經常使用 Workbook_BeforeClose 過程來自己清理。例如,如果您在打開工作簿時使用 Workbook_Open 過程更改某些設置(例如隱藏狀態欄),則只有在關閉工作簿時才將設置返回到其原始狀態才是合適的。您可以使用 Workbook_BeforeClose 過程執行此電子內務處理。

使用 Workbook_BeforeClose 事件時,請記住這一點:如果您關閉 Excel 並且自上次保存以來任何打開的文件已更改,Excel 將顯示其通常的“是否要保存更改”消息框。單擊取消按鈕取消整個關閉過程。但是 Workbook_BeforeClose 事件無論如何都會被執行。

Excel VBA 示例:工作簿的 BeforeSave 事件

顧名思義,BeforeSave 事件在保存工作簿之前觸發。當您選擇文件 → 保存或文件 → 另存為時,會發生此事件。

以下過程位於 ThisWorkbook 對象的代碼窗口中,演示了 BeforeSave 事件。每次保存工作簿時,例程都會更新單元格(Sheet1 上的單元格 A1)中的值。換句話說,單元格 A1 用作計數器來跟踪文件被保存的次數。

私有子工作簿_BeforeSave(ByVal SaveAsUI _
  作為布爾值,取消作為布爾值)
  將計數器調暗為範圍
  Set Counter = Sheets("Sheet1").Range("A1")
  計數器.值 = 計數器.值 + 1
結束子

請注意 Workbook_BeforeSave 過程有兩個參數:SaveAsUI 和 Cancel。要演示這些參數的工作原理,請檢查以下宏,該宏在保存工作簿之前執行。此過程試圖防止用戶使用不同的名稱保存工作簿。如果用戶選擇文件 → 另存為,則 SaveAsUI 參數為 True。

當代碼執行時,它會檢查 SaveAsUI 值。如果此變量為 True,該過程將顯示一條消息並將 Cancel 設置為 True,從而取消 Save 操作。

私有子工作簿_BeforeSave(ByVal SaveAsUI _
  作為布爾值,取消作為布爾值)
  如果 SaveAsUI 那麼
    MsgBox "您無法保存此工作簿的副本!"
  取消 = 真
  萬一
結束子

請注意,此過程不會真正阻止任何人使用不同的名稱保存副本。如果有人真的想這樣做,他或她可以在禁用宏的情況下打開工作簿。當宏被禁用時,事件處理程序也被禁用,這是有道理的,因為它們畢竟是宏。

Leave a Comment

HTKK 5.0.3

HTKK 5.0.3

HTKK 是稅務總局免費發布的報稅支援軟體,提供企業快速建立報稅表。了解HTKK的安裝步驟與升級功能。

有用的 Microsoft Power Query 日期函數

有用的 Microsoft Power Query 日期函數

探索 Excel 中的 Microsoft Power Query 日期函數,快速處理日期計算和操作,其中包含添加天數、提取日期部分等功能的詳細說明。

如何在 Excel 2019 中使用 3D 地圖功能

如何在 Excel 2019 中使用 3D 地圖功能

3D 地圖是 Excel 2019 中提供的令人興奮的可視化分析功能,讓你能夠在 Excel 中創建動態的 3D 地圖。探索如何利用這項技術提升數據分析的效果。

如何在 Excel 中使用 SKEW 和 SKEW.P 函數

如何在 Excel 中使用 SKEW 和 SKEW.P 函數

了解如何在 Excel 中使用 SKEW 和 SKEW.P 函數來衡量數據分佈的偏度,這對於分析數據的對稱性至關重要。

如何為 Excel 儀表板創建時間線切片器

如何為 Excel 儀表板創建時間線切片器

時間軸切片器的工作方式與標準切片器的工作方式相同,因為它允許您使用視覺選擇機製過濾數據透視表。了解如何在 Excel 中使用時間軸切片器來高效管理日期字段。

如何在 Excel 2016 中使用 XLOOKUP 函數

如何在 Excel 2016 中使用 XLOOKUP 函數

了解如何在 Excel 2016 中使用 XLOOKUP 函數,這是一個 VLOOKUP 函數的優秀替代品,具有更強大和靈活的功能!

智能表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 開發的商業和生產力應用程式。