VBA中的事件


事件程序:事件,操作也。事件程序,因操作而觸發自動運行程序。

編寫位置:工作表和工作表的代碼區

1、Change 事件

當用戶更改工作表中的單元格,或外部鏈接引起單元格的更改時產生此事件。

語法

Private Sub Worksheet_Change(ByVal Target As Range)

Target 更改的區域。可以是多個單元格。本質上Target是工作表中的活動變量,代表着更改的區域

說明

1、重新計算引起的單元格更改不觸發本事件。可使用 Calculate 事件俘獲工作表重新計算操作。

2、Change事件,只要單元格有編輯的動作,無論單元格是否發生變化,都會觸發Change事件。

示例

本示例將更改的單元格的顏色設為藍色。

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

2、屏蔽和恢復事件觸發開關

EnableEvents 屬性

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

示例

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

Application.EnableEvents = FalseActiveWorkbook.SaveApplication.EnableEvents = True

3、Activate 事件

激活一個工作簿、工作表、圖表或嵌入圖表時產生此事件。

Private Sub object_Activate()

object Chart、Workbook、或者 Worksheet。有關對 Chart 對象使用事件的詳細信息,請參閱 Chart 對象事件的用法。

說明

切換兩個顯示同一個工作簿的窗口時,將產生 WindowActivate 事件,但不產生工作簿的 Activate 事件。

新建窗口時不產生本事件。

示例

當激活工作表時,本示例對 A1:A10 區域進行排序。

Private Sub Worksheet_Activate() Range('a1:a10').Sort Key1:=Range('a1'), Order:=xlAscendingEnd Sub

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

當工作簿更改、工作簿中的任何工作表更改、加載宏更改或數據透視表更改時,將引發工作簿事件。工作簿上的事件在默認情況下是可用的。

Activate

激活工作薄時

AddinInstall

當工作簿作為加載宏安裝時

AddinUninstall

工作簿作為加載宏卸載時

BeforeClose

關閉工作薄前

BeforePrint

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

BeforeSave

保存工作薄前

Deactivate

工作簿從活動狀態轉為非活動狀態時

NewSheet

在工作簿中新建工作表時

Open

打開工作簿時

PivotTableCloseConnection

在數據透視表關閉與其數據源的連接之后

PivotTableOpenConnection

在數據透視表打開與其數據源的連接之后

SheetActivate

激活任何一張表時

SheetBeforeDoubleClick

雙擊任何工作表時

SheetBeforeRightClick

鼠標右鍵單擊任一工作表時

SheetCalculate

工作表重新計算時

SheetChange

更改工作表中的單元格時

SheetDeactivate

任一工作表由活動狀態轉為非活動狀態時

SheetFollowHyperlink

單擊 Microsoft Excel 中的任意超鏈接時

SheetPivotTableUpdate

數據透視表的工作表更新之后

SheetSelectionChange

工作簿中的數據透視表更新之后

WindowActivate

工作簿的窗口激活時

WindowDeactivate

工作簿的窗口變為非活動狀態時

WindowResize

工作簿窗口調整大小時

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

工作表上的事件在默認情況下是可用的。

Activate

激活工作表時

Deactivate

工作表從活動狀態轉為非活動狀態時

BeforeDoubleClick

雙擊工作表前

BeforeRightClick

右鍵單擊工作表時

Calculate

對工作表進行重新計算之后

Change

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

FollowHyperlink

單擊工作表上的任意超鏈接時

PivotTableUpdate

在工作簿中的數據透視表更新之后

SelectionChange

工作表上的選定區域發生改變時

6、Excel程序事件程序

代碼位置:ThisWorkbook或類模塊中

適用范圍:所有打開的excel文件

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

Public WithEvents App As Application

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

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

Dim X As New EventClassModuleSub InitializeApp() Set X.App = ApplicationEnd Sub

在運行 InitializeApp 過程之后,類模塊中的 App 對象將指向 Microsoft Excel Application 對象,並且當事件發生時將執行類模塊中的事件過程。

如果想要將excel程序的事件程序運行在全部打開的excel文件中,需要新建一個工作簿open事件程序,然后將excel程序對象變量賦值給事件變量,如上文中的App,代碼如下:

Private Sub Workbook_Open()Set App = Excel.ApplicationEnd Sub

然后將含有該代碼的工作簿另存為加載項,位置任意;

最后再進行加載宏步驟,此時所有打開的excel文件都會執行excel程序的時間程序。

 

來源 :http://www.360doc.com/content/19/0307/07/51566356_819773247.shtml


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM