13、Excel事件程序

事件程序:事件,操作也。事件程序,因操作而觸發(fā)自動運(yùn)行程序。
編寫位置:工作表和工作表的代碼區(qū)

1、Change 事件

當(dāng)用戶更改工作表中的單元格,或外部鏈接引起單元格的更改時(shí)產(chǎn)生此事件。

語法

Private Sub Worksheet_Change(ByVal Target As Range)

Target 更改的區(qū)域??梢允嵌鄠€單元格。本質(zhì)上Target是工作表中的活動變量,代表著更改的區(qū)域

說明

1、重新計(jì)算引起的單元格更改不觸發(fā)本事件??墒褂?Calculate 事件俘獲工作表重新計(jì)算操作。
2、Change事件,只要單元格有編輯的動作,無論單元格是否發(fā)生變化,都會觸發(fā)Change事件。

示例

本示例將更改的單元格的顏色設(shè)為藍(lán)色。

Private Sub Worksheet_Change(ByVal Target as Range)
    Target.Font.ColorIndex = 5
End Sub

2、屏蔽和恢復(fù)事件觸發(fā)開關(guān)

EnableEvents 屬性

如果對指定對象啟用事件,則該值為 True。Boolean 類型,可讀寫。

示例

本示例在保存文件之前禁用事件,以使 BeforeSave 事件不能觸發(fā)。

Application.EnableEvents = False
ActiveWorkbook.Save
Application.EnableEvents = True

3、Activate 事件

激活一個工作簿、工作表、圖表或嵌入圖表時(shí)產(chǎn)生此事件。

Private Sub object_Activate()

object Chart、Workbook、或者 Worksheet。有關(guān)對 Chart 對象使用事件的詳細(xì)信息,請參閱 Chart 對象事件的用法。

說明

切換兩個顯示同一個工作簿的窗口時(shí),將產(chǎn)生 WindowActivate 事件,但不產(chǎn)生工作簿的 Activate 事件。

新建窗口時(shí)不產(chǎn)生本事件。

示例

當(dāng)激活工作表時(shí),本示例對 A1:A10 區(qū)域進(jìn)行排序。

Private Sub Worksheet_Activate()
    Range("a1:a10").Sort Key1:=Range("a1"), Order:=xlAscending
End Sub

4、工作簿對象事件一覽表

當(dāng)工作簿更改、工作簿中的任何工作表更改、加載宏更改或數(shù)據(jù)透視表更改時(shí),將引發(fā)工作簿事件。工作簿上的事件在默認(rèn)情況下是可用的。

Activate

激活工作薄時(shí)

AddinInstall

當(dāng)工作簿作為加載宏安裝時(shí)

AddinUninstall

工作簿作為加載宏卸載時(shí)

BeforeClose

關(guān)閉工作薄前

BeforePrint

打印工作薄(或其中任何內(nèi)容)之前

BeforeSave

保存工作薄前

Deactivate

工作簿從活動狀態(tài)轉(zhuǎn)為非活動狀態(tài)時(shí)

NewSheet

在工作簿中新建工作表時(shí)

Open

打開工作簿時(shí)

PivotTableCloseConnection

在數(shù)據(jù)透視表關(guān)閉與其數(shù)據(jù)源的連接之后

PivotTableOpenConnection

在數(shù)據(jù)透視表打開與其數(shù)據(jù)源的連接之后

SheetActivate

激活任何一張表時(shí)

SheetBeforeDoubleClick

雙擊任何工作表時(shí)

SheetBeforeRightClick

鼠標(biāo)右鍵單擊任一工作表時(shí)

SheetCalculate

工作表重新計(jì)算時(shí)

SheetChange

更改工作表中的單元格時(shí)

SheetDeactivate

任一工作表由活動狀態(tài)轉(zhuǎn)為非活動狀態(tài)時(shí)

SheetFollowHyperlink

單擊 Microsoft Excel 中的任意超鏈接時(shí)

SheetPivotTableUpdate

數(shù)據(jù)透視表的工作表更新之后

SheetSelectionChange

工作簿中的數(shù)據(jù)透視表更新之后

WindowActivate

工作簿的窗口激活時(shí)

WindowDeactivate

工作簿的窗口變?yōu)榉腔顒訝顟B(tài)時(shí)

WindowResize

工作簿窗口調(diào)整大小時(shí)

5、工作表(Worksheet) 對象事件一覽表

工作表上的事件在默認(rèn)情況下是可用的。

Activate

激活工作表時(shí)

Deactivate

工作表從活動狀態(tài)轉(zhuǎn)為非活動狀態(tài)時(shí)

BeforeDoubleClick

雙擊工作表前

BeforeRightClick

右鍵單擊工作表時(shí)

Calculate

對工作表進(jìn)行重新計(jì)算之后

Change

更改工作表中的單元格,或外部鏈接引起單元格時(shí)

FollowHyperlink

單擊工作表上的任意超鏈接時(shí)

PivotTableUpdate

在工作簿中的數(shù)據(jù)透視表更新之后

SelectionChange

工作表上的選定區(qū)域發(fā)生改變時(shí)

6、Excel程序事件程序

代碼位置:ThisWorkbook或類模塊中
適用范圍:所有打開的excel文件

在對 Application 對象使用事件之前,必須新建一個類模塊并聲明一個帶有事件的 Application 類型對象。例如,假定新建了一個 EventClassModule 類模塊,在該模塊中包含下列代碼。

Public WithEvents App As Application
在對新對象帶事件聲明完之后,該對象將顯示在類模塊的“對象”下拉列表框中,并可以為此新對象編寫事件過程(在“對象”框中選取新對象時(shí),“過程”下拉列表框中會自動顯示該對象的有效事件)。

在運(yùn)行過程之前,必須將類模塊中聲明的對象與 Application 對象連接起來。可在任意的模塊中用下列代碼完成這一操作。

Dim X As New EventClassModule

Sub InitializeApp()
    Set X.App = Application
End Sub

在運(yùn)行 InitializeApp 過程之后,類模塊中的 App 對象將指向 Microsoft Excel Application 對象,并且當(dāng)事件發(fā)生時(shí)將執(zhí)行類模塊中的事件過程。

如果想要將excel程序的事件程序運(yùn)行在全部打開的excel文件中,需要新建一個工作簿open事件程序,然后將excel程序?qū)ο笞兞抠x值給事件變量,如上文中的App,代碼如下:

Private Sub Workbook_Open()
Set App = Excel.Application
End Sub

然后將含有該代碼的工作簿另存為加載項(xiàng),位置任意;
最后再進(jìn)行加載宏步驟,此時(shí)所有打開的excel文件都會執(zhí)行excel程序的時(shí)間程序。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本例為設(shè)置密碼窗口 (1) If Application.InputBox(“請輸入密碼:”) = 1234 Th...
    浮浮塵塵閱讀 14,671評論 1 20
  • 國家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說閱讀 12,309評論 6 13
  • 1.1 VBA是什么 直到90年代早期,使應(yīng)用程序自動化還是充滿挑戰(zhàn)性的領(lǐng)域.對每個需要自動化的應(yīng)用程序,人們不得...
    浮浮塵塵閱讀 22,136評論 6 49
  • VBA訂制工具欄 http://club.excelhome.net/thread-1047254-1-1.htm...
    大海一滴寫字的地方閱讀 2,351評論 0 0
  • ORA-00001: 違反唯一約束條件 (.) 錯誤說明:當(dāng)在唯一索引所對應(yīng)的列上鍵入重復(fù)值時(shí),會觸發(fā)此異常。 O...
    我想起個好名字閱讀 5,930評論 0 9

友情鏈接更多精彩內(nèi)容