VBA編程教學(xué)課件_第1頁
VBA編程教學(xué)課件_第2頁
VBA編程教學(xué)課件_第3頁
VBA編程教學(xué)課件_第4頁
VBA編程教學(xué)課件_第5頁
已閱讀5頁,還剩49頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論