在前面的學(xué)習(xí)中,你學(xué)習(xí)到了Excel宏錄制器創(chuàng)建的一系列指令是和你實(shí)際進(jìn)行的操作完全等同的。這些指令自動(dòng)地放在工作簿里一個(gè)叫做“模塊”的表里。Excel將模塊儲(chǔ)存在模塊文件夾里,這個(gè)文件夾在當(dāng)前工作簿,新工作簿或者個(gè)人宏工作簿里面。你必須激活VB編輯器窗口,并且雙擊工程瀏覽器里的模塊文件夾才能查看到這些模塊。當(dāng)模塊表在代碼窗口里打開了后,你才能最后分析你的過(guò)程代碼。
所有錄制的指令都包括在“過(guò)程”里面。過(guò)程里面的每一行都是一個(gè)“指令”。指令的類型有很多種,例如,關(guān)鍵詞,運(yùn)算符,或者其它過(guò)程的調(diào)用?!瓣P(guān)鍵詞”代表VB中的一個(gè)特殊的意義。你已經(jīng)學(xué)習(xí)了最常見的VBA關(guān)鍵詞——Sub 和EndSub,它們表示一個(gè)過(guò)程的開始和結(jié)束。關(guān)鍵詞默認(rèn)地顯示為藍(lán)色。你不要將這些術(shù)語(yǔ)做其它的目的,因?yàn)殛P(guān)鍵詞已經(jīng)被VB保護(hù)了。
除了關(guān)鍵詞,VB指令里還可以有運(yùn)算符。運(yùn)算符有四種類型:算術(shù)運(yùn)算,字符串連接,邏輯運(yùn)算和比較運(yùn)算?!斑\(yùn)算符”允許你將某些值結(jié)合起來(lái)。例如,除號(hào)運(yùn)算符(/)可以用來(lái)計(jì)算總數(shù)的百分比。本手冊(cè)中,你有很多機(jī)會(huì)看到如何在VBA過(guò)程中使用運(yùn)算符。
VB指令的另外一種類型是過(guò)程調(diào)用。過(guò)程調(diào)用讓你快速地跳到其它過(guò)程并且執(zhí)行其它指令。是不是很難想象?讓我們看一下你在第一章中錄制的宏WhatsInACell。 假設(shè)你也需要包含同一模塊中宏FormulasOnOff中的一些語(yǔ)句。怎么做呢?你可以復(fù)制需要的代碼行,再粘貼過(guò)去。然而,有一種更簡(jiǎn)單快速的方法。你可以調(diào)用這個(gè)過(guò)程,而不需要在兩個(gè)過(guò)程中復(fù)制。例如,你想VB在遇到指令MsgBox "所有操作都已完成"之前執(zhí)行宏FormulasOnOff里面的指令,只要添加下面一句代碼就行:
FormulasOnOff
在你嘗試這個(gè)例子之前,你必須學(xué)會(huì)如何給VBA過(guò)程和模塊命名,已經(jīng)如何調(diào)用不同工程里的過(guò)程。
1、啟動(dòng)Excel,打開Chap01.xls,這里儲(chǔ)存了宏WhatsInACell代碼。你錄制了宏FormulasOnOff的個(gè)人宏工作簿會(huì)自動(dòng)開啟
2、切換到VB編輯器窗口
3、選擇VBAProject (Chap01.xls)
4、雙擊屬性窗口里的名稱屬性,這個(gè)操作選中了默認(rèn)的工程名稱VBAProject
5、輸入“FirstSteps”作為該VBA工程的名稱,回車。注意,工程瀏覽器現(xiàn)在顯示的是名稱是
FirstSteps (Chap01.xls)
6、在工程瀏覽窗口選擇VBAProject (Personal.xls)
7、雙擊屬性里的名稱屬性
8、輸入“Personal”作為它的名稱,回車
技巧:避免名稱沖突
為了避免VBA工程之間的命名沖突,請(qǐng)給你的工程獨(dú)特的名稱。你可以使用下述方法之一來(lái)更改工程名稱:
1、在工程瀏覽器窗口,選擇工程名稱,雙擊屬性窗口里的名稱屬性,再輸入新的名稱
2、在工程瀏覽器窗口,在工程名稱上單擊右鍵,并且選擇“工程名稱屬性”。出現(xiàn)如下圖顯示的
工程屬性對(duì)話框,在工程名稱文本框里面輸入新的名稱
工程屬性窗口可以用來(lái)更改當(dāng)前被選中的工程名稱和描述3模塊重命名
當(dāng)你錄制宏或者創(chuàng)建新的過(guò)程時(shí),VB會(huì)創(chuàng)建一個(gè)模塊文件夾來(lái)儲(chǔ)存你的VBA 代碼。 第一個(gè)文件夾叫“模塊1”,第二個(gè)叫“模塊2”,等等。你打開一個(gè)新的工作簿并且創(chuàng)建VBA工程時(shí),新VBA工程里的模塊文件夾又會(huì)命名為“模塊1”,“模塊2”,等等。模塊擁有相同的名稱不但對(duì)你,而且對(duì)VB造成很大混淆,因?yàn)?,它要在一個(gè)打開許多工程的環(huán)境中執(zhí)行你的宏或工程。
為了避免模塊混淆,給FirstSteps(Chap01.xls) 工程和 Personal(Personal.xls) 工程里的“模塊1”重新命名:
1. 在工程瀏覽器窗口,選擇FirstSteps (Chap01.xls)工程,并且選擇“模塊1”
2. 雙擊屬性窗口里的名稱屬性,這個(gè)動(dòng)作選中了模塊的默認(rèn)名稱“模塊1”
3. 輸入“WorksheetFormatting”作為模塊1的名稱,并且回車。注意,工程瀏覽器窗口現(xiàn)在顯示的模塊名稱是“WorksheetFormatting”
4. 在工程瀏覽器窗口選擇Personal (Personal.xls)
5. 雙擊屬性窗口里的名稱屬性
6. 輸入“Switches”作為模塊1的名稱,回車
Sub WhatsInACell()
<這里是你錄制的指令>
FormulasOnOff
End Sub
然而,如果兩個(gè)或者兩個(gè)以上的模塊含有這個(gè)相同的過(guò)程名稱,你除了要明確過(guò)程名稱外,還必須包括模塊名稱。假設(shè)工程FirstSteps (Chap01.xls)有三個(gè)模塊。模塊FormulaFormatting包含宏WhatsInACell,但是,模塊Switches和模塊Formulas都含有一個(gè)叫FormulasOnOff的宏。如何在WhatsInACell調(diào)用FormulasOnOff(模塊Switches里面的)?請(qǐng)看下面例子:
Sub WhatsInACell()
<這里是你錄制的指令>
Switches.FormulasOnOff
End Sub
要調(diào)用其它工程里的過(guò)程,你必須建立對(duì)該工程的引用。你可以在“引用”對(duì)話框進(jìn)行這些操作。因?yàn)镕ormulasOnOff在Personal(Personal.xls)工程里,在你能夠從WhatsInACell調(diào)用它之前,你需要添加對(duì)“Personal”的引用。下面是幾種建立引用的方法:
1. 在工程瀏覽器窗口,點(diǎn)擊FirstSteps (Chap01.xls)
2. 選擇“工具”-“引用”
3. 在引用對(duì)話框,選中“Personal”旁邊的勾選框,如下圖所示。然后點(diǎn)擊確定(在截圖前,我并沒有保存Personal,所以在附圖里沒有Personal一行,如果你依照手冊(cè)中一步一步走下來(lái),應(yīng)該沒有問(wèn)題)
1. 在工程瀏覽器窗口,選擇FirstSteps (Chap01.xls)并且定位到含有WhatsInACell的模塊
2. 在MsgBox "所有操作都已完成"之前增加一空白行,并且輸入代碼:FormulasOnOff
3. 返回到Excel界面,確保當(dāng)前工作表是這個(gè)例子數(shù)據(jù)
4. 使用任何你在第一章里學(xué)到的方法來(lái)運(yùn)行宏WhatsInACell
如果你給兩個(gè)不同工程里的不同過(guò)程以相同的名稱,那么你必須明確工程名稱才能調(diào)用它。
我們假設(shè)FirstSteps (Chap01.xls)工程和Personal (Personal.xls) 工程里都有叫FormulasOnOff的宏,要調(diào)用Personal (Personal.xls)工程里的FormulasOnOff(記住,你已經(jīng)必須先建立對(duì)Personal的引用),必須包括工程名稱:
Sub WhatsInACell ( )
<這里是你錄制的指令>
Personal.Switches.FormulasOnOff
End Sub
技巧:VB如何定位被調(diào)用的過(guò)程
當(dāng)你調(diào)用一個(gè)過(guò)程,VB先在主調(diào)方(WhatsInACell)的同一個(gè)模塊里查找。如果沒有找到被調(diào)過(guò)程(FormulasOnOff),VB就會(huì)在同一個(gè)工程的其它模塊里查找。如果還是找不到,VB則會(huì)檢查對(duì)其它工程的引用。
技巧:工程名稱不在引用對(duì)話框
如果你想要調(diào)用一個(gè)當(dāng)前關(guān)閉的工程里的過(guò)程,當(dāng)你打開引用對(duì)話框試圖建立引用時(shí),這個(gè)過(guò)程名稱不在清單中。點(diǎn)擊“瀏覽”,并且打開被調(diào)用過(guò)程所在的文件夾。添加引用的對(duì)話框默認(rèn)地列出數(shù)據(jù)庫(kù)文件(*.olb, .tlb, .dll)。從文件類型的下拉清單中選擇Excel文件(*.xls, *.xla),選擇并打開含有你要調(diào)用過(guò)程的文件。這個(gè)工程的名稱將會(huì)加在引用對(duì)話框的最后一行。
更多建議: