3.4.1 對象,就像冰箱裡的雞蛋
什麼是對像
對象就是東西,是用代碼操作和控制的東西,屬於名詞。
打開工作簿,工作簿就是對像;複製工作表,工作表就是對像;刪除單元格,單元格就是對像……
對象的層次結構
廚房裡放著冰箱,冰箱裡有碗,碗裡裝著早餐要吃的雞蛋。無論是廚房、冰箱、碗還是雞蛋,都是東西,都是對象,如圖3-23所示。
圖3-23 廚房的結構圖
廚房裡除了冰箱,還有消毒櫃和電飯鍋;冰箱裡放著裝有雞蛋的碗,還放著裝著水果的盤子和裝著牛奶的瓶子,如圖3-23所示。
圖3-24 廚房裡的多個對象
一個Excel工作簿就像一間大廚房,一個工作簿裡可以有多張工作表,一張工作表裡有多個單元格區域,如圖3-25所示。
圖3-25 工作簿裡的對象
一個對象可以包含其他對象,同時又包含在其他對像裡,不同的對象總是這樣有層次地排列著。
集合——多個同類型的對象
集合也是對象,是對多個同種類型的對象的統稱。
冰箱裡有很多碗,無論裝著雞蛋還是瘦肉,都屬於同一類對象,可以統稱為「碗」。但是這個集合裡並沒有裝牛奶的瓶子,因為瓶子不是碗,和碗不屬於一類。
一個打開的工作簿,裡面有多張工作表,無論工作表的名稱是什麼,表裡保存什麼數據,它們都屬於工作表集合,即:Worksheets。
怎樣取到裝雞蛋的碗
要吃雞蛋,讓孩子去取。
「去廚房,把冰箱裡裝著雞蛋的碗拿來。」碗存放的地點(廚房的冰箱裡)以及碗的特徵(裝著雞蛋)都要介紹清楚,這樣,孩子才不會弄錯。
VBA中怎樣取到集合裡的一個對像
取到想要取的對象,稱為「引用對像」。
很多個工作簿,若干張工作表,數不清的單元格,怎麼表示「Book1」 工作簿中「Sheet2」工作表中的「A2」單元格?
就像取冰箱裡裝雞蛋的碗一樣,在哪間房的冰箱裡拿,拿什麼碗,都要敘述清楚。
引用對象就像引用硬盤上的文件,要按從大到小的順序逐層引用。
但並不是每一次引用對象都必須嚴謹地從第1層開始。
如果Book1工作簿是活動工作簿,前面的代碼可以寫為:
如果Sheet2工作表是活動工作表,代碼甚至還可以簡寫為:
3.4.2 對象的屬性
什麼是屬性
每個對象都有屬性。對象的屬性可以理解為該對像包含的內容或具有的特點。
蘋果是有顏色的,顏色就是蘋果的屬性。我的衣服,衣服就是我的屬性。
Sheet2工作表的A2單元格,A2單元格是Sheet2工作表的屬性;A2單元格的字體,字體是A2單元格的屬性;字體的顏色,顏色是字體的屬性。
「的」字後面的,總是「的」字前面的對象的屬性。
在VBA中,用點(.)代替「的」字:
我的衣服→我.衣服
Sheet2工作表的A2單元格的字體的顏色→Worksheets(「Sheet2」).Range(「A2」).Font.Color
對象的相對性
某些對象的某些屬性,返回的是另一個對象,如Sheet1工作表的Range 屬性,返回的是e對像(即單元格),但單元格本身也是一種對象。作為一種對象,它也有自己的屬性,如字體(Font),而字體也是對象,也有屬性,如顏色。
對像和屬性是相對的。單元格相對於字體是對象,相對於工作表是屬性。
如果想準確地知道Value(或其他)是方法還是屬性,可以在【代碼窗口】中將光標定位到它的中間,按F1鍵,查看幫助裡的信息,如圖3-26所示。
圖3-26 查看Value的幫助信息
3.4.3 對象的方法
什麼是方法
方法是在對像上執行的某個操作,屬於動詞。
如剪切單元格,剪切是在單元格上執行的操作,就是Range對象的方法;選中工作表,選中是在工作表上執行的操作,就是Wroksheet對象的方法;保存工作簿,保存就是Workbook對象的方法……
方法和屬性的區別
屬性返回對像包含的內容或具有的特點,如顏色、大小等。方法是對對象的一種操作,如選中、激活等。
怎樣分辨方法和屬性
除了通過查看幫助來分辨屬性和方法,還可以在【代碼窗口】中按<Ctrl+J>組合鍵,或者在對象的後面寫上點,在自動顯示的【屬性/方法列表】中根據圖標的顏色來分辨,帶綠色圖標的項是方法,其他的都是屬性,如圖3-27所示。
圖3-27 對象的屬性/方法列表
如果在對象的後面輸入點後沒有顯示【屬性/方法列表】,則先在【選項】對話框的【編輯器】選項卡裡勾選【自動列出成員】復選框,如圖3-27所示。
圖3-28 設置自動列出成員