本文為《Excel 2016應(yīng)用大全》擴(kuò)展內(nèi)容 事件就是由Excel用戶或者系統(tǒng)觸發(fā)的,可以在VBA代碼中進(jìn)行響應(yīng)的代碼組合。 例如:當(dāng)工作表被激活、選中單元格、更改單元格內(nèi)容等操作都可以觸發(fā)一系列的相關(guān)事件。通過編寫VBA代碼響應(yīng)這些事件,當(dāng)事件被觸發(fā)時(shí),將運(yùn)行事件過程執(zhí)行進(jìn)行相應(yīng)的操作。 事件過程作為一種特殊的Sub過程,在滿足特定條件時(shí)被觸發(fā)執(zhí)行,如果事件過程包含參數(shù),系統(tǒng)會(huì)為相關(guān)參數(shù)賦值。 事件過程必須寫入相應(yīng)的模塊中才能發(fā)揮其作用,例如:工作簿事件過程須寫入ThisWorkbook模塊中,工作表事件過程則須寫入相應(yīng)的工作表模塊中,且只有過程所在工作表的行為可以觸發(fā)該事件。 事件過程作為一種特殊的Sub過程,在VBA中已經(jīng)規(guī)定了每個(gè)事件過程的名稱和參數(shù)。 用戶可以【代碼】窗口中手工輸入事件過程的全部代碼,但是更便捷的方法是在【代碼】窗口中選擇相應(yīng)的對(duì)象和事件,VBE將自動(dòng)在【代碼】窗口中添加事件過程的聲明語句和結(jié)束語句。 在【代碼】窗口上部左側(cè)的【對(duì)象】下拉框中選中Worksheet,在右側(cè)的【事件】下拉框中選中Change,Excel將自動(dòng)在【代碼】窗口中輸入如圖 48-1所示的工作表Change事件過程代碼框架。 圖 48-1 【代碼】窗口中快速添加事件代碼框架 事件過程的代碼需要寫入在Sub和End Sub之間,在代碼中可以使用事件過程參數(shù),不同的事件過程,其參數(shù)也不盡相同。 通過示例 48.2和示例 48.4的學(xué)習(xí)可以知道,工作簿對(duì)象的SheetSelectionChange事件和Worksheet對(duì)象的SelectionChange事件的觸發(fā)條件是相同的。 但是,Excel應(yīng)用程序在任何時(shí)刻都只能執(zhí)行唯一的代碼,即無法實(shí)現(xiàn)并行處理事件代碼。 如果同時(shí)使用此類觸發(fā)條件相同的事件,就需要預(yù)先確切地知道事件的優(yōu)先級(jí),即相同條件下事件被激活的先后次序。這些優(yōu)先級(jí)順序并不需要大家刻意去記憶,可以利用代碼輕松的獲知事件的優(yōu)先級(jí)。 新建一個(gè)Excel工作簿文件,按 在【工程資源管理器】中雙擊“ThisWorkbook”,在右側(cè)的【代碼】窗口中輸入如下代碼。 #001 Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, _ ByVal Target As Range) #002 MsgBox ' Workbook_SheetSelectionChange事件' ,vbInformation #003 End Sub 在【工程資源管理器】中雙擊活動(dòng)工作表,在右側(cè)的【代碼】窗口中輸入如下代碼。 #001 Private Sub Worksheet_SelectionChange(ByVal Target As Range) #002 MsgBox 'Worksheet_SelectionChange事件' ,vbInformation #003 End Sub 返回Excel界面中,在活動(dòng)工作表中選中任意單元格。Excel將依次顯示兩個(gè)提示對(duì)話框,如圖 48-6所示。 圖 48-6 事件的激活順序 由此可知,工作表的SelectionChange事件先于工作簿的SheetSelectionChange事件被激活。 對(duì)于其他的多個(gè)事件激活順序可以采用類似的方法進(jìn)行驗(yàn)證。 |
|