微博:EXCELers / 知識(shí)星球:ExcelHI,大家好,我是星光。
前面三期分別給大家聊了什么是VBA、什么是VBE、如何編寫(xiě)VBA代碼,本期再給大家聊一下——如何運(yùn)行這段VBA代碼?
以運(yùn)行上期名為“我的查詢(xún)”的錄制宏為例,說(shuō)下四種常見(jiàn)的優(yōu)劣各異的運(yùn)行VBA代碼的方式。
在【開(kāi)發(fā)工具】選項(xiàng)卡下,單擊【宏】按鈕,打開(kāi)【宏】對(duì)話(huà)框。在該對(duì)話(huà)框中選中宏名“我的查詢(xún)”。
在右側(cè)單擊【選項(xiàng)】按鈕,打開(kāi)【宏選項(xiàng)】對(duì)話(huà)框;設(shè)置快捷鍵為Ctrl+q,最后單擊【確定】按鈕,依次關(guān)閉對(duì)話(huà)框。
設(shè)置完成后,只需按下快捷鍵<Ctrl+q>,系統(tǒng)就會(huì)自動(dòng)運(yùn)行相應(yīng)宏。
想象一下吧小同志,你背靠皮椅,小眼微瞇,手指輕動(dòng),一個(gè)函數(shù)都不漏痕跡,只是按下快捷鍵<Ctrl+q>,Excel就會(huì)自動(dòng)為你獲取數(shù)據(jù)查詢(xún)結(jié)果,是不是騷秀氣滿(mǎn)滿(mǎn)抑或霸巴適氣側(cè)漏?
不過(guò)需要注意的是,這里設(shè)置的宏快捷鍵會(huì)覆蓋Excel默認(rèn)的快捷鍵。比如將宏的快捷鍵設(shè)置為<Ctrl+F>,<Ctrl+F>也就不再執(zhí)行原來(lái)的打開(kāi)【查找與替換】對(duì)話(huà)框功能了。
第2種方式:插入按鈕
快捷鍵的方式雖好,久而不用卻難免會(huì)忘,此外它也不適合廣泛用于制作通用模版。此時(shí)我們可以設(shè)置一個(gè)按鈕,通過(guò)它來(lái)執(zhí)行指定的宏。
在【開(kāi)發(fā)工具】選項(xiàng)卡下依次單擊【插入】→【按鈕(窗體控件)】按鈕。在工作表中繪制一個(gè)大小隨心的按鈕,松開(kāi)鼠標(biāo)左鍵后,系統(tǒng)會(huì)自動(dòng)彈出一個(gè)【指定宏】對(duì)話(huà)框,選中所需宏名,比如本例“我的查詢(xún)”,單擊【確定】按鈕,即可將該按鈕關(guān)聯(lián)給宏“我的查詢(xún)”。
設(shè)置完成后,單擊該按鈕,即可執(zhí)行相應(yīng)的宏代碼。
▎小貼士
<1>:右鍵單擊按鈕,在彈出的快捷菜單中單擊【編輯文字】,可以修改按鈕的名稱(chēng),比如修改為“朕要工作了!”
<2>:除了插入按鈕外,也可以插入圖形或圖片等對(duì)象,實(shí)現(xiàn)類(lèi)似關(guān)聯(lián)運(yùn)行宏代碼的效果。
如果一個(gè)工作簿的宏命令比較多,以至于你一時(shí)間找不到相關(guān)按鈕的位置,就可以使用這種方式來(lái)運(yùn)行宏了。
在【開(kāi)發(fā)工具】選項(xiàng)卡下單擊【宏】按鈕,在彈出的【宏】對(duì)話(huà)框中選擇【我的查詢(xún)】選項(xiàng),單擊【執(zhí)行】按鈕即可運(yùn)行該宏。
第4種方式:在VBE中運(yùn)行宏
在代碼開(kāi)發(fā)過(guò)程中,經(jīng)常需要多次運(yùn)行和調(diào)式VBA代碼,此時(shí)就需要在VBE中直接運(yùn)行宏。
單擊“我的查詢(xún)”過(guò)程代碼的任意位置進(jìn)入編輯狀態(tài),然后單擊工具欄上的【運(yùn)行子過(guò)程/用戶(hù)窗體】按鈕,或者按快捷鍵<F5>,即可運(yùn)行該過(guò)程代碼。
……
上面咱們聊了運(yùn)行宏的4種方式,但是有個(gè)姓慕容的姑娘說(shuō)過(guò),愛(ài)情不是你想來(lái),想來(lái)它就來(lái),宏也不是你想運(yùn)行……它就一定能運(yùn)行。
有時(shí)候你打開(kāi)一個(gè)工作簿,單擊按鈕,會(huì)彈出如下提示框。
出現(xiàn)該提示框的原因通常有兩種,一種是該按鈕沒(méi)有指定宏(或者曾經(jīng)指定過(guò)宏,但相關(guān)宏被刪除/更名了),另一種是該工作簿所有的宏確實(shí)被禁用了——這就要聊到宏的安全性問(wèn)題。
咱們?cè)谇懊媸裁词荲BA里講過(guò),在很多人眼中宏是病毒的代名詞,這是由于宏在給Office用戶(hù)帶來(lái)極大便利的同時(shí),也帶來(lái)了潛在的風(fēng)險(xiǎn)。它可以輕而易舉的控制或運(yùn)行電腦中的應(yīng)用程序,生成計(jì)算機(jī)病毒或惡意功能,比如咱們?cè)?jīng)分享過(guò)的那篇小代碼:
如何制作自動(dòng)自殺和殺死其它文件的Excel工作簿?
有基沒(méi)有情于此,Excel通常默認(rèn)不允許運(yùn)行工作簿中的宏,并提供了【宏安全性設(shè)置】功能。
在【開(kāi)發(fā)工具】選項(xiàng)卡下單擊【宏安全性】按鈕,可以打開(kāi)【信任中心】對(duì)話(huà)框。在宏設(shè)置下,可以看到如下圖所示的四個(gè)選項(xiàng)。
一般來(lái)說(shuō),推薦使用【禁用所有宏,并發(fā)出通知】選項(xiàng)。
啟用該選項(xiàng)后,打開(kāi)保存在非受信任位置的包含宏的工作簿時(shí),在Excel功能區(qū)下方會(huì)顯示【安全警告】消息欄,告知用戶(hù)工作簿中的宏已經(jīng)被禁用,是否【啟用內(nèi)容】。
當(dāng)用戶(hù)在消息欄中選擇【啟用內(nèi)容】后,該文件會(huì)自動(dòng)成為受信任的文檔,再次打開(kāi)該文件,系統(tǒng)不再顯示【安全警告】消息欄。
當(dāng)用戶(hù)沒(méi)有選擇【啟用內(nèi)容】,而是直接進(jìn)行了其它Excel窗口的操作,【安全警告】的消息框會(huì)自動(dòng)消失,并默認(rèn)用戶(hù)不選擇啟用宏。此時(shí)如果你又想啟用宏了——不好意思,愛(ài)情不是你想來(lái)想來(lái)他就來(lái),麻煩你關(guān)閉重啟Excel工作簿再和【安全警告】的消息框打個(gè)招呼吧~
……
最后一個(gè)問(wèn)題:當(dāng)我們編寫(xiě)了一段宏代碼,運(yùn)行測(cè)試成功后,就需要將文件保存——那么如何保存包含宏代碼的Excel文件?
這問(wèn)題問(wèn)的似乎有點(diǎn)兒傻氣,但以我常年扎根底層的滄桑而憂(yōu)郁的雙眸來(lái)看,還是很有必要說(shuō)一下地——熊迪,算一卦?加入我的Excel星球,只需要219元,即可暢通無(wú)阻學(xué)習(xí)Excel方方面面~Excel知識(shí)星球加入及使用指南
……在Excel基礎(chǔ)入門(mén)教程的篇章里咱們?cè)?jīng)講過(guò),Excel的文件格式類(lèi)型有很多種,最常用的是xlsx,但這種格式的文件并不支持保存宏代碼,它會(huì)自動(dòng)抹除VBE或其它位置的宏。
只有古老的03版Excel、二進(jìn)制工作簿(xlsb)和以字母“m”結(jié)尾的文件格式(xlsm,xltm,xlam)才可以用于保存宏代碼的文件,其中最常使用的是xlsm格式。
——因此,敲黑板,在你學(xué)習(xí)VBA的過(guò)程中,請(qǐng)務(wù)必先將工作簿另存為xlsm格式。我有個(gè)叫隨風(fēng)小妞的前女朋友,經(jīng)常不記得將Excel文件另存為xlsm格式,而是直接使用xlsx格式編寫(xiě)代碼。每當(dāng)代碼臨近完成調(diào)試,卻有不小機(jī)率不幸死機(jī),于是代碼全軍覆沒(méi)尸骨無(wú)存。你想想,你想想他當(dāng)場(chǎng)哭的梨花帶雨的模樣,豈是一個(gè)慘字了得?
希望你不要重蹈他的覆轍,更不要哭的梨花帶雨我見(jiàn)不憐……
致安,愿你不再因Excel而煩惱,我是星光,揮手再賤。上千篇原創(chuàng)教程
隨學(xué)隨用 隨用隨學(xué)??
需要系統(tǒng)學(xué)習(xí)Excel,卻找不到優(yōu)質(zhì)教程?學(xué)習(xí)Excel的過(guò)程中遇到疑難問(wèn)題,卻找不到人及時(shí)作出解答?加入我的付費(fèi)社群,和微軟最有價(jià)值專(zhuān)家(MVP)全面精進(jìn)Excel,學(xué)習(xí)+答疑都不再是問(wèn)題……??????
加入我的Excel會(huì)員,全面學(xué)習(xí)Excel透視表 函數(shù) 圖表 VBA PQ想學(xué)啥學(xué)啥 Excel星球 建議常用Excel的職場(chǎng)人關(guān)注,海量教程隨學(xué)隨用,隨用隨查。 主創(chuàng):看見(jiàn)星光,微軟全球最有價(jià)值專(zhuān)家、Excel圖書(shū)作者、培訓(xùn)師。 內(nèi)容:每日四文,一篇函數(shù)教程、一篇VBA教程、一個(gè)短視頻小技巧、一篇雜文。
1451篇原創(chuàng)內(nèi)容
公眾號(hào)
??本文由公眾號(hào)“Excel星球”首發(fā)。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。