完善Excel宏代碼的步驟及技巧

錄製宏後,你可能會發現宏可以進行一些別的操作。如果你已經熟悉了VB語言,要往宏裡面加指令並不是一件困難的事情。然而,在絕大多數情況下,你可以將這些工作交給Excel宏錄製器,從而更有效地完成這項工作。你也許會說,Excel錄製了太多的不需要的指令。但是,肯定的是,宏錄製器不會犯錯,你完全可以依賴於它。

如果你想要通過宏錄製器在你的代碼裡添加指令,那麼你必須錄製一個新宏,然後複製需要的部分再粘貼到原來代碼的正確位置。

我們來給A1:B3添加粗邊框:


完善Excel宏代碼的步驟及技巧


如果你從VB編輯器運行宏時,想觀察宏的運行情況,你必須將Excel界面和VB編輯器並排地佈置在一起

1、激活圖1-6看到的Excel界面

2、選擇“工具”-“宏”-“錄製新宏”

3、在宏對話框點擊確定,接受默認的宏名並開始錄製

4、選擇區域A1:B3

5、選擇“格式”-“單元格”,點擊“邊框”頁

6、在“邊框樣式”部分,點擊“外部”按鈕

7、在邊框粗細列表,點擊最粗的,再點擊確定關閉對話框

8、點擊單元格A1。注意,A1:B3區域有了粗邊框。

9、點擊“停止錄製”按鈕,或者選擇“工具”-“宏”-“停止錄製”

切換置VB編輯器窗口,查看你錄製的宏。給A1:B3(譯者:原文為A1:A3)添加粗邊框的代碼如下:

Sub Macro2()

'

' Macro2 Macro

' Macro recorded 5/31/2002 by Julitta Korol

'

'

Range("A1:B3").Select

Selection.Borders(xlDiagonalDown).LineStyle = xlNone

Selection.Borders(xlDiagonalUp).LineStyle = xlNone

With Selection.Borders(xlEdgeLeft)

.LineStyle = xlContinuous

.Weight = xlThick

.ColorIndex = xlAutomatic

End With

With Selection.Borders(xlEdgeTop)

.LineStyle = xlContinuous

.Weight = xlThick

.ColorIndex = xlAutomatic

End With

With Selection.Borders(xlEdgeBottom)

.LineStyle = xlContinuous

.Weight = xlThick

.ColorIndex = xlAutomatic

End With

With Selection.Borders(xlEdgeRight)

.LineStyle = xlContinuous

.Weight = xlThick

.ColorIndex = xlAutomatic

End With

Selection.Borders(xlInsideVertical).LineStyle = xlNone

Selection.Borders(xlInsideHorizontal).LineStyle = xlNone

Range("A1").Select

End Sub

現在,我們來分析一下這些錄製的代碼。你認為你可以去掉其中的一些指令嗎?在你刪除這些不必要的代碼之前,考慮使用註釋。在你刪除任何代碼之前,請將它們註釋掉,然後運行宏。如果VB沒有出現任何錯誤信息,那麼你就可以安全地刪除這些被註釋了的代碼。如果每次都按照這個指導思想,你就不會重複錄製相同的操作了如果這個宏命令沒有正確地運行,那麼你需要去掉剛才的註釋,畢竟,這些代碼可能是必須的。

當你使用宏錄製器來創建宏的時候,你可以很快地掌握Excel菜單選項和對話框設置在VBA裡的等同方法。然後,你可以在在線幫助裡面查找這些VB指令的意思和用法。很顯然,VB要執行越多的指令,宏運行的速度就越慢。去掉那些無關緊要的命令會加速宏的運行。然而,為了使你的代碼容易理解,你需要戴上你的偵探帽子,尋求最佳途徑。

例如,看一下你錄製的給選中的單元格加外框的宏。看上去,宏錄製器是在分別地給每一條線進行設置。VB沒有一個簡單的一句命令來給選中的區域加外邊框,這似乎很難理解。學習任何語言中正確的詞語和表達是很費時的。時間一長,你會發現VB實際上有一個另外的方法BorderAround讓你在單元格區域添加邊框和設置顏色,線型和新邊框的粗細。

下面的語句是VBA中給選中的單元格設置外圍粗邊框的最佳方法:

Range("A1:B3").BorderAround Weight:=xlThick

26

上面的指令使用Range對象的BorderAround方法。它給A1:B3區域添加了一個粗線外框。(下一章涵蓋了VB對象,屬性和方法)。

現在我們將上面的指令加到宏WhatsInACell裡面去:

1、激活含有宏WhatsInACell的代碼窗口

2、在ActiveCell.FormulaR1C1 = "Formulas"之後插入一行

3、在空白行加入以下指令:

Range("A1:B3").BorderAround Weight:=xlThick 4

4、光標放在宏代碼的任何位置,按F5運行修改好的代碼。

技巧:附加指令

要在現存的代碼中添加指令的話,通過在需要的位置按回車鍵加入空白行,並且輸入必要的VB語句。如果附加指令是鍵盤操作或菜單命令的話,你可以使用宏錄製器來創建必要的代碼,然後將它們複製粘貼到原來的宏裡面。

假設你想要VB在執行完最後一行代碼時給你提示,這種操作是不可能被錄製下來的,因為Excel沒有相應的菜單選項。但是,你可以手動使用VB語言在你的代碼裡面添加指令。

1、在代碼窗口下,在End Sub前回車

2、光標放在空白行,輸入下列語句:

MsgBox "所有操作都已完成。"(譯者:英文狀態下的引號。)

3、確保光標在代碼裡,按下F5

4、VB執行完最後一個指令後,彈出這個信息。點擊確定。你現在知道宏已經運行完成。

MsgBox是用得非常頻繁的VBA函數之一,你將在後面的章節中學習它的使用。

重新命名宏

在代碼裡面添加了一些代碼後,為了更好地反映這個宏的目的,你需要將其改名。過程的名稱應該越接近它的功能越好。你不需要按任何鍵就可以更改宏名。在代碼窗口,你將關鍵詞Sub後面老的宏名清除,並且打入新的名稱即可。


分享到:


相關文章: