




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第四章VBA編程
o序言
?4.1宏
?4.2控件與用戶窗體
?4.3對象、屬性、方法和事件
?4.4VBA語法基礎(chǔ)
4.5過程
?4.6流程控制語句
?4.7VBA應(yīng)用程序的優(yōu)化
?4.8信息及代碼的保護
4.9應(yīng)用舉例
章目錄節(jié)目錄
序言
?VBA(VisualBasicforApplications)是MicrosoftOffice系
列的內(nèi)置編程語言,是非常流行地應(yīng)用程序開發(fā)語言…
VB(VisualBasic)的子集。它“春生于"Office應(yīng)用程序,
是OfficeXP套裝軟件的一個十分重要的組件。它功能強大,
面向?qū)ο?OOP),非常適合入門級學(xué)習(xí)。利用它可以實現(xiàn)
繁瑣、機械的日常工作的自動化,從而極大提高用戶的辦公
效率。
?VBA和VB的主要區(qū)別是:
1.VB用于創(chuàng)建標(biāo)準(zhǔn)的應(yīng)用程序,VBA是使已有的應(yīng)用程
序(Office)自動化。
2.VB具有自己的開發(fā)環(huán)境,VBA寄生于已有的應(yīng)用程序
(Office)o
3.VB開發(fā)出的應(yīng)用程序可以是可執(zhí)行文件(*.EXE),VBA
開發(fā)的程序必須依賴于它的“父”應(yīng)用程序(Office)。
章目錄節(jié)目錄
用VBA可以實現(xiàn)如下一些功能:
1.使重復(fù)的任務(wù)自動化。
2.自定義工具欄、菜單和界面。
3.簡化模板的使用。
4.自定義Office,使其成為開發(fā)平臺。
5.創(chuàng)建報表。
6.對數(shù)據(jù)進行復(fù)雜的操作和分析。
用Office作為開發(fā)平臺的主要優(yōu)點:
LQffice本身功能強大,包括打印、文件處理、格式化和
文本編輯等。
2.Office應(yīng)用軟件及其VBA內(nèi)置大量函數(shù)、語句、方法等,
功能非常豐富。
3.Office界面熟悉,便于軟件推廣應(yīng)用。
4.便于發(fā)布。只需要發(fā)布含有VBA代碼的文檔,無需考
慮運行環(huán)境,因為Office是普遍配備的應(yīng)用軟件。
5.利用宏可以實現(xiàn)部分程序設(shè)計自動化,大大提高軟件
開發(fā)效率。
章目錄節(jié)目錄
4.1宏
宏(Macro)是一組VBA語句??梢岳斫鉃橐粋€程序段,或
一個子程序。在OfficeXP中,宏可以直接編寫,也可以通過
錄制形成。錄制宏,實際上就是將一系列操作過程記錄下來
并由系統(tǒng)自動轉(zhuǎn)換為VBA語句。這是目前最簡單的編程方法,
也是VBA最有特色的地方。
?4.14宏的錄制與執(zhí)行
4.1.2宏的編輯
?4」,3為宏指定快捷鍵
4.1.4指定宏保存的位置
44.5將宏指定給按鈕
4.L6將宏指定給圖片或工具欄按鈕
章目錄節(jié)目錄
?4.1.1宏的錄制與執(zhí)行
下面錄制一個非常簡單的宏,它的功能是將當(dāng)前選中的單元格背景
置成藍色。如下步驟:
①進入Excel。
②在“工具|宏”菜單中選“錄制新宏”項。
③在“錄制新宏”對話框中輸入宏名“填充顏色”,單擊“確定”按
鈕。此時,屏幕上顯示出“停止錄制”工具欄。
④在“格式”工具欄中單擊“填充顏色”按鈕右邊的三角標(biāo)志,選擇
藍色。
⑤單擊“停止錄制”工具欄按鈕,結(jié)束宏錄制過程。也可以選擇“工
具|宏|停止錄制”菜單結(jié)束宏錄制。錄制完一個宏后就可以執(zhí)行它了。
4.1.2宏的編輯
對已經(jīng)存在的宏,我們可以查看代碼,也可以進行編輯修改。
選擇“工具|宏|宏”菜單,在“宏”對話框中選擇列表中的“填充顏
色”,單擊“編輯”按鈕。可以在VBA的編輯器窗口修改宏。
編輯宏同樣非常簡單。同時我們知道,通過編輯宏可以刪除多余的語
句,提高運行速度,也可以加入判斷或循環(huán)等無法錄制的語句,增加宏
的功能。
許多過程可以用錄制宏來完成。但錄制的宏無判斷或循環(huán)能力,人機
交互能力差,即用戶無法進行輸入,計算機無法給出提示,無法顯示對
章目錄w、節(jié)目錄''而—'A
?:?4.1.3為宏指定快捷鍵
快捷鍵即快速執(zhí)行某項操作的組合鍵。例如:CTRL+C在許
多程序中代表“復(fù)制”命令。
當(dāng)給宏指定了快捷鍵后,就可以用快捷鍵來執(zhí)行宏,而不必
通過“工具”菜單。
可以在創(chuàng)建宏時指定快捷鍵,也可以在創(chuàng)建后再指定。
*注意:當(dāng)包含宏的工作簿打開時,為宏指定快捷鍵會覆蓋原有快
捷鍵的功能。因此,在定義新的快捷鍵時,盡量避開系統(tǒng)已定義
的常用快捷鍵。
?4.1.4指定宏保存的位置
宏可保存在三種位置:當(dāng)前工作簿、新工作簿和個人宏工作簿。
將宏保存在當(dāng)前工作簿或新工作簿,只有該工作簿打開時,相
應(yīng)的宏才可以用。
個人宏工作簿是為宏而設(shè)計的一種特殊的具有自動隱藏特性的
工作簿。第一次將宏創(chuàng)建到個人宏工作簿時,會創(chuàng)建名為
“PERSONAL.XLS”的新文件。如果該文件存在,則每當(dāng)EXCEL
啟動時會目動將此文住打開并隱藏在活動工作簿后面。在“窗口”
菜單中選擇“取消隱藏”后,可以發(fā)現(xiàn)它的存在。
章目錄節(jié)目錄
?:?4.1.5將宏指定給按鈕
VBA主要的目標(biāo)是為自動化提供一個易于操作的界面?!鞍粹o”是最
常見的界面組成元素之一。通過使用“窗體”工具欄,可以為工作簿中
的工作表添加按鈕。在創(chuàng)建完一個按鈕后,可以為它指定宏,然后就可
以通過單擊按鈕來執(zhí)行宏了。
此后,單擊按鈕就可以運行該宏。在按鈕上右擊鼠標(biāo),可改變大小或
標(biāo)題。
?4.1.6將宏指定給圖片或工具欄按鈕
除了將宏指定給按鈕外,還可以指定給圖片和工具欄按鈕。
指定宏到圖片十分簡單,用“插入[圖片”菜單或其他方法在當(dāng)前工作
表放置圖片后,右擊圖片,在快捷菜單中選“指定宏”即可進行設(shè)置。
將宏指定給“工具欄按鈕”,可按如下步驟進行:
①在Excel中,選擇“工具|自定義”菜單,顯示“自定義”對話框。
②在“命令”卡中,從“類別”列表框中選擇“宏”,從“命令”
列表框中將“自定義按鈕”拖動到任意一個工具欄上。
③右擊該按鈕,選擇“指定宏”,顯示“指定宏”對話框。
④選擇需要的宏名并單擊“確定”按鈕。
⑤單擊“關(guān)閉”按鈕,關(guān)閉“自定義”對話框。
章目錄節(jié)目錄
4.2控件與用戶窗體
4.2.1控件
在Excel工具欄上單擊鼠標(biāo)右鍵,從快捷菜單中選擇“窗體”,顯示出“窗體”
工具欄,其中有16個控件,9個可放到工作表上。
1.標(biāo)簽:用于表現(xiàn)靜態(tài)文本。
2.分組框:用于組合其它控件。
3.按鈕:用于執(zhí)行宏命令。
4.復(fù)選框:它是一個選擇控件,通過單擊可以選擇和取消選擇,可以多項選擇。
5.選項按鈕:通常幾個選項按鈕組合在一起使用,在一組中只能選擇一個選項
按鈕。
6.列表框:用于顯示多個選項并從中選擇。
7.組合框:用于顯示多個選項并從中選擇。可以選擇其中的項目或者輸入一個
其它值。
8.滾動條:是一種選擇控制機制。包括水平滾動條和垂直滾動條。
9.微調(diào)控件:是一種數(shù)值選擇機制,通過單擊控件的箭頭來選擇數(shù)值。
要將控件添加到工作表上,可以在“窗體”工具欄中單擊需要的控件,此
時鼠標(biāo)變成十字形狀,在當(dāng)前工作表的適當(dāng)位置按下鼠標(biāo)左鍵并拖動鼠標(biāo)畫出一
個矩形,這個矩形代表了控件的大小,對大小滿意后放開鼠標(biāo)左鍵,這樣一個控
件就添加到工作表上了。
章目錄節(jié)目錄
?422用戶窗體
用戶窗體。用戶窗體可以作為程序的對話框和窗口。向用戶
窗體添加控件類似于向工作表添加控件。
在VBA編輯器中出現(xiàn)一個名為“UserFormT'的窗體,"控件工
具箱”同時出現(xiàn),在其中有許多已經(jīng)熟悉的控件,另外還有一些
新指控件。
這些新的控件是:
1.切換按鈕:該控件如果被選中,那么會保持被按下的狀態(tài)。
如果再次單擊它就恢復(fù)為沒有按下的狀態(tài)。
2.選項卡條(TabStrip):它是包含多個選項卡的控件。通常
用來對相關(guān)的信息進行組生或分類。
3.多頁:外觀類似選項卡條,是包含一頁或多頁的控件。選
項卡條給人相似的外觀,而多頁控件的各頁包含各甘不同的控住,
有各白不同的希扃。血果每一頁具有相同希局,則應(yīng)選擇選項卡豕,
否則應(yīng)該選擇多頁。
4.圖像控件:它允許向窗體上放置圖片。
5.RefEdit:它外觀象文本框,通過這個控件可以將用戶窗
體折疊起來,以便選擇單元格區(qū)域。
章目錄節(jié)目錄
4.3對象、屬性、方法和事件
?同其它任何面向?qū)ο蟮木幊陶Z言一樣,VBA里也有對象、屬
性、方法和事件。所謂對象,就是代碼和數(shù)據(jù)的組合。如表、
窗體或文本框等都是對象。所謂屬性,是指對象的特性,像
大小、顏色、狀態(tài)等。所謂方法指的是對象能執(zhí)行的動作,
如刷新等。事件是一個對象可以辨認(rèn)的動作,像單擊鼠標(biāo)或
按下某鍵等,并且可以寫某些代碼針對此述動作來做響應(yīng)。
在VBA中,窗口和它上面的“關(guān)閉”按鈕,是兩個對象。窗
口及按鈕的顏色、大小是它們的屬性。當(dāng)你按下“關(guān)閉”按
鈕時,發(fā)生關(guān)閉事件,通過相應(yīng)的方法關(guān)閉窗口。
【例4.1】
章目錄節(jié)目錄
【例4.1】
?:?新建一個窗體,放置兩個按鈕和一個文字框
控件。按鈕的標(biāo)題分別定義為“顯示”和
“清除”。單擊“顯示”按鈕,在文字框中
顯示一行文字,單擊“清除”按鈕,清除文
字框中的文字。
章目錄節(jié)目錄
4.4VBA語法基礎(chǔ)
?:?441注釋
*4?4.2連寫和斷行
?:?4.4.3變量和常量
*444運算符
4A1注釋
好的程序一般都有注釋,這對程序的維護有很大的好處。
。在VBA程序中,注釋可以通過以下兩種方式實現(xiàn):
?(1)使用Rem語句。
?(2)用單引號(,)號。
4.4.2連寫和斷行
程序中,一般一個語句占一行,但有時候可能需要在一行中
寫幾個語句。這時需要用到“:”來分開語句。例如:
a=l:b=2
有時一個語句太長,書寫起來不方便,看上去也不美觀,希
望將其分開寫成幾行。此時要用到空白加下劃線(_)。
章目錄節(jié)目錄
443變量和常量
.變.量
?:.2.變量的數(shù)據(jù)類型
*3.聲明變量
4?4.聲明數(shù)組
?:*5.變量賦侑
6.常量
1.變量
?變量用于臨時保存數(shù)據(jù)。程序運行時,變量的數(shù)據(jù)可以改變。在VBA代碼中可
聲明和使用變量來臨時存儲數(shù)據(jù)或?qū)ο蟆?/p>
例如:
?DimMyNameAsString聲明—名為MyName的字符串變量
?MyName="北京”給變量賦值
MyName="上?!保淖兞康闹?/p>
2.變量的數(shù)據(jù)類型
變量的數(shù)據(jù)類型控制變量允許保存何種類型的數(shù)據(jù)。表4.1列出了VBA支持的數(shù)據(jù)類酉
同時列出了各種類型的變量所需要的存儲空間和能夠存儲的數(shù)據(jù)范圍。進行程序設(shè)計
時,應(yīng)選擇占據(jù)存儲空間盡量小的數(shù)據(jù)類型來保存所需要的數(shù)據(jù)。
表4.1數(shù)據(jù)類型
章目錄節(jié)目錄
表4.1數(shù)據(jù)類型
數(shù)據(jù)類型存儲空間數(shù)值范圍
Byte(字節(jié))1字節(jié)0-255
Booleam(布爾)2字節(jié)True或False
Integer(整型)2字節(jié)-32768?32767?
Long(長整型)4字節(jié)-2147483648?2147483647
Single(單精度)4字節(jié)負值范圍:-3.402823E38?-L401298E-45
正值范圍:1.401298E-45?3.402823E38
Double(雙精度)8字節(jié)負值范圍:
-1.79769313486232E308?-4.94065645841247E-324
正值范圍:
Currency(貨幣)8字節(jié)
Decimal12字節(jié)不包括小數(shù)時:+/-79228162514264337593543950335
包括小數(shù)時.:+/-7.9228162514264337593543950335
Date(日期H寸間)8字節(jié)日期:100年1月1日?9999年12月31日
時間:00:00:00?23:59:59
Object(對象)4字節(jié)任何引用對象
String(字符串)字符串變長字符串:0?20億個字符
的長度定長字符串:1?64K個字符
Varient(數(shù)字)16字節(jié)Double范圍內(nèi)的任何數(shù)值
Varient(文本)字符串?dāng)?shù)據(jù)范圍和變長字符串相同
的長度
3.聲明變量
?:?變量在使用之前,最好進行聲明,也就是定義變量
的數(shù)據(jù)類型,這樣可以提高程序的可讀性和節(jié)省存
儲空間。
?變量的數(shù)據(jù)類型可以是表4.1中的任何一種數(shù)據(jù)類型。
變量不經(jīng)聲明直接使用在語法上也是允許的,系統(tǒng)
會自動將變量定義為Variant類型,VBA中默認(rèn)的數(shù)
據(jù)類型是Variant。缺點是占用存儲空間較大,而且
影響程序的性能,因為VBA必須辨別Variant類型的
變量中存儲了何種類型的數(shù)據(jù)。通常使用Dim語句
來聲明變量。
章目錄節(jié)目錄
?:?變量名必須以字母開始,并且只能包含字母、
數(shù)字和特定的字符,最大長度為255個字符。
可以在一個語句中聲明幾個變量。
?:?聲明語句可以放到過程中,創(chuàng)建的變量在過
程內(nèi)有效,聲明語句放到模塊頂部,創(chuàng)建的
變量在模塊中有效。
章目錄節(jié)目錄
4.聲明數(shù)組
數(shù)組是具有相同數(shù)據(jù)類型并共同享有一個名字的一
組變量的集合。數(shù)組中的不同元素通過下標(biāo)加以區(qū)
分。
?:?數(shù)組的聲明方式和其它的變量是一樣的,可以使用
Dim、Static>Private或Public語句來聲明。若數(shù)組
的大小被指定的話,則它是個固定大小數(shù)組。若程
序運行時數(shù)組的大小可以被改變,則它是個動態(tài)數(shù)
組。
?:?數(shù)組的下標(biāo)從0還是從1開始,可由OptionBase語
句的設(shè)置。如果OptionBase沒有指定為1,則數(shù)組
下標(biāo)從0開始。
章目錄節(jié)目錄
?:?在聲明數(shù)組時,不指定下標(biāo)的上界,即括號
內(nèi)為空,則數(shù)組為動態(tài)數(shù)組。動態(tài)數(shù)組可以
在執(zhí)行代碼時改變大小。
?:?動態(tài)數(shù)組聲明后,可以在程序中用ReDim語
句來重新聲明。ReDim語句前以重新定義數(shù)
組的維數(shù)以及每個維的上界。重新聲明數(shù)組,
數(shù)組中存在的值會丟失。若要保存數(shù)組中原
先的值,可以使用ReDimPreserve語句來擴
充數(shù)組。
章目錄節(jié)目錄
5.變量賦值
變量或數(shù)組聲明后,就可以進行賦值。
6.常量
變量用來存儲動態(tài)信息。靜態(tài)信息可以用常量表示。
它可以供程序多次使用而且便于記憶。比如用PI表
示圓周率比3.1415926好得多。
要聲明常量并設(shè)置常量的值,需要使用const語句。
常量通常用全大寫字母以區(qū)別于變量。常量聲明后,
不能對它賦一個新的值。
與變量一樣,常量的定義的位置也決定了它的作用域。
章目錄節(jié)目錄
4.4.4運算符
VBA中的運算符有四種:算術(shù)運算符、比較運
算符、邏輯運算符和連接運算符。用來組成
不同類型的表達式。
>1.算術(shù)運算符
?2.比較運算符
?3.邏輯運算符
>4.連接運算符
>5.運算符的優(yōu)先級
1.算術(shù)運算符
VBA算術(shù)運算符有7個,他們用于構(gòu)建數(shù)值表達式或返回數(shù)值運算結(jié)果,各運算
符的作用和示
例見表42
___________算方運算符
符號示例
+加法3+5=8
減法、減11-6=5、-6*3=-18
6*3=18
19mod6=1
A
章目錄節(jié)目錄
2.比較運算符
比較運算符用于構(gòu)建關(guān)系表達式,返回邏輯值True、
False或Null(空)。名稱、用法見表4.3
表4.3比較運算符
符號名稱用法
<小于〈表達式1〉<〈表達式2〉
<=小于或等于〈表達式1〉<=〈表達式2〉
>大于〈表達式1〉>〈表達式2〉
>=大于或等于〈表達式1〉>=〈表達式2〉
=等于〈表達式1〉=〈表達式2〉
<>不等于〈表達式1〉<>〈表達式2〉
Is同引用〈對象1〉Is〈對象2〉
Like匹配于〈字符串1〉Like〈字符串2〉
章目錄節(jié)目錄
?:?其中,前6個比較運算符所組成的關(guān)系表達式,當(dāng)符
合相應(yīng)的關(guān)系時,結(jié)果為True,否則為False。如果
參與比較的表達式有一個為Null,則結(jié)果為Null。
?Is運算符用來比較兩個對象引用。如果兩者引用的
對象相同,結(jié)果為True,否則為False。
?:.Like運算符做字符串的方式比較。如果字符串1與
字符串2匹配,則返回True,否則返回False???/p>
以使用通配符、字符串列表或字符區(qū)間的任何組合
匹配字符串。通配符“?”代表任意一個字符,
代表任意多個字符,“毋代表任何一個數(shù)字(。?
9),“[charlist『代表charlist中任何一個字符,
“[!charlist「代表任何一個不在charlist中的字符。
章目錄節(jié)目錄
3.邏輯運算符
邏輯運算符用于構(gòu)建邏輯表達式,返回邏輯值True、
False或Null(空)。名稱、語法見表4.4
表4.4邏輯運算符
名稱語法
And與〈表達式1〉A(chǔ)nd〈表達式2〉
Or或〈表達式1〉Or〈表達式2〉
Not非Not〈表達式〉
Xor異或〈表達式1〉Xor〈表達式2〉
Eqv等價〈表達式1〉Eqv〈表達式2〉
Imp蘊涵〈表達式1〉Imp〈表達式2〉
章目錄:節(jié)目錄<A
4.連接運算符
字符串連接運算符有兩個:"&'和"+,
其中“十”運算符既可用來計算數(shù)值的和,也可
以用來做字符串的串接操作。不過,最好還是
使用運算符來做字符串的串接操作。
5.運算符的優(yōu)先級
按優(yōu)先級由高到低的次序排列的運算符如下:
括
號一指數(shù)一一元減一乘法和除法一整
除
一
取模->加法和減法一連接一比較一
邏
輯
(And、Or、Not、Xor>Eqv>Imp)。
章目錄節(jié)目錄
4.5過程
?:?4.5.1模塊與過程
?:?4.5.2過程的創(chuàng)建與運行
4.5.3子程.序
*4,5.4自定義函數(shù)
4.5.1模塊與過程
?每個VBA應(yīng)用程序都存在于一個“工程”中。工程下面可分
為若干個“模塊”。模塊包括標(biāo)準(zhǔn)模塊、類模塊和對象模塊
三種。
模塊中可以定義若干個“過程”。過程中包含一系列用于執(zhí)
行某個任務(wù)的語句。每個過程都有唯一的名字。過程可以是
函數(shù),也可以是子程序。函數(shù)執(zhí)行一系列操作后返回一個函
數(shù)值。子程序只執(zhí)行一個或多個操作,而不返回數(shù)值。當(dāng)錄
制完宏查看代碼時,所看到的就是子程序。宏只能錄制子程
序,而不能錄制函數(shù)過程。
函數(shù)過程通常情況下稱為函數(shù),要返回一個數(shù)值。這個數(shù)值
通常是計算的結(jié)果或是測試的結(jié)果,例如False或True??梢?/p>
在模塊中創(chuàng)建和使用自定義函數(shù)。
章目錄節(jié)目錄
4.5.2過程的創(chuàng)建與運行
?:?進入Excel或打開一個工作簿,系統(tǒng)自動建立
一個工程,工程中自動包含ThisWorkbook、
Sheetl等對象模塊。過程可以在對象模塊中
建立,也可以在標(biāo)準(zhǔn)模塊或類模塊中建立。
如果模塊不存在,首先需要向工程中添加一
個模塊。
工作簿中的模塊與過程隨工作簿一起保存。
在VBA編輯器或工作簿窗口都可以通過“文
件”菜單保存工作簿。
章目錄節(jié)目錄
4.5.3子程序
?:?子程序以Sub開頭,EndSub結(jié)尾。常用語法
格式如下:
[Public(Private]Sub子程序名(卜參數(shù)刁)
[<語句組刁
[ExitSub]
[(語句組刁
EndSub
章目錄節(jié)目錄
*Public關(guān)鍵字可以使子程序在所有模塊中有效o
Private關(guān)鍵字使子程序只在本模塊中有效。
如果沒有顯式指定,缺省情況是公用的。
?:?子程序可以帶參數(shù)。
*ExitSub語句的作用是退出子程序。
章目錄節(jié)目錄
4.5.4自定義函數(shù)
?:?在VBA中,提供了大量的內(nèi)置函數(shù)。比如字符串函
數(shù)Mid()、統(tǒng)計函數(shù)Max()等。在編程時直接引用就
可以了。但有時需要按自己的要求定制函數(shù),比如
計算半徑為R的圓的面積
A=3.14*RA2
?我們不可能為每一個不同半徑的園來寫上相似的一
段代碼,而應(yīng)該使用函數(shù)。
。用Function語句可以定義函數(shù),常用的語法形式如
工
章目錄節(jié)目錄
[Public|Private]Function函數(shù)名([<參數(shù)刁)[As
數(shù)據(jù)類型]
[(語句組刁
[函數(shù)名=<表達式>]
[ExitFunction]
[(語句組刁
[函數(shù)名=<表達式>]■
EndFunction
章目錄節(jié)目錄
?:?定義函數(shù)時用Public關(guān)鍵字,則所有模塊都可以調(diào)
用它。用Private關(guān)鍵字,函數(shù)只用于同一模塊。如
果沒有顯式指定,則缺省為公用。
函數(shù)名末尾可使用As子句來聲明返回值的數(shù)據(jù)類型,
參數(shù)也可指定數(shù)據(jù)類型。若省略數(shù)據(jù)類型說明,系
統(tǒng)會自動根據(jù)賦值確定。
?ExitFunction語句的作用是退出Function過程。
章目錄節(jié)目錄
4.6流程控制語句
?461If語句
*4.6.2GoTo語句
+4.6.3SelectCase語句
?4?6?4For???Next語句
*4?6.5Do???Loop語句
*466With語句
4611f語句
If語句是我們最常用的一種分支語句。它符合人們通常的語言習(xí)慣和思
維習(xí)慣。If語句有三種語法形式。
①ifv條件〉then〈語句[elsev語句2>]
②ifv條件,then
v語句組1>
[else
v語句組2>]
endif
③ifv條件1>then
v語句組
[elseifv條件2>then
v語句組2>…
else
v語句組n>]
endif
v條件,是一個關(guān)系表達式或邏輯表達式。若值為真,則執(zhí)行緊接在關(guān)鍵字
then后面的語句組。若v條件〉的值為假,則檢測下一個elseifv條件〉或執(zhí)
行else關(guān)鍵字后面的語句組,然后繼續(xù)執(zhí)行下一個語句。
章目錄節(jié)目錄
4.6.2GoTo語句
用GoTo語句可以無條件地轉(zhuǎn)到另一條語句去執(zhí)行。語法格式:
GoTo標(biāo)號或行號
標(biāo)號以字母開頭,冒號結(jié)束,不超過40個字符。行號是一個數(shù)值
O
GoTo語句會影響程序的結(jié)構(gòu),使程序閱讀及調(diào)試?yán)щy。因此,除
非萬不得已,盡量少使用GoTo語句。
4.6?3SelectCase
女口建條件復(fù)雜,程序需要多個分支,用If語句就會顯得相當(dāng)累贅,而且程序變得不易閱
讀。這時我們可以使用SelectCase語句來寫出結(jié)構(gòu)清晰的程序。
SelectCase語法如下:
SelectCase〈檢驗表達式〉
[Casev比較列表1>
卜語句組1>]]
[CaseElse
[v語句組n>]]
EndSelect
其中的〈檢驗表達式〉是任何數(shù)值或字符串表達式。
〈比較元素〉可以是下列幾種形式之一:
①表達式
②表達式To表達式
③IsV比較操作符,表達式
說明:
如果〈檢驗表達式>與Case子句中的一個〈比較元素〉相匹配,則執(zhí)行該子句后面的語句
組。
〈比較元素,若中含有To關(guān)鍵字,則第一個表達式必須小于第二個表達式,〈檢驗表達式
>值介于兩個表達式之間為匹配。
〈比較元素,若含有Is關(guān)鍵字,Is代表v檢驗表達式,構(gòu)成的關(guān)系表達式的值為真則匹配。
章目錄節(jié)目錄
4.6.4For.??Next語句
For...Next是一個循環(huán)語句,其語法形式如下:
For循環(huán)變量=初值To終值[Step步長]
[v語句組習(xí)
[ExitFor
〈語句組刁
Next[循環(huán)變量]
該循環(huán)語句執(zhí)行時,首先把循環(huán)變量的值設(shè)為初值,如果循環(huán)變
量的值沒有超過終值,則執(zhí)行循環(huán)體,遇到Next,把步長加到循環(huán)
變量上,若沒有超過終值,再循環(huán),直至循環(huán)變量的值超過終止時
,才結(jié)束循環(huán),繼續(xù)執(zhí)行后面的語句。
步長可正、可負,為1時可以省略。遇到ExitFor時,退出循環(huán)。
4.6.5Do.??Loop語句
Do...Loop語句可以循環(huán)執(zhí)行語句組,它有以下兩種形式:
①Do[{While|Until}<條件習(xí)
卜過程語句習(xí)
[ExitDo]
卜過程語句習(xí)
Loop
②Do
卜過程語句習(xí)
[ExitDo]
卜過程語句習(xí)
Loop[{Whil句Until}v條件刁
上面格式中,While和Until的作用正好相反。使用While,則當(dāng)〈條件〉為真繼
續(xù)循環(huán)。使用Until,則當(dāng)<條件>為真時,結(jié)束循環(huán)。
把While或Until放在Do子句中,則先判斷后執(zhí)行。把一個While或Until放在
Loop子句中,則先執(zhí)行后判斷。
4.6.6With語句
在引用對象的時候,用With可以簡化代碼中對復(fù)雜對象的引用
O可以用With語句建立一個“基本”對象,然后進一步引用這
個對象上的對象、屬性或方法,直至終止With語句。其語法形
式如下:
Withv對象引用〉
[〈語句組刁
EndWith
4.7VBA應(yīng)用程序的優(yōu)化
471盡量使用系統(tǒng)提供的屬性、方法和函數(shù)
472盡量減少使用對象引用
473減少對象的激活和選擇
474關(guān)閉屏幕更新
4J7.5變量和常量的使用
章目錄節(jié)目錄
4.7.1盡量使用系統(tǒng)提供的屬性、方法和函數(shù)
Office對象有上百個,對象的屬性、方法、事件更是多不勝數(shù),對于初學(xué)者來
說可能對它們不全部了解,因此不能很好地利用這些對象的屬性、方法和函數(shù),
而另編VBA代碼段實現(xiàn)相同的功能。自編代碼段一般要比原有對象的屬性、方法
和函數(shù)完成任務(wù)的效率低的多。
充分利用Worksheet函數(shù)是提高程序運行速度的有效的方法。
4.7.2盡量減少使用對象引用
每個對象的屬性、方法的調(diào)用都需要通過OLE接口的一個或多個調(diào)用,這些
OLE調(diào)用都是需要時間的,減少使用對象引用能加快VBA代碼的運行。
如果一個對象引用被多次使用,則可以將此對象用Set設(shè)置為對象變量,以減
少對對象的訪問次數(shù)。
在循環(huán)中要盡量減少對象的訪問。
4.7.3減少對象的激活和選擇
如果你的通過錄制宏來學(xué)習(xí)VBA的,則你的VBA程序里一定充滿了對象
的激活和選擇,但事實上大多數(shù)情況下這些操作不是必需的。
4.7.4關(guān)閉屏幕更新
關(guān)閉屏幕更新是提高VBA程序運行速度的最有效的方法。關(guān)閉屏幕更新
的方法:
Application.ScreenUpdate=False
請不要忘記VBA程序運行結(jié)束時再將該值設(shè)回來:
Application.ScreenUpdate=True
4.7.5變量和常量的使用
盡管在代碼中使用Variant變量很方便,但VBA在處理Variant變量值比處理顯式
類型變量需要更多的時間。使用Integer或Long變量代替Variant變量處理不帶小數(shù)
的計算速度會更快。
但使用顯式變量會犧牲掉靈活性,如此時可能會遇到溢出問題,而使用Variant
變量則能自動處理這種情況。
章目錄節(jié)目錄
4.8信息及代碼的保護
4.8.1利用VBA設(shè)置工作表使用權(quán)限
通常,我們用EXCEL菜單中的“保護”命令來保護工作表,但有時尚嫌不
足。這時可以在VBA編輯器中對需要保護的工作表編碼。
4.8.2程序代碼的保護
為了不讓使用者查看和修改程序代碼,需要對代碼進行保護。方法如下:
進入VBA編輯環(huán)境,打開“工程資源管理器”窗口,用鼠標(biāo)右擊工程
(VBAProject),在彈出菜單中選“VBAProject屬性”項,在“VBAProject工程
屬性”對話框的“保護”卡中,選中“查看時鎖定工程”復(fù)選框,然后輸入并確
認(rèn)“查看工程屬性的密碼”,最后單擊“確定”按鈕,保存當(dāng)前工作簿并退出。
再次打開工作簿時,要查看或者修改程序代碼,必須輸入正確的密碼。
4.9應(yīng)用舉例
491在Excel中實現(xiàn)定時提醒
492在Word當(dāng)前文檔中插入多個文件的內(nèi)容
4.9.3用WordVBA查漢字區(qū)位碼
494在Word中快速輸入GB2312全部漢字
495在Word文檔中統(tǒng)計指定字符的出現(xiàn)次數(shù)
496中文小大寫金額轉(zhuǎn)換函數(shù)
章目錄節(jié)目錄
1.在上午8點45分顯示一個提醒信息。
進入Excel的VBA編輯環(huán)境,在任意一個模塊中定義兩個過程:
運行過程Run_it,到指定的時刻,屏幕出現(xiàn)的信息如圖提醒
您已經(jīng)1。分鐘沒存盤了,現(xiàn)在就存盤嗎?
海擇是:立刻存盤
連擇否:智不存盤
簿后,每十分鐘提醒依次存盤。選擇取消:不再出現(xiàn)這個提示
二墓歐二』否國)|取消|
進入Excel的VBA編輯環(huán)境,在模塊中定義三個過程:
auto_open過程在打開文檔時自動運行,它發(fā)出提示信息后,調(diào)用過程runtimer
,過程runtimer用Now+TimeVahie("00:10:00")指定在當(dāng)前時間過10分鐘開始運行
Saveit這個過程。
過程Saveit發(fā)出提示信息并提供三種選擇:如果選擇“是",則通過
ActiveWorkbook.Save方法存盤;選擇“否”,不存盤,但再次調(diào)用Runtimer;選
擇“取消”,則結(jié)束程序,不再提示。屏幕出現(xiàn)的提示信息如圖所示。
章目錄節(jié)目錄
4.9.2在Word當(dāng)前文檔中插入多個文件的內(nèi)容
在Word應(yīng)用中,有時需要連續(xù)往當(dāng)前文檔插入多個文件的內(nèi)容。一般我們是在“插入”菜
單中選“文件”項,然后選擇文件夾和文件進行插入。重復(fù)以上操作,可插入需要的所有文件
內(nèi)容。若插入的文件較多,用這種辦法就顯得枯燥而低效。而用VBA程序使上述工作自動化,
可以大大減輕操作負擔(dān),提高工作效率。
比如,將長篇文稿分給幾十個人錄入,最后合并到一個文檔;將事先做好的十幾個圖形文件
插入當(dāng)前文檔;從中央電視臺網(wǎng)站下載的節(jié)目時間表中,各臺節(jié)目是一個獨立的文本文件,將
它們合并到一個文檔。盡管這些工作量不是很大,但用一段小程序自動實現(xiàn),還是可以節(jié)省一
定時間的,感覺也是大不一樣的,更重要的是應(yīng)用水平、應(yīng)用技巧的提高會多方面受益的。
下面以下載的中央電視臺1至8套節(jié)目時間表合并為例,介紹程序的設(shè)計過程和方法,相信對
讀者會有所啟發(fā)。
1.語句、函數(shù)的選用和程序初稿的形成
用一個不太熟悉的編程環(huán)境或語言編寫程序,OfficeXP的宏可以幫我們大忙,它可以使部
分程序的設(shè)計自動化。將需要的操作過程錄制為宏,就得到了相應(yīng)的程序,其中該用哪些語句
、函數(shù)我們一看便知,
進入Word2002,選擇“工具|宏”菜單的“錄制新宏”項,在彈出的對話框中用默認(rèn)的宏名
Macro1,單擊“確定”按鈕后就可以進行宏錄制了。
用“格式”工具欄的按鈕設(shè)置號字為“3號”,對齊方式為“居中”,輸入“中央1套”,回
車。
設(shè)置號字為“5號”,對齊方式為“兩端對齊”,選“插入”菜單的“文件”項,在對話框
中選擇需要的文件夾和文件(如C:\MyDocuments'八套\01.txt),單擊“插入”按鈕,在當(dāng)前文
當(dāng)中插入該文件的內(nèi)容。
停止錄制宏。
.“工具|宏”瑞單中選「宏”項,在彈出的對話框中選MaGrolTq單擊“銅輯”越鈕
章目錄節(jié)目錄1A
2.加工初稿得到需要的程序
通過宏的錄制過程和對應(yīng)代碼的分析,我們不難發(fā)現(xiàn)各語句和函數(shù)的作用。上面錄制的
宏,只是設(shè)置了字號、對齊方式,輸入了一行文字,插入了一個文本文件的內(nèi)容。我們的
目的是連續(xù)插入多個文本文件的內(nèi)容,并進行必要的格式控制。因此,對錄制的宏進行修
改。
3.運行程序
在“工具|宏”菜單中選“宏”項,在彈出的對話框中選Macrol,單擊“運行”按鈕,
就會將中央電視臺1至8套節(jié)目時間表按順序插入到當(dāng)前文檔,每套節(jié)目前邊有一個標(biāo)注文
字(三號字、居中),然后是具體節(jié)目時間表(五號字、兩端對齊)。
為便于操作,也可以自定義一個工具欄,將宏指定為工具欄上的一個按鈕。不用時可刪
除自定義工具欄和按鈕。
以上過程看起來好像也比較復(fù)雜,實際上真正的意義是一次定義多次使用,而且舉一反
三,類似的問題可以直接編程處理。
比如,要往當(dāng)前文檔插入多個圖形文件,文件路徑為“D:\gif,文件名為“bsOl.gif'、
“bs02.gif、……、"bs20.gif,可直接創(chuàng)建一個宏或進入VBA編程環(huán)境定義一個過程,
程序運行后,將15個圖形文件依次插入當(dāng)前文檔。請讀者自行分析代碼。
4.9.3用WordVBA查漢字區(qū)位碼
為了保證漢字信息輸入到計算機的準(zhǔn)確性,許多場合要使用漢字的區(qū)位碼。因
此,填報相關(guān)材料(如中考、高考志愿表等)時,漢字信息需要同時填寫區(qū)位碼
O通常,區(qū)位碼可以查表得到,但是如果手頭暫時沒有區(qū)位碼表,怎么查找每個
漢字的區(qū)位碼呢?下面的VBA小程序可以幫助我們解決問題。
進入Word2002,選“工具|宏”菜單的“宏”項,在“宏”對話框中輸入宏名
“查區(qū)位碼”,單擊“創(chuàng)建”按鈕,進入VBA編輯環(huán)境
選中要查區(qū)位碼的漢字,選擇“工具|宏”菜單的“宏”項,在“宏
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國銀行法律顧問合同范本
- 勞務(wù)分包個人合同范本
- 中醫(yī)飲售賣合同范本
- 剩余產(chǎn)品合同范本
- 農(nóng)業(yè)土豆銷售合同范本
- 公務(wù)車服務(wù)合同范本
- 個人包車協(xié)議合同范本
- 制定企業(yè)合同范本
- 個人餐館轉(zhuǎn)讓合同范本
- 單位買車合同范例
- 大學(xué)學(xué)院學(xué)生獎助資金及相關(guān)經(jīng)費發(fā)放管理暫行辦法
- 2022蘇教版科學(xué)五年級下冊全冊優(yōu)質(zhì)教案教學(xué)設(shè)計
- 加油員的安全生產(chǎn)責(zé)任制
- 2023年R2移動式壓力容器充裝操作證考試題及答案(完整版)
- 九年級物理實驗記錄單
- 2022年湖北省高中學(xué)業(yè)水平考試真題-音樂學(xué)科
- 提高屋面防水施工質(zhì)量年QC成果
- 部編初中語文古詩詞按作者分類梳理
- 博朗IRT6520中文說明書家用版
- 旅行社運營實務(wù)電子課件 1.1 初識旅行社
- 【讀書如熬粥閱讀答案】讀書如熬粥閱讀答案
評論
0/150
提交評論