怎麼打斷很長的VBA語句

儘管一行VBA代碼最多可以包含1024個字母,但是,為了使你個過程容易閱讀,最好將長的語句打斷為兩行甚至多行。VB使用一個專門的連續線(下劃線)置於一行代碼的末尾,表明下一行是這行的連續。例如:

Selection.PasteSpecial _

Paste:=xlValues, _

Operation:=xlMultiply, _

SkipBlanks: =False, _

Transpose:=False

這個連續符是下劃線,你必須在下劃線之後帶一個空格。

你可以在下述幾種情況中使用連續符:

1、運算符之前或者之後。例如:&,+,Like,NOT,AND

„

2、逗號之前或者之後

3、冒號和等號(:=)之前或者之後

„

4、等號之前或者之後

你不可以在冒號和等於號之間使用連續符,例如,下面的代碼VB是不認的:

Selection.PasteSpecial Paste: _

=xlValues, Operation: _

=xlMultiply, SkipBlanks: _

=False, Transpose: _

=False Selection.PasteSpecial Paste: _

=xlValues, Operation: _

=xlMultiply, SkipBlanks: _

=False, Transpose: _

=False

同樣,在引號之內的文本之間加連續符也是不對的,例如,下面的下劃線的使用是無效的:

MsgBox "To continue the long instruction, use the _

line continuation character."

上面的指令應該打斷為如下代碼:

MsgBox "To continue the long instruction, use the " & _

"line continuation character."

瞭解VBA錯誤

在編寫或編輯VBA過程之中,無論你多名小心,出錯的可能性還是很打的。例如,你可以錯誤拼寫

一語句,放錯了一個逗號或引號,或者忘記了一個句號或右括號。這些類型的錯誤稱為句法錯誤。

幸運的是,VB比較容易幫助你發現這種類型的錯誤。為了讓VB在你輸入一行代碼後,自動幫你檢測

語法的正確性,你需要在VB窗口的“工具”-“選項”裡,確保勾選了“編輯器”頁上的“自動語

法檢測”。

怎麼打斷很長的VBA語句


圖2-7 選項對話框的編輯器上的“自動語法檢測”幫你檢查VBA過程裡的打字錯誤


怎麼打斷很長的VBA語句


圖2-8 這個錯誤由於漏掉了常數xlCellType前面的括號而產生


怎麼打斷很長的VBA語句


圖2-9 當VB試圖在工作表或單元格區域裡選擇一個並不存在的單元格時,就會產生一個運行時間

錯誤

查找語法錯誤可能是煩人的並且費時的事情。有些語法錯誤只有在過程運行的時候才能被發現。在試圖運行你的過程的時候,VB可能找到那種因為使用了無效的自變量,或者是漏掉了那些需要成對使用的指令如If語句和循環結構,而造成的錯誤。

技巧:程序調試

你很可能不只一次聽過“計算機程序裡充滿了錯誤”。在編程裡,錯誤就被稱為“bug”(錯誤,漏洞),而“調試”(debug)則是給你的程序除錯的過程。調試的第一步就是改正所有的語法錯誤。

VB提供了無數種工具,你可以使用它們來追蹤和消除錯誤。在本章中,你將知道如何使用VB助手幫助你在編寫程序時出現儘可能少的錯誤;在第十三章中,你將學習如何使用專門的調試工具來捕獲你VBA程序裡的錯誤。

除了語法錯誤外,還有其它兩種錯誤:運行時間和邏輯。運行時間錯誤發生在過程運行的時候。圖2-9顯示了一種典型的運行時間錯誤。運行時間錯誤經常發生在那些程序員在編寫代碼的時候沒有想到的情況。例如,當程序試圖訪問一個用戶電腦上並不存在的驅動器或者文件,或者沒有首先檢查是否用戶插入軟盤並關閉軟驅口而試圖複製一個文件到軟盤,這時就會發生運行時間錯誤。

第三種錯誤——邏輯錯誤,通常不會發出明確的錯誤信息。過程可能沒有語法錯誤,甚至運行無誤,然而,得到的卻是錯誤的結果。邏輯錯誤通常非常難以查找,並且它藏得很隱秘,間歇發生,你不能指望花幾個小時,甚至幾天,就能找到錯誤源。

查找幫助

當你使用宏錄製器時,你所有的操作都被翻譯成VBA指令,並且放置在一個模塊裡。你在研究這些錄製的過程時,不要忘記幫助隨時可用。你會發現有些代碼的意思可能會非常易懂,然而,有效卻不怎麼明白。這時候,你就需要尋求幫助了。當你獨自工作時,只要輕輕一點或者輕輕一按就可以請教你的VBA老師了。使用VB在線幫助比使用詞典或參考手冊要快捷和容易得多。如果你討厭一頁一頁地在詞典裡找你需要的術語,你將驚訝於你如何快地從VB代碼窗口找到需要的幫助頁面。

讓我們來檢查你如何通過內置的VBA老師的幫助,將WhatsInACell過程裡的第一句變成你自己的VBA詞彙:

Selection.SpecialCells(xlCellTypeConstants, 2).Select

上面的指令可以打斷為三部分,哪些部分?Selection是對象還是屬性?SpecialCells是什麼?

Select是什麼?要回答這些問題,請依照下面的操作:

1. 激活你要分析的過程的代碼窗口

2. 點擊你不懂的詞語

3. 按下F1


怎麼打斷很長的VBA語句


圖2-10 VBA的對象,屬性和方法在在線幫助裡解釋得很詳細

幫助就會顯示相應的頁面。如果你的光標放在詞語“Selection”中間,你就會知道Selection可以是一個應用程序的屬性,也可以是一個窗口對象。如果你的光標在下一個不明白的術語(SpecialCells)並且按上面的步驟再做一遍後,你將看到SpecialCells幫助屏幕(參見圖2-10)。

注意,每個幫助主題包含許多信息。被查找的指令類型顯示在幫助窗口的上面;指令的類型允許詞語分類。例如,SpecialCells是方法,可以使用這個方法的對象名稱列在“應用於”下面(點擊“應用於”,出現對象名稱列表)。指令名稱下面的“參閱”和“示例”讓你快速地跳到其它應用或意義相似的指令,以及查看使用這個指令的例子。指令的意義顯示在“參閱”和“示例”標題的下面。接下來則是語法和需要的自變量和其它參數。“說明”部分給出一些推薦使用該指令的情

形。

你可以很容易地將示例中的代碼複製到你的過程中去:選中你要複製的代碼行,按下Ctrl+C,或者單擊右鍵,選擇快捷菜單上的“複製”,然後切換到VB代碼窗口,點擊你需要粘貼代碼的地方,再按下Ctrl+V或者選擇“編輯”-“粘貼”。


分享到:


相關文章: