第11章模塊與VBA編程_第1頁(yè)
第11章模塊與VBA編程_第2頁(yè)
第11章模塊與VBA編程_第3頁(yè)
第11章模塊與VBA編程_第4頁(yè)
第11章模塊與VBA編程_第5頁(yè)
已閱讀5頁(yè),還剩58頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第11章模塊與VBA編程,計(jì)算機(jī)應(yīng)用基礎(chǔ),第11章模塊與VBA編程,第11章 模塊與VBA編程,第11章模塊與VBA編程,教學(xué)目標(biāo),了解模塊的概念 掌握VBA編程基礎(chǔ) 掌握VBA程序結(jié)構(gòu) 掌握過程定義與調(diào)用 掌握VBA的數(shù)據(jù)庫(kù)編程,雙語(yǔ)課堂 C,重點(diǎn)與難點(diǎn):VBA數(shù)據(jù)庫(kù)編程,第11章模塊與VBA編程,引言,Access擁有一套功能強(qiáng)大的編程工具VBA,使用這套編程工具,用戶可以開發(fā)出功能比較完善的數(shù)據(jù)庫(kù)系統(tǒng)。 VBA是Visual Basic for Application的英文縮寫,是用Basic語(yǔ)言作為語(yǔ)法基礎(chǔ)的可視化的高級(jí)語(yǔ)言,是應(yīng)用在Office產(chǎn)品內(nèi)部的編程語(yǔ)言。,第11章模塊與VB

2、A編程,11.1 模塊的概念,模塊是Access數(shù)據(jù)庫(kù)中最后一個(gè)重要的對(duì)象,它是用VBA語(yǔ)言編寫的,模塊起著存放用戶編寫的VBA代碼的作用。,第11章模塊與VBA編程,一.模塊的分類,模塊有兩種基本類型:標(biāo)準(zhǔn)模塊和類模塊。 1標(biāo)準(zhǔn)模塊 標(biāo)準(zhǔn)模塊包含通用過程和常用過程; 供各個(gè)數(shù)據(jù)庫(kù)的對(duì)象使用,作用范圍在整個(gè)應(yīng)用程序中,生命周期是伴隨著應(yīng)用程序的運(yùn)行而開始、伴隨著應(yīng)用程序的關(guān)閉而結(jié)束; 標(biāo)準(zhǔn)模塊具有全局特性。,第11章模塊與VBA編程,類模塊 類模塊是含有類定義的模塊,包括其屬性和方法的定義; 窗體模塊和報(bào)表模塊都是類模塊,它們分別與某個(gè)窗體或報(bào)表相關(guān)聯(lián); 窗體模塊和報(bào)表模塊的作用范圍在其所屬的

3、窗體或報(bào)表內(nèi)部,其生命周期是隨著窗體或報(bào)表的打開而開始,隨著窗體或報(bào)表的關(guān)閉而結(jié)束; 窗體模塊和報(bào)表模塊具有局部特性。,第11章模塊與VBA編程,二.宏與模塊,宏的操作功能,同樣可以在模塊對(duì)象中通過編寫VBA語(yǔ)句來實(shí)現(xiàn),也可以將已創(chuàng)建好的宏轉(zhuǎn)換為等價(jià)的VBA模塊。 1將宏轉(zhuǎn)換為模塊 轉(zhuǎn)換窗體或報(bào)表中的宏 將全局宏轉(zhuǎn)換為模塊 .宏與模塊的選擇 凡是宏無法實(shí)現(xiàn)的或者用宏實(shí)現(xiàn)起來比較繁瑣的功能,都可以通過VBA來完成。,第11章模塊與VBA編程,三.模塊的組成,模塊由聲明和過程兩個(gè)部分組成,一個(gè)模塊中有一個(gè)聲明區(qū)域和一個(gè)或多個(gè)過程,在聲明區(qū)域?qū)^程中用到的變量進(jìn)行聲明,過程是模塊的組成單元,分為子(

4、Sub)過程和函數(shù)(Function)兩類。,第11章模塊與VBA編程,四.創(chuàng)建VBA模塊與編程環(huán)境,Access系統(tǒng)提供了一個(gè)編程界面VBE(Visual Basic Editor)。在VBE窗口可以完成Access的模塊設(shè)計(jì)。 1進(jìn)入VBE編程環(huán)境 進(jìn)入類模塊的方法 進(jìn)入標(biāo)準(zhǔn)模塊的方法 2VBE界面 VBE工具欄、工程窗口、屬性窗口、代碼窗口,第11章模塊與VBA編程,11.2 VBA編程基礎(chǔ),第11章模塊與VBA編程,一.數(shù)據(jù)類型,VBA提供了較為完備的的數(shù)據(jù)類型,它包含了除Access表中的OLE對(duì)象和備注類型以外的其他所有數(shù)據(jù)類型,包括基本數(shù)據(jù)類型和用戶自定義數(shù)據(jù)類型。,第11章模塊

5、與VBA編程,二.常量,常量表示一個(gè)具體的、不變的值。VBA的常量包括數(shù)值常量、字符常量、符號(hào)常量、系統(tǒng)常量和內(nèi)部常量5種。其中數(shù)值常量和字符常量最常用。 1數(shù)值常量 數(shù)值常量由數(shù)字等組成,如256、123.45、34.123 E-5等。 2字符常量 由定界符括起來的一串字符,如“Computer”、“ABC” “武漢”等。,第11章模塊與VBA編程,3符號(hào)常量 符號(hào)常量可用Const語(yǔ)句創(chuàng)建,格式如下: Const 符號(hào)常量名稱=常量值 其中符號(hào)常量的名稱一般用大寫命名,以便和變量區(qū)分。 如果在Const前面加上Global或Public,則定義的符號(hào)常量就是全局符號(hào)常量,這樣,在所有的模塊

6、中都可以使用。 在定義符號(hào)常量時(shí),不需要為常量指出數(shù)據(jù)類型,VBA會(huì)自動(dòng)按存儲(chǔ)效率最高的方式確定其數(shù)據(jù)類型。 在程序運(yùn)行過程中對(duì)符號(hào)常量只能作讀取操作,而不能對(duì)其進(jìn)行修改或重新賦值。 4系統(tǒng)常量 系統(tǒng)常量是指Access啟動(dòng)時(shí)自動(dòng)建立的常量,包括True、False、Yes、No、Off、On和Null等,可以在Access中的任何地方使用系統(tǒng)常量。,第11章模塊與VBA編程,5內(nèi)部常量 內(nèi)部常量是VBA預(yù)定義的內(nèi)部符號(hào)常量,所有內(nèi)部常量均可在宏或VBA代碼中使用。 內(nèi)部常量通過前兩個(gè)字母來指明定義該常量的對(duì)象庫(kù)。來自Access庫(kù)的常量以“ac”開頭,例如acCmdSaveAs,來自Acti

7、veX Data Objects(ADO)庫(kù)的常量以“ad”開頭,而來自VB庫(kù)的常量則以“vb”開頭。,第11章模塊與VBA編程,三.變量,變量是指在應(yīng)用過程中其值可以改變的量。 1變量的命名規(guī)則 變量名只能由字母、數(shù)字和下劃線組成; 變量名只能以字母開頭; 變量名不能使用系統(tǒng)保留的關(guān)鍵字,例如PRINT、WHERE等; 在VBA的變量名中不區(qū)分大小寫字母,例如ABC、abc或abc表示同一個(gè)變量; 在VBA中的過程名、符號(hào)常量名、自定義類型名、元素名等在命名時(shí)都遵循以上的規(guī)則; 通常采用大小寫字母混合的方式,例如PhntText。,第11章模塊與VBA編程,2變量類型的定義 根據(jù)對(duì)變量類型定

8、義的方式不同可以將變量分為兩種形式。 (1) 隱含型變量 隱含型變量是指在使用變量時(shí),在變量名之后添加不同的后綴表示變量的不同類型。 例如:NewVar%=65 如果在變量名稱后面沒有添加后綴字符來指明隱含變量的類型時(shí),系統(tǒng)會(huì)默認(rèn)為Variant數(shù)據(jù)類型。,第11章模塊與VBA編程,(2) 顯式變量 顯式變量是指在使用變量時(shí)要先定義,后使用,定義變量采用下面的方式: Dim 變量名As 類型名 例如:Dim NewVar As Integer Dim MyName As String*10 在一條Dim語(yǔ)句中也可以定義多個(gè)變量,例如: Dim Varl AS String,Var2 AS Do

9、uble 在Dim語(yǔ)句中省略了As和類型名時(shí)表示定義的是變體類型。例如: Dim Varl,Var2 As Double,第11章模塊與VBA編程,3變量的作用域 作用域是指變量在程序中可使用的范圍,定義變量的位置不同,其作用范圍也不同。根據(jù)變量的作用域,可以將變量分為3類,分別是局部變量、模塊變量和全局變量。 (1)局部變量 指定義在模塊過程內(nèi)部的變量。局部變量的作用域是它所在的過程,這樣,在不同的過程中就可以定義同名的變量,它們之間是相互獨(dú)立的。,第11章模塊與VBA編程,(2) 模塊變量 指在模塊的起始位置、所有過程之外定義的變量,運(yùn)行時(shí)模塊所包含的所有子過程和函數(shù)中都可以使用該變量。

10、4數(shù)據(jù)庫(kù)對(duì)象變量 窗體對(duì)象的引用格式如下: Forms!窗體名稱!控件名稱.屬性名稱 報(bào)表對(duì)象的引用格式如下: Repons!報(bào)表名稱!控件名稱.屬性名稱 上面的格式中如果省略了屬性名稱,則表示控件的基本屬性。,第11章模塊與VBA編程,例如,設(shè)置“學(xué)生基本情況”窗體中“學(xué)號(hào)”文本框的屬性,用VBA程序代碼表示如下: Forms!學(xué)生基本情況!學(xué)號(hào) = ”070501” 等價(jià)于:Forms!學(xué)生基本情況!學(xué)號(hào).Value = ”070501” 下面使用Set建立控件對(duì)象的變量,這樣,在引用對(duì)象時(shí)就很方便。 首先定義一個(gè)控件類型的變量: Dim txtName AS Control 然后為該變量

11、指定窗體控件對(duì)象: Set txtName = Forms!學(xué)生基本情況!學(xué)號(hào) 以后就可以使用下面的方法引用對(duì)象了: txtName = ”070501”,第11章模塊與VBA編程,四.運(yùn)算符與表達(dá)式,表達(dá)式是指用運(yùn)算符將常量、變量和函數(shù)連接起來的有意義的式子。VBA中有算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、連接運(yùn)算符和對(duì)象運(yùn)算符。 1算術(shù)運(yùn)算符與算術(shù)表達(dá)式 包括乘冪“”、乘法“*”、除法“”、整數(shù)除法“”、求?!癕od”、加法“+”和減法“”7個(gè)運(yùn)算符。,第11章模塊與VBA編程,2關(guān)系運(yùn)算符關(guān)系表達(dá)式 用來表示兩個(gè)值或表達(dá)式之間的大小關(guān)系,有相等“=”、不等“”、大于“”、大于等于“=”、小

12、于“”、小于等于“=”6個(gè)運(yùn)算符。比較運(yùn)算的結(jié)果為邏輯值,分別是True(真)和False(假)。 3邏輯運(yùn)算符與邏輯表達(dá)式 邏輯運(yùn)算符有邏輯與“AND”、邏輯或“OR”和邏輯非“NOT”3個(gè)運(yùn)算符。,第11章模塊與VBA編程,優(yōu)先級(jí)順序依次為:NOT AND OR 由邏輯量構(gòu)成的表達(dá)式進(jìn)行算術(shù)運(yùn)算時(shí),True值當(dāng)成-1,F(xiàn)alse的值當(dāng)作0來處理,第11章模塊與VBA編程,2關(guān)系運(yùn)算符關(guān)系表達(dá)式 用來表示兩個(gè)值或表達(dá)式之間的大小關(guān)系,有相等“=”、不等“”、大于“”、大于等于“=”、小于“”、小于等于“=”6個(gè)運(yùn)算符。比較運(yùn)算的結(jié)果為邏輯值,分別是True(真)和False(假)。 3邏輯運(yùn)

13、算符與邏輯表達(dá)式 邏輯運(yùn)算符有邏輯與“AND”、邏輯或“OR”和邏輯非“NOT”3個(gè)運(yùn)算符。,第11章模塊與VBA編程,4連接運(yùn)算符 它將兩個(gè)字符串連接,連接運(yùn)算符有“+”和“&”兩個(gè)。 “+”運(yùn)算符是當(dāng)兩個(gè)運(yùn)算量都是字符串?dāng)?shù)據(jù)時(shí),將其連接成一個(gè)新的字符串?!?”用來對(duì)兩個(gè)表達(dá)式強(qiáng)制進(jìn)行連接。 例如:“abc”+“xyz”的結(jié)果是“abcxyz”; 2+3 & = & (2+3)的結(jié)果是2+3=5。 以上的4類運(yùn)算符優(yōu)先級(jí)從高到低的順序是算術(shù)運(yùn)算符、連接運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符。,第11章模塊與VBA編程,5對(duì)象運(yùn)算符與對(duì)象運(yùn)算表達(dá)式 VBA中有各種對(duì)象,包括表、查詢、窗體、報(bào)表等。窗體

14、上的控件,如文本框、命令按鈕等都是對(duì)象。所謂對(duì)象表達(dá)式是指用來說明具體對(duì)象的表達(dá)式。對(duì)象表達(dá)式中使用“!”和“.”兩種運(yùn)算符。 !運(yùn)算符的作用是指明隨后用戶定義的內(nèi)容。使用!運(yùn)算符可以引用一個(gè)已經(jīng)打開的窗體、報(bào)表或其上的控件,也可以在表達(dá)式中引用一個(gè)對(duì)象或?qū)ο蟮膶傩浴?例如:Forms!學(xué)生基本情況!學(xué)號(hào) 點(diǎn)運(yùn)算符(.)通常指出隨后為Access定義的內(nèi)容。使用. 運(yùn)算符可引用窗體、報(bào)表或控件等對(duì)象的屬性。例如:Repons!學(xué)生成績(jī)單!學(xué)號(hào).Visible,第11章模塊與VBA編程,五.屬性、方法和事件,屬性、方法和事件構(gòu)成了對(duì)象的基本元素,創(chuàng)建了一個(gè)對(duì)象后,對(duì)一個(gè)對(duì)象的操作是通過與該對(duì)象有

15、關(guān)的屬性、方法和事件來描述的 1屬性 屬性描述了對(duì)象的性質(zhì),例如,標(biāo)簽對(duì)象中的字體名稱、字體大小。對(duì)象的屬性可以通過“屬性”對(duì)話框進(jìn)行設(shè)置,也可以通過編程設(shè)置。用VBA程序代碼設(shè)置屬性的一般格式為: 對(duì)象名.屬性名=屬性值,第11章模塊與VBA編程,2方法 對(duì)象的方法描述了對(duì)象的行為,即在特定的對(duì)象上執(zhí)行的一種特殊的過程或函數(shù)。方法通常在代碼中使用,其格式為: 對(duì)象名.方法 3事件 事件是由Access定義好的,可以被對(duì)象識(shí)別的動(dòng)作,例如,命令按鈕就具有單擊、雙擊等事件,事件通常由VBA的子過程或函數(shù)過程實(shí)現(xiàn)。,第11章模塊與VBA編程,六.常用的事件,在Access系統(tǒng)中,常用事件有:鼠標(biāo)事

16、件、鍵盤事件、窗口事件、對(duì)象事件和操作事件等。 1鼠標(biāo)常用事件 (1)Click事件:每單擊一次鼠標(biāo),激發(fā)一次該事件; (2)Dblelick事件:每雙擊一次鼠標(biāo),激發(fā)一次該事件; (3)MouseMove事件:移動(dòng)鼠標(biāo)所激發(fā)的事件; (4)MouseUp事件:釋放鼠標(biāo)所激發(fā)的事件; (5)MouseDown事件:按下鼠標(biāo)所激發(fā)的事件。,第11章模塊與VBA編程,2鍵盤常用事件 (1)KeyPress事件:每敲擊一次鍵盤,激發(fā)一次該事件; (2)KeyDown事件:每按下一個(gè)鍵,激發(fā)一次該事件; (3)KeyUp事件:每釋放一個(gè)鍵,激發(fā)一次該事件。 3窗體常用事件 (1)Open事件:打開窗體

17、事件; (2)Load事件:加載窗體事件; (3)Resize事件:重繪窗體事件; (4)Active事件:激活窗體事件; (5)Unload事件:卸載窗體事件; (6)Close事件:關(guān)閉窗體事件。,第11章模塊與VBA編程,4對(duì)象常用事件 (1)GotFocus事件:獲得焦點(diǎn)事件; (2)LostFocus事件:失去焦點(diǎn)事件; (3)BeforeUpdate事件:更新前事件; (4)AfterUpdate事件:更新后事件; (6)Chang事件:更改事件。 5操作常用事件 (1)Delete事件:刪除事件; (2)BeforeInsert事件:插入前事件; (3)AfterInsert事件

18、:插入后事件。,第11章模塊與VBA編程,七. DOCmd對(duì)象及其常用的方法,在Access系統(tǒng)中,常用事件有:鼠標(biāo)事件、鍵盤事件、窗口事件、對(duì)象事件和操作事件等。 1DoCmd對(duì)象 通過該對(duì)象,可以調(diào)用Access內(nèi)部的方法,這樣就可以在VBA程序中實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作 用DoCmd調(diào)用方法的格式如下: DoCmd.方法名 參數(shù)表,第11章模塊與VBA編程,2DoCmd常用的方法 DoCmd常用的方法包括打開窗體、報(bào)表、表和查詢等對(duì)象,以及關(guān)閉這些對(duì)象; DoCmd對(duì)象的大多數(shù)方法都有參數(shù),有些參數(shù)是必需的,而有些參數(shù)可選的。 (1)打開窗體操作 DoCmd.OpenForm formnam

19、e,view,filtemame,wherecondition,datamode ,windowmode,openargs (2)打開報(bào)表操作 打開報(bào)表使用OpenReport方法,命令格式如下: DoCmd.OpenReport reportname,view,filtername,wherecondition,第11章模塊與VBA編程,(3)打開表操作 打開表使用OpenTable方法,格式如下: DoCmd.OpenTable tablename,view,datamode (4)打開查詢操作 打開查詢的操作格式如下: DoCmd.OpenQuery queryname,view,dat

20、amode (5)關(guān)閉對(duì)象操作 Close方法用來關(guān)閉對(duì)象,命令格式如下: DoCmd.Closeobjecttype,objectname, save,第11章模塊與VBA編程,11.3 VBA的程序結(jié)構(gòu),第11章模塊與VBA編程,一.語(yǔ)句,一個(gè)程序由若干條語(yǔ)句構(gòu)成,一條語(yǔ)句是可以完成某個(gè)操作的一條命令,按功能不同,可以將語(yǔ)句分為兩類; 一類是聲明語(yǔ)旬,用于定義變量、常量或過程,另一類是執(zhí)行語(yǔ)句,用于執(zhí)行賦值操作、調(diào)用過程、實(shí)現(xiàn)各種流程控制; 根據(jù)流程控制的不同,執(zhí)行語(yǔ)句可以構(gòu)成以下3種結(jié)構(gòu): 順序結(jié)構(gòu):按照語(yǔ)句的先后順序集資執(zhí)行。 分支結(jié)構(gòu):又稱為條件結(jié)構(gòu)或選擇結(jié)構(gòu),是根據(jù)條件選擇執(zhí)行不同

21、的分支。 循環(huán)結(jié)構(gòu):是根據(jù)某個(gè)條件重復(fù)執(zhí)行某一段程序語(yǔ)句。,第11章模塊與VBA編程,1VBA程序的書寫格式 在書寫程序時(shí),要遵循下面的規(guī)則: 習(xí)慣上將一條語(yǔ)句寫在一行。 如果一條語(yǔ)句較長(zhǎng)、一行寫不下時(shí),可以將語(yǔ)句寫在連續(xù)的多行,除了最后一行之外,前面每一行的行末要使用續(xù)行符“_”。 幾條語(yǔ)句寫在一行時(shí),可以使用冒號(hào)“:”分隔各條語(yǔ)句。 2注釋語(yǔ)句 在VBA程序中,可以使用兩種方法為程序添加注釋。 使用Rem語(yǔ)句,其格式為:Rem 注釋內(nèi)容 在某條語(yǔ)句之后加上英文的單引號(hào),單引號(hào)之后的內(nèi)容為注釋內(nèi)容。,第11章模塊與VBA編程,3聲明語(yǔ)句 聲明語(yǔ)句用來定義和命名變量、符號(hào)常量和過程,在定義這些

22、內(nèi)容的同時(shí),也定義了它們的作用范圍。 4賦值語(yǔ)句 賦值語(yǔ)句用來為變量指定一個(gè)值,它的格式如下: 變量名 = 值或表達(dá)式 該語(yǔ)句的執(zhí)行過程是:先計(jì)算表達(dá)式,然后將其值賦給變量。 為對(duì)象的屬性賦值,使用的格式如下: 對(duì)象名屬性 = 屬性值,第11章模塊與VBA編程,二.數(shù)據(jù)的輸入輸出,在VBA中用于輸入和輸出的有以下兩個(gè)函數(shù): InputBox函數(shù) 說明:使用輸入對(duì)話框來輸入數(shù)據(jù),輸入對(duì)話框中包含文本框、提示信息和命令按鈕。 函數(shù)格式:InputBox( PromptTitle,Default,Xpos,Ypos ) 各參數(shù)的含義如下: Prompt:顯示在對(duì)話框中的提示字符串。 Title:顯示

23、在對(duì)話框標(biāo)題欄中的內(nèi)容。 Default:在沒有輸入數(shù)據(jù)時(shí),顯示文本框中的默認(rèn)值。 Xpos:對(duì)話框右側(cè)與屏幕左側(cè)的水平距離,默認(rèn)時(shí)對(duì)話框在水平方向居中。 Ypos:對(duì)話框上側(cè)與屏幕上邊的垂直距離,默認(rèn)時(shí)對(duì)話框放置在垂直方向距下邊約1/3的位置。 函數(shù)的返回值就是用戶在對(duì)話框中輸入的字符型數(shù)據(jù)。,第11章模塊與VBA編程,MsgBox函數(shù) 消息框是一種對(duì)話框,可以用來顯示警告信息或其他的提示信息,一個(gè)消息框由4個(gè)部分組成:標(biāo)題、提示信息、圖標(biāo)和命令按鈕。 函數(shù)格式:MsgBox( Prompt,Buttons,Title ) 除了第一個(gè)參數(shù)是必須的,其他參數(shù)都是可選的,各參數(shù)的含義如下: Pr

24、ompt:顯示在對(duì)話框中的提示字符串。 Title:顯示在對(duì)話框標(biāo)題欄中的提示字符串。 Buttons:為整型參數(shù),該參數(shù)可以使用3組vb常量,分別設(shè)定要顯示的按鈕類型和數(shù)目、出現(xiàn)在消息框中的圖標(biāo)樣式及默認(rèn)按鈕是哪一個(gè)。,第11章模塊與VBA編程,三.程序流程控制,在VBA程序代碼中,程序的流程有3種:順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。 1順序結(jié)構(gòu) 簡(jiǎn)單的程序大多為順序結(jié)構(gòu),整個(gè)程序按書寫順序依次執(zhí)行。 2分支結(jié)構(gòu) 在VBA中,構(gòu)成分支結(jié)構(gòu)的語(yǔ)句有If語(yǔ)句和Select語(yǔ)句。 (1)簡(jiǎn)單分支語(yǔ)句 語(yǔ)法格式如下: If Then End If 功能:如果條件為真,執(zhí)行Then下面的語(yǔ)句序列,如果條件

25、為假,則不執(zhí)行Then下面的語(yǔ)句序列而直接執(zhí)行End If后面的語(yǔ)句。,第11章模塊與VBA編程,(2)選擇分支語(yǔ)句 If Then Else End If (3)多重選擇分支語(yǔ)句 If Then ElseIf Then ElseIf Then Else End If,功能:如果條件為真,執(zhí)行Then下面的語(yǔ)句序列1,如果條件為假,則執(zhí)行Else下面的語(yǔ)句序列2。 功能:如果條件1為真,執(zhí)行Then下面的語(yǔ)句序列1,如果條件為假,則繼續(xù)判斷條件2,若為真,執(zhí)行語(yǔ)句序列2,否則繼續(xù)判斷下一個(gè)條件。如此下去,若前面的條件均不成立,則檢查有無Else語(yǔ)句,若有,則無條件執(zhí)行Else下面的語(yǔ)句序列,若

26、無,則什么都不執(zhí)行,程序直接跳轉(zhuǎn)到End If之后。,第11章模塊與VBA編程,(4)多重分支語(yǔ)句 Select Case 測(cè)試表達(dá)式 Case 表達(dá)式列表l 語(yǔ)句序列1 Case 表達(dá)式列表2 語(yǔ)句序列2 Case 表達(dá)式列表n 語(yǔ)句序列n Case Else 語(yǔ)句序列n+l End Select,功能:Case語(yǔ)句的匹配測(cè)試是按順序進(jìn)行的,如果有多個(gè)分支的值與測(cè)試表達(dá)式相匹配,則只執(zhí)行第一個(gè)相匹配的Case下面的語(yǔ)句序列,其他符合條件的分支不會(huì)再執(zhí)行。如果沒有找到匹配的條件,則VBA執(zhí)行Case Else子句(此項(xiàng)是可選的)中的語(yǔ)句。,第11章模塊與VBA編程,1循環(huán)結(jié)構(gòu) 在VBA中可以使

27、用DoLoop與ForNext實(shí)現(xiàn)循環(huán)結(jié)構(gòu)。 (1)DoLoop循環(huán)語(yǔ)句 DO While 條件式 循環(huán)體 Exit DO Loop 語(yǔ)句的執(zhí)行過程如下: 計(jì)算“條件式”,當(dāng)“條件式”為真時(shí)執(zhí)行,否則,結(jié)束循環(huán)。 執(zhí)行循環(huán)體。 遇到Loop跳轉(zhuǎn)到 。 在循環(huán)體中可以有條件地使用Exit Do語(yǔ)句,目的是使循環(huán)提前結(jié)束并退出循環(huán)。,第11章模塊與VBA編程,DO Until 條件式 循環(huán)體 Exit DO Loop 語(yǔ)句的執(zhí)行過程與DoWhileLoop語(yǔ)句相似,唯一不同的是,在該結(jié)構(gòu)中,當(dāng)條件式的值為假時(shí)重復(fù)執(zhí)行循環(huán),直到條件式為真時(shí)結(jié)束循環(huán)。 上面兩種格式的共同特點(diǎn)是先判斷條件式,后執(zhí)行循環(huán)

28、體,也可以將這兩種結(jié)構(gòu)中的條件式放在循環(huán)結(jié)構(gòu)的末尾,即先執(zhí)行后判斷,這樣,DoLoop語(yǔ)句又有下面兩種演變形式。,第11章模塊與VBA編程,DoWhileLoop形式的另一種寫法如下: DO 循環(huán)體 Exit DO Loop While 條件式 DoUntilLoop形式的另一種寫法如下: DO 循環(huán)體 Exit DO Loop Until條件式 這兩種演變格式保證循環(huán)體至少執(zhí)行一次。,第11章模塊與VBA編程,(2)ForNext循環(huán)語(yǔ)句 DoLoop循環(huán)適用于循環(huán)次數(shù)無法預(yù)先確定的循環(huán)應(yīng)用。對(duì)于循環(huán)次數(shù)可以預(yù)先確定的循環(huán)應(yīng)用,則可以采用ForNext循環(huán),它有利于程序的清晰與可讀性。 Fo

29、rNext語(yǔ)句的語(yǔ)法格式如下: For 循環(huán)變量 = 初值 TO 終值 Step步長(zhǎng) 循環(huán)體 Exit For Next 循環(huán)變量 For語(yǔ)句的執(zhí)行過程如下: 循環(huán)變量取初值。 檢查循環(huán)變量的值是否超過終值,若未超過終值,循環(huán)繼續(xù),執(zhí)行;若超過終值,則跳過循環(huán)體,轉(zhuǎn)而執(zhí)行Next后面的語(yǔ)句。 執(zhí)行循環(huán)體。 循環(huán)變量增加一個(gè)步長(zhǎng)值,程序跳轉(zhuǎn)到。 注:如果步長(zhǎng)為1,則關(guān)鍵字Step和步長(zhǎng)都可以省略,如果終值小于初值,步長(zhǎng)應(yīng)為負(fù)值,否則循環(huán)體一次也不執(zhí)行。,第11章模塊與VBA編程,四.VBA程序的調(diào)試,在VBE中,程序錯(cuò)誤大致分為兩類,一類是語(yǔ)法 錯(cuò)誤,一類是邏輯錯(cuò)誤。 1調(diào)試工具 2設(shè)置斷點(diǎn) 3

30、單步跟蹤 4使用不同的調(diào)試窗口,第11章模塊與VBA編程,11.4 過程定義和調(diào)用,VBA使用的過程有子(Sub)過程、函數(shù)(Function)過程和屬性(Property)過程。,第11章模塊與VBA編程,一.子過程的定義和調(diào)用,1子過程的定義 子過程的定義使用Sub語(yǔ)句,定義格式如下: Public|PrivateStaticSub子過程名(形式參數(shù) ) 子過程語(yǔ)句 Exit Sub 子過程語(yǔ)句 End Sub 說明: 使用Public表示該過程可以被任何模塊中的任何過程訪問,使用Private時(shí),表示該過程只能在聲明它的模塊中使用。 使用Static時(shí),表示在兩次調(diào)用之間保留過程中的局部

31、變量的值。 形式參數(shù)簡(jiǎn)稱形參,用來接收調(diào)用過程時(shí)由實(shí)參傳遞過來的參數(shù)。如果有多個(gè)形參,則參數(shù)之間用逗號(hào)分開。,第11章模塊與VBA編程,2子過程的調(diào)用 子過程的調(diào)用可以使用兩種形式: Call子過程名 (實(shí)際參數(shù)) 或 子過程名 實(shí)際參數(shù) 上式中的實(shí)際參數(shù)簡(jiǎn)稱實(shí)參,是傳遞給形參的數(shù)據(jù)。 如果使用Call來調(diào)用一個(gè)需要參數(shù)的過程,則形參要放在括號(hào)中,如果省略了關(guān)鍵字Call,則形參外面的括號(hào)也必須省略。 每調(diào)用一次過程,Sub與End Sub之間的語(yǔ)句就執(zhí)行一次。,第11章模塊與VBA編程,1函數(shù)過程的定義 Public|PrivateStatic Function 函數(shù)過程名(形參 )As 數(shù)

32、據(jù)類型 函數(shù)過程語(yǔ)句 函數(shù)過程名 = 表達(dá)式 Exit Function 函數(shù)過程語(yǔ)句 函數(shù)過程名 = 表達(dá)式 End Function 說明: 其中的Public、Private和Static的作用與Sub過程中是一樣的。 格式中的As 數(shù)據(jù)類型用來指定函數(shù)返回值的類型。 格式中的函數(shù)過程名 = 表達(dá)式用來定義函數(shù)返回的值。,二.函數(shù)過程的定義和調(diào)用,第11章模塊與VBA編程,2函數(shù)過程的調(diào)用 函數(shù)過程的調(diào)用只能使用一種形式: 函數(shù)過程名(實(shí)際參數(shù)) 由于函數(shù)有返回值,實(shí)際使用函數(shù)調(diào)用時(shí),通過有兩種用 法,一種是將返回值賦給某個(gè)變量,也就是使用下面的格式: 變量名 = 函數(shù)過程名(實(shí)際參數(shù)) 另一種方法是將函數(shù)的返回值作為另一個(gè)過程調(diào)用中的實(shí)參。,第11章模塊與VBA編程,11.5 VBA的數(shù)據(jù)庫(kù)編程,使用VBA訪問數(shù)據(jù)庫(kù),目的是為了更快速、更有效地管理數(shù)據(jù),開發(fā)更實(shí)用的應(yīng)用程序,這就是VBA的數(shù)據(jù)庫(kù)編程。,第11章模塊與VBA編程,一.數(shù)據(jù)庫(kù)引擎及其接口,所謂數(shù)據(jù)庫(kù)引擎實(shí)際上是一組動(dòng)態(tài)鏈接庫(kù)(DLL),當(dāng)程序運(yùn)行時(shí),被連接到VBA程序而實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)的訪問功能。 數(shù)據(jù)庫(kù)引擎是一種通用的接口方式,是應(yīng)用程序與數(shù)據(jù)庫(kù)之間的橋梁,用戶可以用統(tǒng)一的方式訪問不同的數(shù)據(jù)庫(kù)。這樣的數(shù)據(jù)與程序相對(duì)獨(dú)立,減少了大量數(shù)據(jù)的冗余。 在VBA中,主要有3種數(shù)據(jù)庫(kù)訪問接口,分

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論