如果你想要在VBA眾多的組件和功能中自由切換,那么可以使用對(duì)象瀏覽器。這個(gè)專門的內(nèi)置工具在VB編輯器窗口是可用的。使用下面任何一種方法都可以訪問對(duì)象瀏覽器:

圖2-16 對(duì)象瀏覽器讓你在當(dāng)前VBA工程里可用的所有對(duì)象,屬性和方法里瀏覽
1、按F2
2、選擇“視圖”-“對(duì)象瀏覽器”
3、點(diǎn)擊工具條上的“對(duì)象瀏覽器”按鈕
對(duì)象瀏覽器讓你瀏覽VBA過程中可用的對(duì)象,也可以查看它們的屬性,方法和事件。在對(duì)象瀏覽器的幫助下,你可以在VBA工程的多個(gè)過程之間快速移動(dòng)。
對(duì)象瀏覽器分為三部分(參見圖2-16)。窗口的上部顯示“工程/庫”下拉列表,這里列出了所有庫名稱以及當(dāng)前VBA工程里可用的所有工程名稱。庫是包含一個(gè)應(yīng)用程序里對(duì)象的信息的專門文件。新的庫可以通過“引用”對(duì)話框(“工具”-“引用”)來添加。<所有庫>列出了你電腦上安裝了的所有庫中的所有對(duì)象。當(dāng)你選擇一個(gè)叫“Excel”的庫時(shí),僅僅能在Excel里執(zhí)行的對(duì)象名稱才能被看到。和Excel庫相反,VBA庫列出了所有能在VBA里執(zhí)行的對(duì)象名稱。
在“工程/庫”下拉列表框下面,有一個(gè)“搜索”文本框,讓你可以快速地在某個(gè)庫里搜索你的信息。這個(gè)地方會(huì)記住你最近搜索的四個(gè)項(xiàng)目。在對(duì)象瀏覽器的任何地方單擊右鍵,在快捷菜單上選擇“全字匹配”,你就可以只搜索匹配整個(gè)字的內(nèi)容。對(duì)象瀏覽器上的“搜索結(jié)果”(參見圖2-16和2-17)顯示符合搜索條件的庫,類和成員。當(dāng)你輸入搜索文本并且單擊搜索按鈕,VB展開對(duì)象瀏覽器對(duì)話框以顯示搜索結(jié)果。你可以點(diǎn)擊“望遠(yuǎn)鏡”按鈕右邊的“顯示/隱藏搜索結(jié)果”來顯示或者隱藏搜索結(jié)果。

圖2-17 在對(duì)象瀏覽器里搜索答案
類列表框顯示所選中的庫里面所有可用的對(duì)象類,如果你選擇VBA工程,列表顯示該工程里的對(duì)象。在圖2-16里,CommandBarComboBox 對(duì)象類被選中了。當(dāng)你選中一個(gè)類,右邊的列表(成員)顯示該類可用的屬性,方法和事件。圖2-16上顯示了類CommandBarComboBox的一些成員。成員默認(rèn)地按字母順序列出。然而,你可以使用對(duì)象瀏覽器快捷菜單上的“組成員”來組織這些成員列表(屬性,方法或事件)。如果你選擇“工程/庫”里面的VBA工程,成員列表框列出該工程里的所有過程。
雙擊該過程名稱,就可以進(jìn)入該過程并檢查其代碼。如果你選擇類“VBA”,你將看到VB內(nèi)置的函數(shù)和常數(shù)。如果你對(duì)所選的類或成員需要更多的信息,可以點(diǎn)擊對(duì)象瀏覽器窗口上面的問號(hào)按鈕。對(duì)象瀏覽器下面的窗口顯示所選成員的代碼格式。如果你點(diǎn)擊代碼格式里綠色的連接部分,你將跳到對(duì)象瀏覽器窗口的所選成員的類或庫。代碼格式里的代碼可以被復(fù)制到Windows剪切板并且粘貼到代碼窗口里去。如果對(duì)象瀏覽器和代碼窗口都是可見的,你只要選中代碼格式里的文本,直接拖曳到代碼窗口就行了。
通過對(duì)象瀏覽器窗口上的橫豎分割線,你可以輕易地改變各個(gè)窗口的大小。你已經(jīng)發(fā)現(xiàn)了對(duì)象瀏覽器,你也許在想你如何才能讓它幫助你進(jìn)行VBA編程。假設(shè)你在工作表中央放置了一個(gè)文本框,你如何讓Excel將這個(gè)文本框移動(dòng)到工作表的左上方?
1.打開一個(gè)新工作表
2.選擇“視圖”-“工具欄”,然后點(diǎn)擊“繪圖”
3. 點(diǎn)擊“繪圖”上的文本框,在工作表中央畫一個(gè)文本框,并且隨便輸入什么文字
4. 選擇文本框之外的任意單元格
5. 按下Alt+F11激活VB編輯器窗口,并且選擇工程瀏覽器窗口的Personal (Personal.xls)
6. 選擇“插入”-“模塊”,增加一個(gè)新的模塊
7.在屬性窗口,給該模塊重命名:Manipulations
8.選擇“視圖”-“對(duì)象瀏覽器”,或按F2
9. 在“工程/庫”下拉列表框里選擇“Excel”類
10. 在搜索框里輸入“textbox”并點(diǎn)擊搜索按鈕。確保你沒有在文字間敲入空格。
圖2-18 Excel 在工作表上面的名稱框里顯示插入的對(duì)象名稱
圖2-19 使用對(duì)象瀏覽器窗口,你可以找到合適的VBA指令來編寫你自己的過程
顯示的結(jié)果表明對(duì)象Shapes掌管我們文本框操作(參見圖2-19)。從成員列表清單上看,你可以很快就知道AddTextbox方法就是用來在工作表里添加文本框的方法。代碼格式窗口顯示了使用該方法的正確語法。如果你選擇AddTextbox方法并且按F1,你將看到關(guān)于它的幫助窗口,有更詳細(xì)的關(guān)于如果使用該方法的信息(參見圖2-20)

圖2-20 要獲取對(duì)象瀏覽器找到的任何項(xiàng)目詳細(xì)信息,只要選擇整個(gè)項(xiàng)目并且按F1就可以了
當(dāng)你細(xì)看AddTextbox方法的自變量和它們?cè)趲椭翱谏系慕忉寱r(shí),你就可以很快地知道文本框在工作表中的位置是由Left和Top屬性來決定的。你需要做的只是返回代碼窗口,編寫指令來移動(dòng)文本框到工作表的左上方。
11. 關(guān)閉對(duì)象瀏覽器和幫助窗口(如果它們還是打開的)
12. 雙擊Manipulations模塊,輸入過程MoveTextBox:
Sub MoveTextBox()
With ActiveSheet.Shapes("Textbox 1") ‘Text box 1在中文版本里為“文本框1”
.Select
.Left = 0
.Top = 0
End With
End Sub
選擇“運(yùn)行”-“運(yùn)行宏”來測(cè)試這個(gè)過程
當(dāng)你返回到放置該文本框的工作表時(shí),該文本框已經(jīng)移動(dòng)到了工作表的左上方了。注意,MoveTextBox程序在Shapes集合里選擇了“Text box 1”。Text box 1是工作表里第一個(gè)對(duì)象的默認(rèn)名稱。你每次增加新的對(duì)象后,Excel將給它安排新的好碼(編號(hào))。除了使用對(duì)象名稱外,你還可以引用集合成員的編號(hào)。例如,你可以輸入:
?With ActiveSheet.Shapes(1)
?
來代替:
?With ActiveSheet.Shapes("Textbox 1")
?
我們來用VB操縱另一個(gè)對(duì)象,你自己試試。在你放置文本框的工作表里再放置一個(gè)小圓圈。使用繪圖工具上的橢圓工具畫這個(gè)圓圈。在Manipulations模塊里插入一個(gè)新的過程,并且編寫代碼來放置圓圈。記住,Excel連續(xù)地編號(hào)。第一個(gè)對(duì)象的編號(hào)為1,第二個(gè)則為2,等等,不管這個(gè)對(duì)象的類型是文本框,橢圓或者是矩形,沒有關(guān)系。下面的過程MoveCircle演示如何將當(dāng)前工作表里的橢圓移動(dòng)到左上方去:
Sub MoveCircle()
With ActiveSheet.Shapes(2)
.Select
.Left = 0
.Top = 0
End With
End Sub
移動(dòng)橢圓和移動(dòng)文本框或者放在工作表里的其它對(duì)象類似。注意,過程中引用的是對(duì)象的編號(hào),而非它的名稱橢圓 2。當(dāng)你運(yùn)行MoveCircle時(shí),Excel移動(dòng)的是橢圓,而不是文本框了。
更多建議: