怎么使用VBA對象庫

2018-11-12 11:19 更新

在前面的例子里,你學(xué)習(xí)使用了Excel對象庫里的Shapes(圖形)集合成員的屬性。Excel庫包含專門使用Excel的對象,而VBA庫則提供對許多內(nèi)置VBA函數(shù)的訪問,這些函數(shù)按類別分組。這些函數(shù)是通用的,它們使你能夠管理文件,設(shè)置日期和時間,與用戶交流,轉(zhuǎn)換數(shù)據(jù)類型,處理文本串或者進行數(shù)學(xué)計算。在下面的練習(xí)中,你將學(xué)習(xí)如何使用內(nèi)置的VBA函數(shù)來創(chuàng)建一個新文件夾,而不需要離開Excel界面:


1.回到模塊Manipulations,那里有你的MoveTextBox和MoveCircle過程
2.  輸入一個新的過程:
Sub NewFolder()
3.  點擊回車鍵,VB會自動輸入結(jié)束關(guān)鍵詞End Sub
4.  按下F2激活對象瀏覽器
5.  在“工程/庫”列表框里選擇VBA
6.  在搜索文本框里輸入file并且回車
7.  滾動成員列表框,并且選中MkDir方法(參見圖2-21)
8.  點擊對象瀏覽器上的“復(fù)制”按鈕,將被選擇的方法名稱復(fù)制到剪貼板



圖2-21 編寫過程時,向?qū)ο鬄g覽器尋求幫助來找內(nèi)置的VBA函數(shù)


9.  返回Manipulations窗口,并且將復(fù)制的指令粘貼到NewFolder過程
10. 輸入一個空格,接著是”C:\Study”。確保你在引號里輸入了整個路徑名。NewFolder過程為:

Sub NewFolder()
     MkDir "C:\Study" 
End Sub

11. 運行過程NewFolder

當(dāng)你運行NewFolder過程,VB在C盤上創(chuàng)建了一個新的文件夾。激活Windows瀏覽器可以查看該新文件夾。創(chuàng)建一個新的文件夾后,你可能會發(fā)現(xiàn)你根本就不需要它,雖然你可以輕易地從Windows瀏覽器里刪除該文件夾,但是,如何從編程上去掉它呢?對象瀏覽器上列出了許多對文件夾和文件操作很有幫助的其它方法。RmDir方法正如MkDir 方法一樣使用簡單。想要刪除你硬盤上的“Study”文件夾,只要將MkDir方法換成RmDir方法然后重新運行NewFolder過程就可以了。或者,你也可以創(chuàng)建一個新的過程RemoveFolder,如下:

Sub RemoveFolder()

RmDir "C:\Study"

End Sub

RmDir方法允許你從硬盤上刪除不需要的文件夾。

用對象瀏覽器來定位過程

除了定位對象,屬性和方法外,對象瀏覽器還是個定位在不同工程里面的過程非常方便的工具。下
面的例子給你演示如何查看存在“Personal”工作簿里面的過程:

1.  激活對象瀏覽器并且選擇工程/庫下拉列表里的Personal。(因為我沒有Personal這個文件。。。)


圖2-22 對象瀏覽器列出所有在某個特定VBA工程里可用的過程

對象瀏覽器的左邊顯示所選工程里面對象名稱,而右邊則列出了所有可用的過程。

2.雙擊NewFolder過程名稱,VB將光標(biāo)定位到該過程的第一行

3.關(guān)閉對象瀏覽器

使用立即窗口

在你開始創(chuàng)建一個完善的VBA過程前(在下一章),先來做一些熱身練習(xí),增加你的VBA詞匯。你怎樣才能學(xué)得快而且沒有痛苦?你如何試驗一下一些新學(xué)的VBA指令?這里有一些簡短的,互動的語言練習(xí):輸入一個簡單的VBA指令,Excel會檢查并且將結(jié)果顯示在下一行。我們開始來設(shè)定你的練習(xí)屏幕:

1.在VB編輯器窗口,選擇“視圖”-“立即窗口”
在決定使用在你自己的VBA過程之前,立即窗口可以用來試驗VB語言中不同的指令,函數(shù)和運算符。這是一個非常好的調(diào)試新語言的工具,你輸入在這個窗口里面的指令,將會立即顯示結(jié)果。

立即窗口可以在VB編輯器窗口上任意移動,也可以設(shè)置為可連接的,這樣它就會出現(xiàn)在相同的地方??梢酝ㄟ^選項對話框上的“可連接的”頁來打開或關(guān)閉可連接設(shè)置。在VB編輯器窗口上按下Ctrl+G就可以快速訪問立即窗口。立即窗口允許你輸入VBA語句,并且測試它們的結(jié)果,而不需要寫成一個過程。立即窗口就像一個草稿板,你可以用它測試你的語句。如果該語句輸出了你希望的結(jié)果,你就可以將立即窗口上的語句復(fù)制到你的過程中去(或者,你也可以將語句拖曳到代碼窗口,如果代碼窗口是可見的)

2.
將Excel和VB編輯器窗口并排排列
3.
在立即窗口里輸入下述指令,并且回車

Worksheets("Sheet2").Activate

當(dāng)你按下回車鍵,VB開始工作,如果你上面輸入的語句是正確的話,VBA激活當(dāng)前工作簿里的第二個工作表。工作簿底部的Sheet2這時應(yīng)該是突出顯示的。

4.
在立即窗口,輸入其它VBA語句并回車

Range("A1:A4").Select

你一旦按下回車,VB將選中當(dāng)前工作表的A1,A2,A3和A4

5.
在立即窗口里輸入下述指令:

[A1:A4].Value = 55

當(dāng)你按下回車,VB在A1:A4中的每個單元格里放置數(shù)字55。上面的語句是引用Range對象的一種所寫方式,完整的語法可讀性更強:

Range("A1:A4").Value = 55


圖2-23 將Excel和VB窗口并排排列讓你可以觀察指令的運行

6.在立即窗口輸入下述指令:

Selection.ClearContents

7.回車后,VBA清除所選單元格區(qū)域的內(nèi)容,區(qū)域A1:A4現(xiàn)在是空的

在立即窗口輸入下述指令:

ActiveCell.Select

回車后,VB激活A(yù)1單元格


圖2-24 在立即窗口里輸入指令,一旦你按下回車鍵,指令就會被執(zhí)行

圖2-24顯示了上面練習(xí)中在立即窗口里輸入的所有指令。你每次按下回車鍵后,Excel總是執(zhí)行光標(biāo)所在行的語句。如果你想要再次執(zhí)行同一指令,那么點擊該指令行的任意位置,回車。為了更多的練習(xí),重新運行圖2-24里語句,從立即窗口的第二行指令開始,點擊合適的地方并回車,一個一個地執(zhí)行這些指令。

獲取立即窗口里的信息

到目前為止,你已經(jīng)使用立即窗口執(zhí)行操作了,這些操作也可以是手動地在工作表的任意區(qū)域點擊鼠標(biāo)并且輸入數(shù)據(jù)。立即窗口也允許你問問題。假設(shè)你想要找到下面問題的答案:“現(xiàn)在選中的是哪些單元格?”,“當(dāng)前單元格里的值是多少?”,“當(dāng)前工作表的名稱是什么?”,“當(dāng)前窗口的編號是多少?”使用立即窗口,你可以輕易地找到這些問題,以及其它問題的答案。在前面的例子里,你輸入了好幾個指令,讓我們返回立即窗口去問幾個問題。Excel甚至在你關(guān)閉了立即窗口后還能記住你在立即窗口里輸入的指令。當(dāng)你退出Excel時,立即窗口的內(nèi)容自動會被刪除。

1.  鼠標(biāo)點擊立即窗口第二行你輸入Range("A1:A4").Select的任意地方

2.  回車,讓Excel再次選擇單元格A1:A4

3.  在立即窗口新的一行輸入下面的問題:

?Selection.Address

當(dāng)你按回車,Excel不會選擇工作表的任何東西,取而代之,立即窗口上會在另外一行顯示該指令的結(jié)果。在該例中,Excel返回的是當(dāng)前被選擇的單元格的絕對地址($A$1:$A$4)。問號(?)告訴Excel在立即窗口顯示指令的結(jié)果。除了問號,你還可以使用Print關(guān)鍵字。讓我們使用關(guān)鍵字Print問工作表名稱

4.  在立即窗口新的一行,輸入下述問題:

Print ActiveWorkbook.Name

回車后,Excel在立即窗口新的一行輸入了當(dāng)前工作簿的名稱。找找應(yīng)用程序的名稱如何?Chap02.xls的父對象是誰?

5.  在立即窗口新的一行,輸入下述問題:

?Application.Name

Excel會顯示它自己的全名:Microsoft Excel

立即窗口也可以用來做一個快速計算

6.  在立即窗口新的一行,輸入下述問題:

?12/3

回車后,Excel會在下一行顯示該除法運算的結(jié)果。但是,萬一你想立即知道3+2和12*8的結(jié)果呢?你可以將它們輸入在一行,而不必分成兩行,例如:?3+2:?12*8
注意,冒號將兩個代碼塊分割開來。

當(dāng)你按下回車鍵,Excel分別在立即窗口的兩行顯示結(jié)果5,96。下面是你在立即窗口里輸入的所有指令,以及Excel對你問題的回答:

Worksheets("Sheet2").Activate
Range("A1:A4").Select
[A1:A4].Value = 55
Selection.ClearContents
ActiveCell.Select
?Selection.Address
$A$1:$A$4
Print ActiveWorkbook.Name
Chap02.xls
?Application.Name
Microsoft Excel
?12/3
4
?3+2:?12*8
5
96

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號