盡管一行VBA代碼最多可以包含1024個字母,但是,為了使你個過程容易閱讀,最好將長的語句打斷為兩行甚至多行。VB使用一個專門的連續(xù)線(下劃線)置于一行代碼的末尾,表明下一行是這行的連續(xù)。例如:
Selection.PasteSpecial _
Paste:=xlValues, _
Operation:=xlMultiply, _
SkipBlanks: =False, _
Transpose:=False
這個連續(xù)符是下劃線,你必須在下劃線之后帶一個空格。
你可以在下述幾種情況中使用連續(xù)符:
1、運算符之前或者之后。例如:&,+,Like,NOT,AND
?
2、逗號之前或者之后
3、冒號和等號(:=)之前或者之后
?
4、等號之前或者之后
你不可以在冒號和等于號之間使用連續(xù)符,例如,下面的代碼VB是不認的:
Selection.PasteSpecial Paste: _
=xlValues, Operation: _
=xlMultiply, SkipBlanks: _
=False, Transpose: _
=False Selection.PasteSpecial Paste: _
=xlValues, Operation: _
=xlMultiply, SkipBlanks: _
=False, Transpose: _
=False
同樣,在引號之內(nèi)的文本之間加連續(xù)符也是不對的,例如,下面的下劃線的使用是無效的:
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比較容易幫助你發(fā)現(xiàn)這種類型的錯誤。為了讓VB在你輸入一行代碼后,自動幫你檢測
語法的正確性,你需要在VB窗口的“工具”-“選項”里,確保勾選了“編輯器”頁上的“自動語
法檢測”。

圖2-7 選項對話框的編輯器上的“自動語法檢測”幫你檢查VBA過程里的打字錯誤
圖2-8 這個錯誤由于漏掉了常數(shù)xlCellType前面的括號而產(chǎn)生
圖2-9 當VB試圖在工作表或單元格區(qū)域里選擇一個并不存在的單元格時,就會產(chǎn)生一個運行時間
錯誤
查找語法錯誤可能是煩人的并且費時的事情。有些語法錯誤只有在過程運行的時候才能被發(fā)現(xiàn)。在試圖運行你的過程的時候,VB可能找到那種因為使用了無效的自變量,或者是漏掉了那些需要成對使用的指令如If語句和循環(huán)結構,而造成的錯誤。
技巧:程序調(diào)試
你很可能不只一次聽過“計算機程序里充滿了錯誤”。在編程里,錯誤就被稱為“bug”(錯誤,漏洞),而“調(diào)試”(debug)則是給你的程序除錯的過程。調(diào)試的第一步就是改正所有的語法錯誤。
VB提供了無數(shù)種工具,你可以使用它們來追蹤和消除錯誤。在本章中,你將知道如何使用VB助手幫助你在編寫程序時出現(xiàn)盡可能少的錯誤;在第十三章中,你將學習如何使用專門的調(diào)試工具來捕獲你VBA程序里的錯誤。
除了語法錯誤外,還有其它兩種錯誤:運行時間和邏輯。運行時間錯誤發(fā)生在過程運行的時候。圖2-9顯示了一種典型的運行時間錯誤。運行時間錯誤經(jīng)常發(fā)生在那些程序員在編寫代碼的時候沒有想到的情況。例如,當程序試圖訪問一個用戶電腦上并不存在的驅動器或者文件,或者沒有首先檢查是否用戶插入軟盤并關閉軟驅口而試圖復制一個文件到軟盤,這時就會發(fā)生運行時間錯誤。
第三種錯誤——邏輯錯誤,通常不會發(fā)出明確的錯誤信息。過程可能沒有語法錯誤,甚至運行無誤,然而,得到的卻是錯誤的結果。邏輯錯誤通常非常難以查找,并且它藏得很隱秘,間歇發(fā)生,你不能指望花幾個小時,甚至幾天,就能找到錯誤源。
查找?guī)椭?/h2>
當你使用宏錄制器時,你所有的操作都被翻譯成VBA指令,并且放置在一個模塊里。你在研究這些錄制的過程時,不要忘記幫助隨時可用。你會發(fā)現(xiàn)有些代碼的意思可能會非常易懂,然而,有些卻不怎么明白。這時候,你就需要尋求幫助了。當你獨自工作時,只要輕輕一點或者輕輕一按就可以請教你的VBA老師了。使用VB在線幫助比使用詞典或參考手冊要快捷和容易得多。如果你討厭一頁一頁地在詞典里找你需要的術語,你將驚訝于你如何快地從VB代碼窗口找到需要的幫助頁面。
讓我們來檢查你如何通過內(nèi)置的VBA老師的幫助,將WhatsInACell過程里的第一句變成你自己的VBA詞匯:
Selection.SpecialCells(xlCellTypeConstants, 2).Select
上面的指令可以打斷為三部分,哪些部分?Selection是對象還是屬性?SpecialCells是什么?
Select是什么?要回答這些問題,請依照下面的操作:
1. 激活你要分析的過程的代碼窗口
2. 點擊你不懂的詞語
3. 按下F1
圖2-10 VBA的對象,屬性和方法在在線幫助里解釋得很詳細
幫助就會顯示相應的頁面。如果你的光標放在詞語“Selection”中間,你就會知道Selection可以是一個應用程序的屬性,也可以是一個窗口對象。如果你的光標在下一個不明白的術語(SpecialCells)并且按上面的步驟再做一遍后,你將看到SpecialCells幫助屏幕(參見圖2-10)。
注意,每個幫助主題包含許多信息。被查找的指令類型顯示在幫助窗口的上面;指令的類型允許詞語分類。例如,SpecialCells是方法,可以使用這個方法的對象名稱列在“應用于”下面(點擊“應用于”,出現(xiàn)對象名稱列表)。指令名稱下面的“參閱”和“示例”讓你快速地跳到其它應用或意義相似的指令,以及查看使用這個指令的例子。指令的意義顯示在“參閱”和“示例”標題的下面。接下來則是語法和需要的自變量和其它參數(shù)?!罢f明”部分給出一些推薦使用該指令的情
形。
你可以很容易地將示例中的代碼復制到你的過程中去:選中你要復制的代碼行,按下Ctrl+C,或者單擊右鍵,選擇快捷菜單上的“復制”,然后切換到VB代碼窗口,點擊你需要粘貼代碼的地方,再按下Ctrl+V或者選擇“編輯”-“粘貼”。
更多建議: