官术网_书友最值得收藏!

1.6 錄制宏代碼

1.6.1 錄制新宏

對于VBA初學(xué)者來說,最困難的事情往往是想要實(shí)現(xiàn)一個(gè)功能,卻不知道代碼從何寫起,錄制宏可以很好地幫助大家。錄制宏作為Excel中一個(gè)非常實(shí)用的功能,對于廣大用戶來說是不可多得的學(xué)習(xí)幫手。

在日常工作中經(jīng)常需要在Excel 中重復(fù)執(zhí)行某些任務(wù),這時(shí)可以通過錄制一個(gè)宏來快速地自動(dòng)執(zhí)行這些任務(wù)。

按照如下步驟操作,可以在Excel中錄制一個(gè)新宏。

單擊【開發(fā)工具】→【錄制宏】按鈕,在彈出的【錄制宏】對話框中可以設(shè)置宏名(FormatTitle)、快捷鍵(Ctrl+Shift+Q)、保存位置和說明,單擊【確定】按鈕關(guān)閉【錄制宏】對話框,將開始錄制一個(gè)新宏,如圖1-15所示。

圖1-15 在Excel中開始錄制一個(gè)新宏

錄制宏時(shí)Excel提供的默認(rèn)名稱為“宏”加數(shù)字序號(在Excel英文版本中為“Macro” 加數(shù)字序號),如“宏1”“宏2”等,其中的數(shù)字序號由Excel自動(dòng)生成,通常情況下數(shù)字序號依次增大。

宏的名稱可以包含英文字母、中文字符、數(shù)字和下劃線,但是第一個(gè)字符必須是英文字母或中文字符,如“1Macro”不是合法的宏名稱。為了使宏代碼具有更好的通用性,盡量不要在宏名稱中使用中文字符,否則在非中文版本的Excel中應(yīng)用該宏代碼時(shí),可能會(huì)出現(xiàn)兼容性問題。除此之外,還應(yīng)該盡量使用能夠說明用途的宏名稱,這樣有利于日后的使用、維護(hù)與升級。

注意

如果宏名稱為英文字母加數(shù)字的形式,那么需要注意不可以使用與單元格引用相同的字符串,即“A1”至“XFD1048576”不可以作為宏名稱使用。例如,在如圖1-15所示的【錄制宏】對話框中輸入“ABC168”作為宏名,單擊【確定】按鈕,將出現(xiàn)如圖1-16所示的錯(cuò)誤提示框。但是“ABC”或“ABC1048577”就是合法的宏名稱,因?yàn)镋xcel工作表中不可能出現(xiàn)引用名稱為“ABC”或“ABC1048577”的單元格。

圖1-16 無效的宏名稱

開始錄制宏之后,用戶可以在Excel中進(jìn)行操作,其中絕大部分操作將被記錄為宏代碼。

在開始錄制宏之后,功能區(qū)中的【錄制宏】按鈕將變成【停止錄制】按鈕,如圖1-17所示。

圖1-17 【停止錄制】按鈕

操作結(jié)束后,單擊【停止錄制】按鈕,如圖1-18所示,將停止本次錄制宏。

圖1-18 停止錄制宏

單擊【開發(fā)工具】選項(xiàng)卡【代碼】組中的【Visual Basic】按鈕或直接按<Alt+F11>組合鍵將打開VBE (Visual Basic Editor,即VBA集成的代碼編輯器)窗口,在代碼窗口中可以查看剛才錄制的宏代碼,在第2章中將詳細(xì)講述VBE中主要窗口的使用方法與功能。

通過錄制宏,可以看到整個(gè)操作過程所對應(yīng)的代碼,請注意這只是一個(gè)“半成品”,經(jīng)過必要的修改才能得到更高效、更通用的代碼。

1.6.2 錄制宏的局限性

Excel的錄制宏功能可以“忠實(shí)”地記錄Excel中的操作,但是也有其本身的局限性,主要表現(xiàn)在以下幾個(gè)方面。

錄制宏產(chǎn)生的代碼不一定完全等同于用戶的操作。例如,用戶設(shè)置保護(hù)工作表時(shí)輸入的密碼就無法記錄在代碼中;設(shè)置工作表控件的屬性也無法產(chǎn)生相關(guān)的代碼。這樣的例子還有很多,這里不逐一羅列。

一般來說,錄制宏產(chǎn)生的代碼可以實(shí)現(xiàn)相關(guān)功能,但往往并不是最優(yōu)代碼,錄制的代碼中經(jīng)常會(huì)有很多冗余代碼。例如,用戶選中某個(gè)單元格或滾動(dòng)屏幕之類的操作,都將被記錄為代碼,刪除這些冗余代碼后,宏代碼將可以更高效地運(yùn)行。

通常錄制宏產(chǎn)生的代碼執(zhí)行效率不高,其原因主要有兩點(diǎn):第一,代碼中大量使用Activate和Select等方法,影響了代碼的執(zhí)行效率,在實(shí)際應(yīng)用中需要進(jìn)行相應(yīng)的優(yōu)化;第二,錄制宏無法產(chǎn)生控制程序流程的代碼,如循環(huán)結(jié)構(gòu)、判斷結(jié)構(gòu)等。

主站蜘蛛池模板: 安达市| 固原市| 柘荣县| 儋州市| 白河县| 天等县| 麻城市| 邵武市| 吴桥县| 南江县| 寻乌县| 黔西| 开平市| 汪清县| 元阳县| 高要市| 玉环县| 湄潭县| 保定市| 花莲县| 咸丰县| 西畴县| 突泉县| 黑龙江省| 灵宝市| 三江| 灵宝市| 筠连县| 山西省| 怀远县| 太康县| 云阳县| 昂仁县| 碌曲县| 兴山县| 海阳市| 莱阳市| 库伦旗| 富川| 开江县| 泗阳县|