講了很長時(shí)間的VBA,今日和大家講解一下VBA代碼的簡單知識(shí)。
一 代碼窗口
VBA的代碼窗口包括工作表事件代碼窗口、ThisWorkbook事件代碼窗口、窗體代碼窗口、標(biāo)準(zhǔn)模塊代碼窗口和類模塊代碼窗口。打開某個(gè)對象的代碼窗口的方法是在該對象上單擊右鍵,從中選擇【查看代碼】?;蛘唠p擊進(jìn)入。
例如:要進(jìn)入ThisWorkbook的代碼窗口,在左方的工程資源管理器中右擊ThisWorkbook,在彈出的快捷菜單中選擇【查看代碼】,右邊的代碼窗口將切換到ThisWorkbook的代碼窗口。
注意點(diǎn):在VBA中,過程包括子過程(Sub開頭)、函數(shù)過程(Function開頭)和屬性過程(Property開頭)。每一段完整的程序都是一個(gè)獨(dú)立的過程,每錄制一次宏將產(chǎn)生一個(gè)過程。一個(gè)模塊中可以存放多個(gè)過程,但同一個(gè)過程的代碼不能放在多個(gè)代碼窗口中,因?yàn)檫^程中的代碼必須是連續(xù)的。然而VBA允許不同模塊中的過程相互調(diào)用,即A過程可以執(zhí)行B過程的功能。
二 工作簿代碼事件
ThisWorkbook對象代表代碼所在的工作簿,ThisWorkbook代碼窗口也稱為工作簿事件代碼窗口。VBA中的事件是指對象在滿足指定的條件時(shí)需要做出的反應(yīng),其中工作簿事件代碼是指工作簿在滿足代碼所指定的條件時(shí)自動(dòng)執(zhí)行的代碼。如果工作簿事件代碼存放在ThisWorkbook以外的窗口,則將失去其自動(dòng)性,代碼同時(shí)也失去了存在的價(jià)值。所以對于一切工作簿事件相關(guān)的代碼,都必須保存在ThisWorkbook代碼窗口中。例如工作簿的Workbook_open事件代碼的存放方式,它的功能是打開工作簿時(shí)提示'陸漫漫修遠(yuǎn)VBA'。由于采用了事件,所以不需要手動(dòng)執(zhí)行代碼,一切自動(dòng)執(zhí)行。如果代碼保存在其他地方將會(huì)失效。
注意點(diǎn):事件過程有別于標(biāo)準(zhǔn)子過程,它的命名有相當(dāng)嚴(yán)格的規(guī)定,過程的名字和參數(shù)差一個(gè)字母或者空格都將失去預(yù)設(shè)的功能,而標(biāo)準(zhǔn)子過程的名字或者參數(shù)可以隨意定義。所以通常查看一段代碼的名字和參數(shù)命名方式即可判斷是否屬于事件。
三 窗口模塊的三種類型:第一種:具有某種特定屬性的模塊,比如sheet1模塊,sheet2模塊,sheet3模塊,ThisWorkbook模塊,Userform模塊等等。這些模塊是特殊的模塊,具備他們各自不同的方法、事件。第二種:標(biāo)準(zhǔn)模塊,也就是我們利用'插入- 模塊'得到的'模塊1','模塊2', 英文系統(tǒng)中則是'Module1'、'Module2'……在標(biāo)準(zhǔn)模塊中聲明的Public公有變量,公有過程可以直接被其他所有模塊訪問和調(diào)用。
第三種:類模塊最特殊,這個(gè)模塊可以創(chuàng)建自己的方法、事件,可以在其他模塊中通過創(chuàng)建類模塊的實(shí)例來擁有類模塊的屬性、方法和事件等等。四 模塊的使用:1 如果代碼是處理sheet1表里面的數(shù)據(jù),那么這個(gè)代碼就直接可以放在sheet1模塊中即可。
如果代碼要用到Workbook_open這樣的事件,那么這個(gè)事件肯定要放在Thisworkbook模塊中。
通常,一些公共的方法我們可以放在標(biāo)準(zhǔn)模塊中。自定義函數(shù)必須放在標(biāo)準(zhǔn)模塊中。
五 利用工作表代碼實(shí)例:使EXCEL工作表不能打印
代碼:
Private Sub Workbook_BeforePrint(Cancel As Boolean)Cancel = TrueEnd Sub
使用:打開Excel,按Alt F11,調(diào)出VBE后,按Ctrl r顯示出工程資源管理器(默認(rèn)此窗口應(yīng)已顯示),雙擊ThisWorkbook,在模塊中粘入代碼即可。
上述代碼使用后,EXCEL將不予許打印。
今日內(nèi)容回向:
1 VBA代碼窗口有哪些?
2 VBA 模塊有哪幾種?
3 ThisWorkbook 工作薄事件代碼的作用有哪些?
聯(lián)系客服