【VBA初學者教程】- 第一章 VBA入門知識:使用Excel對象的事件
上一期VBA入門知識為大家介紹的是如何在Visual Basic中使用Excel工作表函數,各位小夥伴都學會了嗎?剛好前兩天SUT學習交流群中有位小夥伴諮詢了一個問題,該問題的解決方法也有小夥伴解決了,截圖如下:
東陽這位小夥伴給出的代碼如下:
Dim old_v As Longn當用戶更改工作表中的單元格,或外部鏈接引起單元格的更改時觸發此事件nPrivate Sub Worksheet_Change(ByVal Target As Range)n With Targetn If .Address = "$A$1" Thenn Application.EnableEvents = Falsen .Value = old_v + .Valuen old_v = .Valuen Application.EnableEvents = Truen End Ifn End WithnEnd Subn當工作表上的選定區域發生改變時,將觸發本事件nPrivate Sub Worksheet_SelectionChange(ByVal Target As Range)n With Targetn If .Address = "$A$1" Thenn old_v = .Valuen ElseIf .Address = "$A$2" Thenn .Offset(-1).Selectn End Ifn End WithnEnd Subn 當用滑鼠右鍵單擊某工作表時觸發此事件,此事件先於默認的右鍵單擊操作nPrivate Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)n With Targetn If .Address = "$A$1" Thenn old_v = 0n .ClearContentsn Cancel = Truen End Ifn End WithnEnd Subn
代碼演示如下,詳見如下動態圖(右鍵滑鼠可以清空單元格內容):
上面的一段代碼就用到了幾個常用的事件,其實還有其他更多的事件。事件大體可以分為兩類,一類是工作簿事件,另一類是工作表事件。
工作簿事件:當工作簿更改、工作簿中的任何工作表更改、載入宏更改或數據透視表更改時,將引發工作簿事件。工作簿上的事件在默認情況下是可用的。工作簿對象事件一覽表如下圖所示:
工作表事件:當工作表激活、工作表中的任何單元格更改、數據透視表更改時,將引發工作表事件。工作表上的事件在默認情況下是可用的。工作表對象事件一覽表如下圖所示:
這麼多事件,難道都需要記住每個事件的名稱和用法嗎?當然不用,名稱和參數都可以使用Excel的VBE自動生成,具體操作如下:
工作表、圖表工作表和工作簿事件處理過程對任意打開的工作表或工作簿都有效。如果要為嵌入式圖表、查詢表或 Application 對象編寫事件處理過程,則必須在類模塊中用 WithEvents 關鍵字創建新的對象。
可用 EnableEvents 屬性激活或禁用事件。例如,使用 Save 方法保存工作表時,將引發 BeforeSave 事件。可在調用 Save 方法之前將 EnableEvents 屬性設置為False,以防止該事件的引發。具體代碼如下:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)n MsgBox "即將保存工作簿~"nEnd Subnn禁止BeforeSave事件觸發nSub sutTest()n Application.EnableEvents = Falsen ThisWorkbook.Saven Application.EnableEvents = TruenEnd Subn
代碼演示如下動態圖所示:
還記得文章開頭那位小夥伴寫的代碼裡面就用到了這個 EnableEvents 屬性來禁用工作表Change事件。等單元格值從新計算後,再啟用該事件。如果不這麼做,更改完單元格A1的值後,代碼將進入死循環,表現出來的就是你的Excel工作簿處於假死狀態~感興趣的可以試試,測試之前請保存好Excel文檔!!!
由於事件種類繁多,Steven也就不再多說,如果後期遇到比較經典的使用方法再分享給大家。好了,今天的介紹就到這裡了,如果大家在學習過程中遇到任何問題,歡迎加群(QQ群:615356012)交流,後期文章附帶的素材,大家都可以通過在公眾號回復該文檔發送的日期得到,歡迎下載學習^_^Written by Steven in 20170915^_^
微信公眾號:SaveUTime
SUT學習交流群:615356012,入群審核人:Steven
關注公眾號,提高效率,節約您的時間!
推薦閱讀:
※用excel VBA 可以做哪些簡單的小遊戲?
※Excel VBA 基礎(02.1)
※VBA逐句注釋:文本透視
※【Excel技巧】- VBA代碼提示運行時錯誤 '1004': 應用程序定義或對象定義錯誤
※64位的excel與32位的excel相比,有哪些優缺點?64位的excel使用體驗如何?
TAG:MicrosoftExcel | VBA | 入门指南 |