怎麼使用VBA對象庫

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

1.回到模塊Manipulations,那裡有你的MoveTextBox和MoveCircle過程

2. 輸入一個新的過程:

Sub NewFolder()

3. 點擊回車鍵,VB會自動輸入結束關鍵詞End Sub

4. 按下F2激活對象瀏覽器

5. 在“工程/庫”列表框裡選擇VBA

6. 在搜索文本框裡輸入file並且回車

7. 滾動成員列表框,並且選中MkDir方法(參見圖2-21)

8. 點擊對象瀏覽器上的“複製”按鈕,將被選擇的方法名稱複製到剪貼板


怎麼使用VBA對象庫


圖2-21 編寫過程時,向對象瀏覽器尋求幫助來找內置的VBA函數

9. 返回Manipulations窗口,並且將複製的指令粘貼到NewFolder過程

10. 輸入一個空格,接著是”C:\\Study”。確保你在引號裡輸入了整個路徑名。NewFolder過程為:

Sub NewFolder()

MkDir "C:\\Study"

End Sub

11. 運行過程NewFolder

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

Sub RemoveFolder()

RmDir "C:\\Study"

End Sub

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

用對象瀏覽器來定位過程

除了定位對象,屬性和方法外,對象瀏覽器還是個定位在不同工程裡面的過程非常方便的工具。下

面的例子給你演示如何查看存在“Personal”工作簿裡面的過程:

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


怎麼使用VBA對象庫


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

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

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

3.關閉對象瀏覽器

使用立即窗口

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

1.在VB編輯器窗口,選擇“視圖”-“立即窗口”

在決定使用在你自己的VBA過程之前,立即窗口可以用來試驗VB語言中不同的指令,函數和運算符。這是一個非常好的調試新語言的工具,你輸入在這個窗口裡面的指令,將會立即顯示結果。

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

2.將Excel和VB編輯器窗口並排排列

3.在立即窗口裡輸入下述指令,並且回車

Worksheets("Sheet2").Activate

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

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

Range("A1:A4").Select

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

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

[A1:A4].Value = 55

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

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

怎麼使用VBA對象庫


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

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

Selection.ClearContents

7.回車後,VBA清除所選單元格區域的內容,區域A1:A4現在是空的

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

ActiveCell.Select

回車後,VB激活A1單元格

怎麼使用VBA對象庫


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

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

獲取立即窗口裡的信息

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

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

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

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

?Selection.Address

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

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

Print ActiveWorkbook.Name

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

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

?Application.Name

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

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

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

?12/3

回車後,Excel會在下一行顯示該除法運算的結果。但是,萬一你想立即知道3+2和12*8的結果呢?你可以將它們輸入在一行,而不必分成兩行,例如:?3+2:?12*8

注意,冒號將兩個代碼塊分割開來。

當你按下回車鍵,Excel分別在立即窗口的兩行顯示結果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


分享到:


相關文章: