錄製宏後,你可能會發現宏可以進行一些別的操作。如果你已經熟悉了VB語言,要往宏裡面加指令並不是一件困難的事情。然而,在絕大多數情況下,你可以將這些工作交給Excel宏錄製器,從而更有效地完成這項工作。你也許會說,Excel錄製了太多的不需要的指令。但是,肯定的是,宏錄製器不會犯錯,你完全可以依賴於它。
如果你想要通過宏錄製器在你的代碼裡添加指令,那麼你必須錄製一個新宏,然後複製需要的部分再粘貼到原來代碼的正確位置。
我們來給A1:B3添加粗邊框:

如果你從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後面老的宏名清除,並且打入新的名稱即可。
閱讀更多 Excel技巧和VBA技術 的文章