盡管一行VBA代碼最多可以包含1024個(gè)字母,但是,為了使你個(gè)過程容易閱讀,最好將長(zhǎng)的語句打斷為兩行甚至多行。VB使用一個(gè)專門的連續(xù)線(下劃線)置于一行代碼的末尾,表明下一行是這行的連續(xù)。例如:
Selection.PasteSpecial _
Paste:=xlValues, _
Operation:=xlMultiply, _
SkipBlanks: =False, _
Transpose:=False
這個(gè)連續(xù)符是下劃線,你必須在下劃線之后帶一個(gè)空格。
你可以在下述幾種情況中使用連續(xù)符:
1、運(yùn)算符之前或者之后。例如:&,+,Like,NOT,AND
?
2、逗號(hào)之前或者之后
3、冒號(hào)和等號(hào)(:=)之前或者之后
?
4、等號(hào)之前或者之后
你不可以在冒號(hào)和等于號(hào)之間使用連續(xù)符,例如,下面的代碼VB是不認(rèn)的:
Selection.PasteSpecial Paste: _
=xlValues, Operation: _
=xlMultiply, SkipBlanks: _
=False, Transpose: _
=False Selection.PasteSpecial Paste: _
=xlValues, Operation: _
=xlMultiply, SkipBlanks: _
=False, Transpose: _
=False
同樣,在引號(hào)之內(nèi)的文本之間加連續(xù)符也是不對(duì)的,例如,下面的下劃線的使用是無效的:
MsgBox "To continue the long instruction, use the _
line continuation character."
上面的指令應(yīng)該打斷為如下代碼:
MsgBox "To continue the long instruction, use the " & _
"line continuation character."
了解VBA錯(cuò)誤
在編寫或編輯VBA過程之中,無論你多么小心,出錯(cuò)的可能性還是很大的。例如,你可以錯(cuò)誤拼寫
一語句,放錯(cuò)了一個(gè)逗號(hào)或引號(hào),或者忘記了一個(gè)句號(hào)或右括號(hào)。這些類型的錯(cuò)誤稱為句法錯(cuò)誤。
幸運(yùn)的是,VB比較容易幫助你發(fā)現(xiàn)這種類型的錯(cuò)誤。為了讓VB在你輸入一行代碼后,自動(dòng)幫你檢測(cè)
語法的正確性,你需要在VB窗口的“工具”-“選項(xiàng)”里,確保勾選了“編輯器”頁上的“自動(dòng)語
法檢測(cè)”。

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