怎么打斷很長的VBA語句

2021-06-25 11:44 更新

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


Selection.PasteSpecial _
             Paste:=xlValues, _
             Operation:=xlMultiply, _
             SkipBlanks: =False, _

             Transpose:=False


這個連續(xù)符是下劃線,你必須在下劃線之后帶一個空格。


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


1、運(yùn)算符之前或者之后。例如:&,+,Like,NOT,AND

?

2、逗號之前或者之后


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

?  

4、等號之前或者之后


你不可以在冒號和等于號之間使用連續(xù)符,例如,下面的代碼VB是不認(rèn)的:


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."


上面的指令應(yīng)該打斷為如下代碼:


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

             "line continuation character."


了解VBA錯誤

在編寫或編輯VBA過程之中,無論你多么小心,出錯的可能性還是很大的。例如,你可以錯誤拼寫
一語句,放錯了一個逗號或引號,或者忘記了一個句號或右括號。這些類型的錯誤稱為句法錯誤。
幸運(yùn)的是,VB比較容易幫助你發(fā)現(xiàn)這種類型的錯誤。為了讓VB在你輸入一行代碼后,自動幫你檢測
語法的正確性,你需要在VB窗口的“工具”-“選項”里,確保勾選了“編輯器”頁上的“自動語
法檢測”。

自動語法檢測

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

錯誤
圖2-8 這個錯誤由于漏掉了常數(shù)xlCellType前面的括號而產(chǎn)生

運(yùn)行時間錯誤
圖2-9 當(dāng)VB試圖在工作表或單元格區(qū)域里選擇一個并不存在的單元格時,就會產(chǎn)生一個運(yùn)行時間
錯誤

查找語法錯誤可能是煩人的并且費(fèi)時的事情。有些語法錯誤只有在過程運(yùn)行的時候才能被發(fā)現(xiàn)。在試圖運(yùn)行你的過程的時候,VB可能找到那種因為使用了無效的自變量,或者是漏掉了那些需要成對使用的指令如If語句和循環(huán)結(jié)構(gòu),而造成的錯誤。

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

VB提供了無數(shù)種工具,你可以使用它們來追蹤和消除錯誤。在本章中,你將知道如何使用VB助手幫助你在編寫程序時出現(xiàn)盡可能少的錯誤;在第十三章中,你將學(xué)習(xí)如何使用專門的調(diào)試工具來捕獲你VBA程序里的錯誤。

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

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

查找?guī)椭?/h2>
當(dāng)你使用宏錄制器時,你所有的操作都被翻譯成VBA指令,并且放置在一個模塊里。你在研究這些錄制的過程時,不要忘記幫助隨時可用。你會發(fā)現(xiàn)有些代碼的意思可能會非常易懂,然而,有些卻不怎么明白。這時候,你就需要尋求幫助了。當(dāng)你獨(dú)自工作時,只要輕輕一點(diǎn)或者輕輕一按就可以請教你的VBA老師了。使用VB在線幫助比使用詞典或參考手冊要快捷和容易得多。如果你討厭一頁一頁地在詞典里找你需要的術(shù)語,你將驚訝于你如何快地從VB代碼窗口找到需要的幫助頁面。

讓我們來檢查你如何通過內(nèi)置的VBA老師的幫助,將WhatsInACell過程里的第一句變成你自己的VBA詞匯:

Selection.SpecialCells(xlCellTypeConstants, 2).Select

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

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

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

2.  點(diǎn)擊你不懂的詞語

3.  按下F1


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

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

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

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

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號