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

2018-10-21 09:51 更新
錄制宏后,你可能會(huì)發(fā)現(xiàn)宏可以進(jìn)行一些別的操作。如果你已經(jīng)熟悉了VB語(yǔ)言,要往宏里面加指令并不是一件困難的事情。然而,在絕大多數(shù)情況下,你可以將這些工作交給Excel宏錄制器,從而更有效地完成這項(xiàng)工作。你也許會(huì)說(shuō),Excel錄制了太多的不需要的指令。但是,肯定的是,宏錄制器不會(huì)犯錯(cuò),你完全可以依賴于它。


如果你想要通過(guò)宏錄制器在你的代碼里添加指令,那么你必須錄制一個(gè)新宏,然后復(fù)制需要的部分再粘貼到原來(lái)代碼的正確位置。


我們來(lái)給A1:B3添加粗邊框:


VB編輯器

如果你從VB編輯器運(yùn)行宏時(shí),想觀察宏的運(yùn)行情況,你必須將Excel界面和VB編輯器并排地布置在一起


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


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


3、在宏對(duì)話框點(diǎn)擊確定,接受默認(rèn)的宏名并開(kāi)始錄制


4、選擇區(qū)域A1:B3


5、選擇“格式”-“單元格”,點(diǎn)擊“邊框”頁(yè)


6、在“邊框樣式”部分,點(diǎn)擊“外部”按鈕


7、在邊框粗細(xì)列表,點(diǎn)擊最粗的,再點(diǎn)擊確定關(guān)閉對(duì)話框


8、點(diǎn)擊單元格A1。注意,A1:B3區(qū)域有了粗邊框。


9、點(diǎn)擊“停止錄制”按鈕,或者選擇“工具”-“宏”-“停止錄制”


切換置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


現(xiàn)在,我們來(lái)分析一下這些錄制的代碼。你認(rèn)為你可以去掉其中的一些指令嗎?在你刪除這些不必要的代碼之前,考慮使用注釋。在你刪除任何代碼之前,請(qǐng)將它們注釋掉,然后運(yùn)行宏。如果VB沒(méi)有出現(xiàn)任何錯(cuò)誤信息,那么你就可以安全地刪除這些被注釋了的代碼。如果每次都按照這個(gè)指導(dǎo)思想,你就不會(huì)重復(fù)錄制相同的操作了如果這個(gè)宏命令沒(méi)有正確地運(yùn)行,那么你需要去掉剛才的注釋,畢竟,這些代碼可能是必須的。


當(dāng)你使用宏錄制器來(lái)創(chuàng)建宏的時(shí)候,你可以很快地掌握Excel菜單選項(xiàng)和對(duì)話框設(shè)置在VBA里的等同方法。然后,你可以在在線幫助里面查找這些VB指令的意思和用法。很顯然,VB要執(zhí)行越多的指令,宏運(yùn)行的速度就越慢。去掉那些無(wú)關(guān)緊要的命令會(huì)加速宏的運(yùn)行。然而,為了使你的代碼容易理解,你需要戴上你的偵探帽子,尋求最佳途徑。


例如,看一下你錄制的給選中的單元格加外框的宏???/span>上去,宏錄制器是在分別地給每一條線進(jìn)行設(shè)置。VB沒(méi)有一個(gè)簡(jiǎn)單的一句命令來(lái)給選中的區(qū)域加外邊框,這似乎很難理解。學(xué)習(xí)任何語(yǔ)言中正確的詞語(yǔ)和表達(dá)是很費(fèi)時(shí)的。時(shí)間一長(zhǎng),你會(huì)發(fā)現(xiàn)VB實(shí)際上有一個(gè)另外的方法BorderAround讓你在單元格區(qū)域添加邊框和設(shè)置顏色,線型和新邊框的粗細(xì)。


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

Range("A1:B3").BorderAround Weight:=xlThick
26
  
上面的指令使用Range對(duì)象的BorderAround方法。它給A1:B3區(qū)域添加了一個(gè)粗線外框。(下一章涵蓋了VB對(duì)象,屬性和方法)。


現(xiàn)在我們將上面的指令加到宏WhatsInACell里面去:


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


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


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

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


4、光標(biāo)放在宏代碼的任何位置,按F5運(yùn)行修改好的代碼。


技巧:附加指令

要在現(xiàn)存的代碼中添加指令的話,通過(guò)在需要的位置按回車鍵加入空白行,并且輸入必要的VB語(yǔ)句。如果附加指令是鍵盤(pán)操作或菜單命令的話,你可以使用宏錄制器來(lái)創(chuàng)建必要的代碼,然后將它們復(fù)制粘貼到原來(lái)的宏里面。


假設(shè)你想要VB在執(zhí)行完最后一行代碼時(shí)給你提示,這種操作是不可能被錄制下來(lái)的,因?yàn)镋xcel沒(méi)有相應(yīng)的菜單選項(xiàng)。但是,你可以手動(dòng)使用VB語(yǔ)言在你的代碼里面添加指令。


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


2、光標(biāo)放在空白行,輸入下列語(yǔ)句:

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


3、確保光標(biāo)在代碼里,按下F5


4、VB執(zhí)行完最后一個(gè)指令后,彈出這個(gè)信息。點(diǎn)擊確定。你現(xiàn)在知道宏已經(jīng)運(yùn)行完成。

MsgBox是用得非常頻繁的VBA函數(shù)之一,你將在后面的章節(jié)中學(xué)習(xí)它的使用。


重新命名宏

在代碼里面添加了一些代碼后,為了更好地反映這個(gè)宏的目的,你需要將其改名。過(guò)程的名稱應(yīng)該越接近它的功能越好。你不需要按任何鍵就可以更改宏名。在代碼窗口,你將關(guān)鍵詞Sub后面老的宏名清除,并且打入新的名稱即可。
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)