VBA對象的方法、屬性、事件及編程小技巧

VBA對象的方法、屬性、事件及編程小技巧

相信大家在看過VBA快速入門之後,對VBA有了一定的瞭解,在此基礎上,本篇文章想分享一下VBA在實操方面的內容,並在最後會給出參考資料,供大家進一步研究。

VBA中子過程、函數、數組

子過程

子過程的含義是一些語句的集合,並且沒有返回值。之前說過的宏,在VBA中就表現為一個子過程,所以子過程和宏的意義很相似,也就是對某一功能的封裝,後續如果還需要此功能,只需要簡單的調用子過程名稱就OK了,不用再重複的寫該功能對應的全部語句了。子過程在VBA的關鍵字為Sub,完整語法如下,其中方括號("[]")表示內容可選,豎線("|")表示多箇中選擇一個。

VBA對象的方法、屬性、事件及編程小技巧

子過程的一個實例如下,說明,VBA中註釋用單引號表示。

VBA對象的方法、屬性、事件及編程小技巧

函數

VBA函數是指執行計算並返回結果的過程,這句話就點名在VBA中函數與過程的區別與聯繫,核心區別是函數有返回值,子過程沒有返回值,可以在VBA代碼或者工作表中使用函數,函數的完整語法如下,乍一看覺得挺複雜,其實不難,因為函數需要返回值,所以就有 As Type 來指明返回值類型,還有函數具體要返回哪個值呢?又沒有return語句,所以就需要函數名來當作返回的值了。

VBA對象的方法、屬性、事件及編程小技巧

函數的一個實例及引用如下:

VBA對象的方法、屬性、事件及編程小技巧

數組

數組是一組同類元素,使用數組名來標識,使用數組名和一個下標可以引用數組中的某個特定元素,數組在VBA中的申明如下,在默認情況下,VBA數組的下標從0開始,即當開始下標和To省略後,數組下標從0開始。

VBA對象的方法、屬性、事件及編程小技巧

動態數組沒有提供元素的數目,因此,在聲明動態數組時應使用一組空括號,在使用之前,需要使用ReDim語句來說明VBA動態數組中包含多少個元素。

VBA對象的方法、屬性、事件及編程小技巧

VBA對象和方法的引用

VBA中對象的引用格式為對象名.屬性名,同樣的,在VBA中方法的引用方式為對象名.方法名,可以這樣來理解,當我們叫一個人時,是不是也是姓名的xxx。例如 小明的頭髮、小明的衣服……,請看示例。

VBA對象的方法、屬性、事件及編程小技巧

上述示例比較有代表性,大家在看的過程中有不理解的地方歡迎留言討論,我簡單總結一下。

  • 以後出現多個點的情況,請從左到右逐個分析,出現這種情況的原因是對象的屬性也可能是另外一個對象。那該如何識別對象呢?直觀的考慮是除了基本數據類型外,其餘都是對象。
  • 帶名稱的參數含義明確,且參數之間順序可以任意,不帶名稱的參數,參數含義嚴格與函數/過程定義時的保持一致,例如Offset(2,3)不等於Offset(3,2)
  • 對象變量的賦值使用關鍵字Set。

事件

在Excel中,事件是指會話中發生的動作。對於Excel中的對象而言,發生的任何事情都要通過事件,例如,打開工作簿、雙擊單元格、改變單元格的值。當某一個具體事件發生時,就是要告訴Excel要運行某個宏或某段代碼,即事件處理函數。可以這樣來理解,事件發生了,當然需要來處理啦。在Excel中,事件可以分為以下幾類。

  • 工作簿事件:某個具體的工作簿發生的事件,例如open事件(打開或者新建),NewSheet事件(添加新工作表)
  • 工作表事件:某個具體的工作表發生的事件,例如Change事件(修改工作表山的某個單元格)
  • 圖表事件:某個具體的圖表發生的事件,例如Select事件
  • 應用程序事件:Excel應用程序發生的事件,包括NewWorkbook事件(新建一個工作簿)
  • 用戶窗體事件:具體的窗體中發生的事件。例如Click事件。
  • 與對象無關的事件:例如Ontime事件和Onkey事件。

事件處理程序必須放置在正確的位置,才能生效。工作簿級別事件的代碼應該放在ThisWorkbook代碼模塊中,工作表級別事件的代碼應該放在特定工作表的代碼模塊中,例如Sheet1。每一個事件事件處理程序都有一個預先確定的名稱,例如Workbook_Open。

以下實例的功能是每當Excel文件代開後會顯示問候語,小夥伴們趕緊試試吧。

VBA對象的方法、屬性、事件及編程小技巧

編程小技巧

  • 使用Not關鍵字來切換布爾類型的屬性值。
  • 不清楚某個對象到底有哪些屬性和方法,可以選中該對象,然後按F1,系統會自動跳轉到幫助頁面,很推薦。

好了,本次的介紹就到這兒,如果你在讀的過程中有什麼疑問或者建議,歡迎留言討論;如果覺得有幫助,麻煩點贊支持,謝謝。

最後說明:因為頭條對markdown支持不是很完整,代碼支持的可讀性很差,所以文中代碼部分我使用了截圖,需要源代碼的麻煩關注一下我的微信公眾號“碼上有效率”,或者掃下面的二維碼,謝謝關注。

VBA對象的方法、屬性、事件及編程小技巧

參考文章

  • https://docs.microsoft.com/zh-cn/office/vba/language/reference/user-interface-help/sub-statement
  • https://docs.microsoft.com/zh-cn/office/vba/language/reference/user-interface-help/function-statement
  • https://wenku.baidu.com/view/ce900524b9f3f90f77c61b84.html


分享到:


相關文章: