《vba編程基礎(chǔ)》PPT課件.ppt_第1頁
《vba編程基礎(chǔ)》PPT課件.ppt_第2頁
《vba編程基礎(chǔ)》PPT課件.ppt_第3頁
《vba編程基礎(chǔ)》PPT課件.ppt_第4頁
《vba編程基礎(chǔ)》PPT課件.ppt_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第8章VBA程序設(shè)計(jì) 主要內(nèi)容 Vba概述Vba編程基礎(chǔ)程序流程控制面向?qū)ο蟮某绦蛟O(shè)計(jì) 2 3 8 1VBA概述 1 VBA簡介VBA是VisualBasicforApplication的縮寫 是微軟Office系列軟件的內(nèi)置編程語言 與VisualBasic具有相同的語言功能 在VBA中 程序是由過程組成的 過程由根據(jù)VBA規(guī)則書寫的指令組成 用VBA編寫的代碼將保存在Access的一個模塊里 并通過類似在窗體中激發(fā)宏的操作那樣來啟動這個模塊 從而實(shí)現(xiàn)相應(yīng)的功能 4 2 VBA的編程環(huán)境 5 8 2VBA編程基礎(chǔ) 一 數(shù)據(jù)類型VBA支持多種數(shù)據(jù)類型 Access數(shù)據(jù)表中的字段使用的數(shù)據(jù)類型 OLE對象和備注類型除外 在VBA中都有對應(yīng)的類型 VBA的數(shù)據(jù)類型 符號 字段類型及取值范圍 如表9 9所示 P229 6 二 常量和變量 1 常量常量是指在程序運(yùn)行時(shí)其值不會發(fā)生改變的數(shù)據(jù) VBA的常量有4種類型 1 直接常量直接常量就是直接表示的數(shù)值或字符串 如1234 17 28E 9 StuID 等 2 符號常量符號常量使用關(guān)鍵字Const來定義 格式如下 Const符號常量名稱 常量值例 ConstPI 3 1415926 3 固有常量特殊的符號常量 已經(jīng)預(yù)先在類庫中定義好 例 visualbasic類庫的常量以 vb 開頭 如vbred 7 2 變量 變量是指程序運(yùn)行時(shí)值會發(fā)生變化的數(shù)據(jù) 變量的三要素是 變量名 變量類型和變量的值 變量名只能由字母 數(shù)字 漢字和下劃線組成 且必須以字母開頭 不區(qū)分字母的大小寫 長度不能超過255 對變量進(jìn)行聲明可以使用類型說明符號 Dim語句和DefType語句 8 1 使用類型說明符號聲明變量 VBA中的類型說明符號有 Integer Long Single Double String Currency 使用時(shí)放在變量名稱的末尾 例 intX 123x 123douY 12 34strZ VBA 9 2 使用Dim語句聲明變量 聲明變量的一般方法是用Dim語句 其格式為 Dim變量名 As數(shù)據(jù)類型 說明 省略 As數(shù)據(jù)類型 則默認(rèn)定義的變量為Variant數(shù)據(jù)類型 可以使用Dim語句在一行中聲明多個變量 例 DimstrXAsStringDimintXAsInteger strZAsStringDimi j kAsInteger 10 3 用戶自定義類型的聲明與使用 用戶自定義類型可包含一個或多個基本數(shù)據(jù)類型的數(shù)據(jù)元素 或一個已經(jīng)定義好的用戶自定義類型 用戶自定義類型使用Type語句進(jìn)行聲明 定義格式如下 Type 數(shù)據(jù)類型名 AsAs EndType 例 TypeXSNameAsString 10BirthDateAsDateSexAsIntegerEndType 注意 Type語句只能在模塊的通用聲明部分使用 11 使用了Type語句聲明了一個用戶自定義類型后 就可以在該聲明范圍內(nèi)的任何位置聲明該類型的變量 可以使用Dim語句聲明用戶自定義類型的變量 例 DimxasXSx Name 張紅 x BirthDate 80 10 12 x Sex 0用戶自定義類型的變量用 變量名 域名 的格式進(jìn)行引用 12 三 運(yùn)算符和表達(dá)式 在VBA編程語言中 可以將運(yùn)算符分為算術(shù)運(yùn)算符 字符串運(yùn)算符 關(guān)系運(yùn)算符 邏輯運(yùn)算符和對象運(yùn)算符5種類型 不同的運(yùn)算符用來構(gòu)成不同的表達(dá)式 來完成不同的運(yùn)算和處理 表達(dá)式是由運(yùn)算符 函數(shù)和數(shù)據(jù)等內(nèi)容組合而成的 根據(jù)運(yùn)算符的類型可以將表達(dá)式分為算數(shù)表達(dá)式 字符串表達(dá)式 關(guān)系表達(dá)式 邏輯表達(dá)式和對象運(yùn)算表達(dá)式5種類型 13 1 算術(shù)運(yùn)算符 算術(shù)運(yùn)算符用于數(shù)值的算術(shù)運(yùn)算 VBA中的算術(shù)運(yùn)算符如下表所示 14 算術(shù)運(yùn)算符之間存在優(yōu)先級 優(yōu)先級是決定算術(shù)表達(dá)式的運(yùn)算順序的原則 算術(shù)運(yùn)算符優(yōu)先級從高到低依次為乘冪 乘除法 整除 求余數(shù)和加減法 由算術(shù)運(yùn)算符 數(shù)值 括號和正負(fù)號等構(gòu)成的表達(dá)式稱為算術(shù)表達(dá)式 在算術(shù)表達(dá)式中 括號和正負(fù)號的優(yōu)先級比算術(shù)運(yùn)算符要高 括號比正負(fù)號的優(yōu)先級高 15 例 求算術(shù)表達(dá)式 8 20 4Mod6 5 2 的結(jié)果 計(jì)算的過程如下 1 計(jì)算 5 2 的結(jié)果為2 表達(dá)式化為 8 20 4Mod6 22 計(jì)算6 2的結(jié)果為36 表達(dá)式化為 8 20 4Mod363 計(jì)算20 4的結(jié)果為80 表達(dá)式化為 8 80Mod364 計(jì)算80Mod36的結(jié)果為8 表達(dá)式化為 8 85 計(jì)算 8 8的結(jié)果為0 16 2 字符串運(yùn)算符 連接運(yùn)算符具有連接字符串的功能 在VBA中有 和 兩個運(yùn)算符 運(yùn)算符用來強(qiáng)制兩個表達(dá)式作字符串連接 運(yùn)算符是當(dāng)兩個表達(dá)式均為字符串?dāng)?shù)據(jù)時(shí) 才將兩個字符串連接成一個新字符串 17 3 關(guān)系運(yùn)算符 關(guān)系運(yùn)算符也稱為比較運(yùn)算符 用來對兩個表達(dá)式的值進(jìn)行比較 關(guān)系運(yùn)算的結(jié)果為邏輯值 真 True 和假 False 18 4 邏輯運(yùn)算符 邏輯運(yùn)算也稱為布爾運(yùn)算 用于連接兩個或多個關(guān)系表達(dá)式 其結(jié)果為邏輯值 真 True 和假 False 邏輯運(yùn)算符的優(yōu)先級低于關(guān)系運(yùn)算符 常用的3個邏輯運(yùn)算符之間的優(yōu)先級由高到低依次為 Not And Or 19 5 對象運(yùn)算符 對象運(yùn)算符有 和 兩種 使用 運(yùn)算符可以引用一個窗體 報(bào)表或窗體和報(bào)表上的控件 例 20 使用 運(yùn)算符可以引用窗體 報(bào)表或控件等對象的屬性 引用格式為 控件對象名 屬性名 在實(shí)際使用中 運(yùn)算符與 運(yùn)算符配合使用 用于標(biāo)識引用的一個對象或?qū)ο蟮膶傩?例 Forms 學(xué)生信息 Command1 Enable 21 一 語句一個程序由多條不同功能的語句組成 每條語句能夠完成某個特定的操作 在VBA程序中 按照功能的不同將程序語句分為聲明語句和執(zhí)行語句兩類 聲明語句用于定義變量 常量或過程 執(zhí)行語句用于執(zhí)行賦值操作 調(diào)用過程和實(shí)現(xiàn)各種流程控制 8 3程序流程控制 22 1 注釋語句 1 Rem語句 語句格式 Rem注釋內(nèi)容 2 英文單引號 語句格式 注釋內(nèi)容注釋語句可以添加到程序模塊的任何位置 并且默認(rèn)以綠色文本顯示 例 str1 hello Remstr1賦值為 hello str2 world str2賦值為 world 2 賦值語句賦值語句是為變量指定一個值或表達(dá)式 語句格式 變量名 值或表達(dá)式 3 輸入輸出語句 Inputbox函數(shù)dimstrinputasstringstrinput inputbox 請輸入學(xué)生姓名 Msgbox函數(shù)Msgbox 歡迎你 strinput Debug窗口視圖 立即窗口print方法是用 或 連接若干個輸出項(xiàng) 24 程序流程控制結(jié)構(gòu) 執(zhí)行語句可以根據(jù)流程的不同分為順序結(jié)構(gòu) 條件結(jié)構(gòu)和循環(huán)結(jié)構(gòu)3種 順序結(jié)構(gòu)是按照語句的先后順序依次執(zhí)行 條件結(jié)構(gòu)是根據(jù)條件選擇執(zhí)行不同的分支語句 又稱為選擇結(jié)構(gòu) 循環(huán)結(jié)構(gòu)是根據(jù)某個條件重復(fù)執(zhí)行某一段程序語句 順序結(jié)構(gòu) 例 請輸入圓的半徑 計(jì)算圓的面積 Submj DimrAsSingleDimsAsSingleConstpiAsSingle 3 14r InputBox 請輸入半徑 s pi r rDebug PrintsEndSub 26 分支結(jié)構(gòu) 分支結(jié)構(gòu)也稱為選擇結(jié)構(gòu) 其特點(diǎn)是程序按照條件表達(dá)式的值執(zhí)行相應(yīng)語句 在VBA中 通常用If語句 SelectCase語句或條件函數(shù)實(shí)現(xiàn)分支結(jié)構(gòu) 1 If語句If語句有三種形式 單分支 雙分支和多分支 27 1 單分支結(jié)構(gòu) 單分支If語句的基本格式如下 If條件表達(dá)式Then語句序列EndIf或 If條件表達(dá)式Then語句序列功能 當(dāng)程序執(zhí)行到這種格式的If語句時(shí) 如果條件表達(dá)式為真 將執(zhí)行Then后面的語句序列 如果條件表達(dá)式為假 程序?qū)⑻^語句序列而直接執(zhí)行EndIf后面的語句 28 例 輸入兩個數(shù)到變量x和y中 比較x和y的值 x保存較大的數(shù) y保存較小的數(shù) 并在立即窗口中輸出 PublicSubex1 DimxAsInteger yAsInteger tAsIntegerx InputBox 請輸入x的值 y InputBox 請輸入y的值 Ifx ythent x t為中間變量 用于實(shí)現(xiàn)x與y值的交換x yy tEndIfDebug Printx yEndSub If語句還可以寫成 Ifx ythent x x y y t 29 30 2 雙分支語句 雙分支If語句的格式如下 If條件表達(dá)式Then語句序列1Else語句序列2EndIf功能 當(dāng)程序執(zhí)行到這種格式的If語句時(shí) 如果條件表達(dá)式為真 將執(zhí)行Then和Else之間的語句序列1 如果條件表達(dá)式為假 程序?qū)?zhí)行Else和EndIf之間的語句序列2 31 例 輸入一個數(shù) 如果該數(shù)大于等于0 則求出其平方根并顯示在立即窗口中 否則顯示消息 這個數(shù)無平方根 PublicSubex2 DimaAsIntegera InputBox 請輸入一個數(shù) Ifa 0ThenDebug Printsqr a Elsemsgbox 這個數(shù)無平方根 EndIfEndSub 32 3 If Then ElseIf語句 語句格式為 IfThenElseIfThen ElseIfThenElse EndIf 說明 運(yùn)行時(shí) 從表達(dá)式1開始逐個測試條件 當(dāng)找到第一個為True的條件時(shí) 即執(zhí)行該條件后所對應(yīng)的語句塊 33 例 編程根據(jù)輸入的學(xué)生成績 評定其等級 標(biāo)準(zhǔn)是 90 100分為 優(yōu)秀 80 89分為 良好 70 79分為 中等 60 69分為 及格 60分以下 不合格 PublicSubex3 DimxAsIntegerx InputBox 請輸入成績 Ifx 90ThenDebug Print 優(yōu)秀 ElseIfx 80ThenDebug Print 良好 ElseIfx 70ThenDebug Print 中等 ElseIfx 60ThenDebug Print 及格 ElseDebug Print 不及格 EndIfEndSub 讀程序 PrivateSubCommand1 Click Dima kAsIntegera InputBox 請輸入a的值 Ifa 60Thenk 1ElseIfa 70Thenk 2ElseIfa 80Thenk 3ElseIfa 90Thenk 4EndIfMsgBoxkEndSub 35 4 If語句的嵌套 在If或Else后面的語句序列中又包含If語句 稱為If語句的嵌套 格式二 If表達(dá)式1Then Else If表達(dá)式2Then EndIf EndIf 格式一 If表達(dá)式1Then If表達(dá)式2Then EndIf Else EndIf Subgrade DimcjAsIntegercj InputBox 請輸入成績 Ifcj 90Thenmsgbox 優(yōu)秀 ElseIfcj 80Thenmsgbox 良好 ElseIfcj 70Thenmsgbox 中等 ElseIfcj 60Thenmsgbox 及格 Elsemsgbox 不及格 EndifEndifEndifEndifEndSub 37 2 SelectCase語句 當(dāng)條件選項(xiàng)較多時(shí) 使用If語句多重嵌套控制結(jié)構(gòu)會使程序變得很復(fù)雜 而Select語句就可以解決這類問題 語句格式為 SelectCaseCase語句序列1Case語句序列2 CaseElse語句序列n 1 EndSelect 38 說明 1 SelectCase后的變量或表達(dá)式只能是數(shù)值型或字符型表達(dá)式 2 執(zhí)行過程是先計(jì)算SelectCase后的變量或表達(dá)式的值 然后從上至下逐個比較 決定執(zhí)行哪一個語句塊 如果有多個Case后的表達(dá)式與其相匹配 則只執(zhí)行第一個Case后的語句塊 3 語句中的各個表達(dá)式列表應(yīng)與SelectCase后的變量或表達(dá)式同類型 各個表達(dá)式列表可以采用下面的形式 表達(dá)式 a 5 用逗號分隔的一組枚舉表達(dá)式 2 4 6 8 表達(dá)式1To表達(dá)式260to100 Is關(guān)系運(yùn)算符表達(dá)式Is 60 39 例 用SelectCase語句改寫上例 PublicSubex3 DimxAsIntegerx InputBox 請輸入成績 SelectCasexCase90To100Debug Print 優(yōu)秀 Case80To89Debug Print 良好 Case70To79Debug Print 中等 Case60To69Debug Print 及格 CaseElseDebug Print 不及格 EndSelectEndSub 讀程序 PrivateSubForm Click a 1Fori 3To1Step 1SelectCaseiCase1 3a a 1Case2 4a a 2EndSelectNextiMsgBoxaEndSub 41 循環(huán)結(jié)構(gòu) 循環(huán)控制結(jié)構(gòu)也叫重復(fù)控制結(jié)構(gòu) 特點(diǎn)是程序執(zhí)行時(shí) 該語句中的一部分操作即循環(huán)體被重復(fù)執(zhí)行多次 在VBA中 執(zhí)行循環(huán)控制的語句有For循環(huán)語句和Do Loop循環(huán)語句 42 1 For循環(huán)語句 語句格式為 For to Step ExitFor Next 說明 1 循環(huán)控制變量的類型必須是數(shù)值型 2 步長可以是正數(shù) 也可以是負(fù)數(shù) 如果步長為1 Step短語可以省略 3 根據(jù)初值 終值和步長 可以計(jì)算出循環(huán)的次數(shù) 因此For語句一般用于循環(huán)次數(shù)已知的情況 4 使用ExitFor語句可以提前退出循環(huán) 43 例 編程用For語句求1 2 3 10之和 PublicSubex4 DimsAsInteger iAsIntegers 0Fori 1To10Step1s s iNextiDebug PrintsEndSub 該循環(huán)的執(zhí)行過程如下 1 首先給i賦初值1 2 測試i是否超過終值10 如果沒有 則執(zhí)行累加 否則退出循環(huán)轉(zhuǎn)到步驟 5 3 將i加上一個步長 4 重復(fù)步驟 2 和步驟 3 5 繼續(xù)執(zhí)行Next后面的語句 44 2 Do Loop循環(huán)語句 形式1 Do While Until 語句塊 ExitDo 語句塊Loop 該語句適合的范圍更廣 PublicSubex5 下面的程序用DoWhile Loop語 句求1 2 3 10之和 DimsAsInteger iAsIntegers 0 i 1DoWhilei 10s s ii i 1LoopDebug PrintsEndSub 執(zhí)行過程是 在每次循環(huán)開始時(shí)測試條件 對于DoWhile語句 如果條件成立 則執(zhí)行循環(huán)體的內(nèi)容 然后回到DoWhlie處準(zhǔn)備下一次循環(huán) 否則如果條件不成立 則退出循環(huán) 對于DoUntil語句 則正好相反 當(dāng)條件滿足時(shí)退出循環(huán) ExitDo語句的作用是提前終止循環(huán) 45 與For語句相比 有下列幾點(diǎn)不同 1 Do Loop語句不僅可用于循環(huán)次數(shù)已知的情況 而且可用于循環(huán)次數(shù)未知的情況 因此適用的范圍更廣 2 Do Loop語句沒有專門的循環(huán)控制變量 但一般應(yīng)有一個專門用來改變條件表達(dá)式中變量的語句 使得隨著循環(huán)的執(zhí)行 條件趨于不成立 或成立 最后達(dá)到退出循環(huán) 46 Do語句塊 ExitDo 語句塊Loop While Until 說明 和形式1不同的是 在每次循環(huán)結(jié)束時(shí)測試條件 因此 二者的區(qū)別是如果一開始循環(huán)條件就不成立 則形式1中的循環(huán)體部分一次也不執(zhí)行 而形式2中的循環(huán)體部分被執(zhí)行一次 形式2 讀程序 例 試分析如下程序運(yùn)行結(jié)束之后變量J的值 PrivateSubFun DimJAsIntegerJ 10DoJ J 3LoopWhileJ 19EndSub 48 面向?qū)ο蟪绦蛟O(shè)計(jì)示例 例1 創(chuàng)建如下圖所示的窗體 計(jì)算圓的面積和周長 要求在文本框中輸入了圓的半徑后 單擊 計(jì)算 按鈕 在窗體的另外兩個文本框中分別輸出圓的面積和周長 49 本例除了采用前面介紹的方法制作窗體外 最關(guān)鍵的是編寫 計(jì)算 按鈕的單擊事件過程 為按鈕添加事件代碼的方法是 用鼠標(biāo)右鍵單擊按鈕 在彈出的快捷菜單中選擇 事件生成器 命令 在打開的 選擇生成器 對話框中選擇 代碼生成器 選項(xiàng) 轉(zhuǎn)到VBE環(huán)境 50 計(jì)算 按鈕的Click事件過程如下

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論