




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、數(shù)據(jù)庫管理系統(tǒng)應(yīng)用第第6章章 程序設(shè)計(jì)基礎(chǔ)程序設(shè)計(jì)基礎(chǔ)2022年2月20日教 師:周 浪部 門:信息工程學(xué)院6.1 VBA概述概述6.2 VBA語言基礎(chǔ)語言基礎(chǔ)6.3 VBA模塊模塊的的創(chuàng)建創(chuàng)建6.4 VBA程序設(shè)計(jì)基礎(chǔ)程序設(shè)計(jì)基礎(chǔ)6.5 過程調(diào)用與參數(shù)過程調(diào)用與參數(shù)傳遞傳遞6.6 VBA程序錯(cuò)誤處理程序錯(cuò)誤處理目錄目錄學(xué)習(xí)要點(diǎn)學(xué)習(xí)要點(diǎn)l VBA及模塊的基本概念l 創(chuàng)建模塊l VBA程序設(shè)計(jì)基礎(chǔ)l VBA流程控制語句l 過程調(diào)用和參數(shù)傳遞l VBA程序運(yùn)行錯(cuò)誤處理與調(diào)試6.1 VBA概述概述l VBA:Visual Basic for Application。l Visual Basic(VB
2、)是微軟公司開發(fā)的一種面向?qū)ο蟮目梢暬幊陶Z言,而VBA就是這種語言在Office軟件編程中的應(yīng)用。6.1.1 VB編程環(huán)境:編程環(huán)境:VBE VBE(Visual Basic Editor)是編輯VBA代碼時(shí)使用的界面。Add YourText here工程窗口標(biāo)準(zhǔn)工具條屬性窗口監(jiān)視窗口本地窗口代碼窗口立即窗口VBE窗口P170立即窗口立即窗口? l 在立即窗口中,可以輸入或粘貼一行代碼并執(zhí)行該代碼。l 在立即窗口中顯示變量或表達(dá)式的值的命令:l 立即窗口中的代碼是不被保存的。 通過通過Alt + F11組合鍵,可以在數(shù)據(jù)庫組合鍵,可以在數(shù)據(jù)庫窗口窗口和和VBE窗口之間進(jìn)行窗口之間進(jìn)行切換。
3、切換。進(jìn)入進(jìn)入VBE編程環(huán)境(編程環(huán)境(1)第七章中介紹,略第七章中介紹,略l 對于類模塊:進(jìn)入進(jìn)入VBE編程環(huán)境(編程環(huán)境(2)l 對于標(biāo)準(zhǔn)模塊:(1)創(chuàng)建新的標(biāo)準(zhǔn)模塊)創(chuàng)建新的標(biāo)準(zhǔn)模塊 時(shí)自動(dòng)進(jìn)入時(shí)自動(dòng)進(jìn)入VBE。(2)修改已存在的標(biāo)準(zhǔn)模塊時(shí)自動(dòng)進(jìn)入)修改已存在的標(biāo)準(zhǔn)模塊時(shí)自動(dòng)進(jìn)入VBE。 (3)單擊)單擊“數(shù)據(jù)庫工具數(shù)據(jù)庫工具”選項(xiàng)卡選項(xiàng)卡的的“宏宏”組組中中的的“Visual Basic”按鈕即可按鈕即可進(jìn)入進(jìn)入VBE。1.注釋注釋語句語句 該語句常用在對整個(gè)的注釋。 注釋語句是為了增加程序的可讀性,默認(rèn)以綠色文本顯示。 (1)序言式注釋 (2)語句注釋 格式格式: Rem 注釋語句注
4、釋語句 該語句可直接位于其他語句之后。 格式格式: 注釋語句注釋語句6.1.2 VBA程序書寫原則程序書寫原則6.1.2 VBA程序書寫原則程序書寫原則當(dāng)當(dāng)輸入一行語句并按輸入一行語句并按Enter鍵后,如果鍵后,如果該代碼該代碼以紅色以紅色文本顯示,則表明該行語句存在錯(cuò)誤。文本顯示,則表明該行語句存在錯(cuò)誤。通常將一個(gè)語句寫在一行;語句較長時(shí),在適當(dāng)位置可用續(xù)行符“ _ _ ”將語句連寫在下一行;(續(xù)行符前應(yīng)有一個(gè)空格)可以用冒號“ : ”將幾個(gè)較短的語句寫在同一行中。2.語句書寫規(guī)定語句書寫規(guī)定6.2.1 數(shù)據(jù)類型數(shù)據(jù)類型 Access數(shù)據(jù)表中的字段所使用的數(shù)據(jù)類型(OLE對象、備注、附件和
5、計(jì)算型數(shù)據(jù)類型除外)在VBA中都有對應(yīng)的數(shù)據(jù)類型。與前基本一致,不再贅述,重點(diǎn)掌握各種類型的常量表示。VBA基本數(shù)據(jù)類型見P174表6-2所示。6.2 VBA語言基礎(chǔ)語言基礎(chǔ)6.2.2 常量、變量與數(shù)組常量、變量與數(shù)組 常量是指在程序的運(yùn)行過程中,其值不能被改變的量。 變量是指程序運(yùn)行時(shí)其值會(huì)發(fā)生變化的數(shù)據(jù)。每個(gè)變量都有變量名,使用變量前可以指定其數(shù)據(jù)類型(顯式聲明),也可以不指定其數(shù)據(jù)類型(隱式聲明)。 數(shù)組是由一組具有相同數(shù)據(jù)類型的變量(即數(shù)組元素)構(gòu)成的集合。1. 常量常量在Access中,常量的類型有以下3種:Const語句創(chuàng)建符號常量True、False等系統(tǒng)常量預(yù)定義的內(nèi)部常量內(nèi)部
6、常量(1)符號常量)符號常量l 若在代碼中要反復(fù)使用某個(gè)相同的值,或代表一些具有特定意義的數(shù)字或字符串,可以使用符號常量。l 定義格式:Const 符號常量名符號常量名 As 數(shù)據(jù)類型數(shù)據(jù)類型 = 表達(dá)式表達(dá)式Const PI= 3.14Const MYBIRTHDAY = #2003-4-1# 【例】P175 (2)內(nèi)部常量)內(nèi)部常量lVBA提供了一些預(yù)定義的內(nèi)部符號常量,它們主要作為DoCmd命令語句中的參數(shù)。l內(nèi)部常量以兩個(gè)前綴字母指明了定義該常量的對象庫,如:acForm、acCmdFont、VbKeyDelete等。l通過對象瀏覽器可以查看所有可用對象庫中的內(nèi)部常量。(3)系統(tǒng)常量)
7、系統(tǒng)常量P265l 系統(tǒng)定義的常量有七個(gè): True、False、Null、Yes、No、On、Offl 系統(tǒng)常量可以在所有應(yīng)用程序中直接使用。2. 內(nèi)存變量內(nèi)存變量1 1)變量)變量的命名規(guī)則的命名規(guī)則:P175 變量名只能由字母字母、數(shù)字?jǐn)?shù)字、漢字漢字和下劃線下劃線組成,不能含有空格和除下劃線之外的其它字符,長度不能超過255個(gè)字符 。 變量名必須以字母字母或漢字漢字開頭,且不不區(qū)分區(qū)分字母的大字母的大小寫小寫。 變量名不能使用VBA的關(guān)鍵字。2)變量的創(chuàng)建方法)變量的創(chuàng)建方法(1 1)自動(dòng)創(chuàng)建變量(隱式聲明)自動(dòng)創(chuàng)建變量(隱式聲明) 自動(dòng)創(chuàng)建變量,也稱隱式聲明變量。即在使用變量前沒有聲明
8、其數(shù)據(jù)類型,借助將一個(gè)值賦予變量名的方式來建立變量。 因?yàn)樵谧兞棵Q后沒有附加類型說明,所以數(shù)據(jù)類型默認(rèn)為變體數(shù)據(jù)類型(Variant)?!纠?aa = Hello bb = 207 僅在當(dāng)前過程有效。不提倡?。? 2)顯)顯式式聲明創(chuàng)建變量聲明創(chuàng)建變量Dim 變量名變量名 As 數(shù)據(jù)類型數(shù)據(jù)類型 Dim 變量名變量名1 As 數(shù)據(jù)類型數(shù)據(jù)類型 , 變量變量名名2 As 數(shù)據(jù)類型數(shù)據(jù)類型 , , 變量變量名名n As 數(shù)據(jù)類型數(shù)據(jù)類型 如果不使用As選項(xiàng)來定義變量的數(shù)據(jù)類型,系統(tǒng)默認(rèn)該變量為Variant數(shù)據(jù)類型。2)變量的創(chuàng)建方法)變量的創(chuàng)建方法 先定義,再使用變量。提倡!舉例舉例(1)D
9、im Var1 As Integer將將Var1變量定義為整型變量定義為整型(2)Dim Var2 As Double將將Var2變量定義為雙精度型變量定義為雙精度型(3)Dim Var3 As Single, Var4 As String將將Var3定義為單精度型、定義為單精度型、Var4定義為字符串類型定義為字符串類型(5)Dim aa, bb, cc As Currency將將cc變量定義為貨幣型,變量定義為貨幣型,aa、bb變量定義為變體類型變量定義為變體類型(4)Dim abc定義定義abc變量,為變體數(shù)據(jù)類型變量,為變體數(shù)據(jù)類型補(bǔ)充:類型說明符補(bǔ)充:類型說明符 使用類型說明符定義變
10、量的數(shù)據(jù)類型時(shí),必須將其放在變量名的最后。l 舉例: Var1% = 1234 Var2# = 123.45 Var3$ = abc類型為:Integer類型為:Double類型為:String強(qiáng)制強(qiáng)制聲明聲明 為了避免使用隱式聲明變量,可以在為了避免使用隱式聲明變量,可以在程序程序開始處使用開始處使用Option Explicit語句來強(qiáng)制使用語句來強(qiáng)制使用顯顯式式聲明變量。聲明變量。3)變量的使用范圍(作用域)變量的使用范圍(作用域)過程變量過程變量(局部變量)(局部變量)局部變量只能在定義它的過程內(nèi)使用,在其它的過程中無法存取局部變量。私有私有模塊模塊變量變量只能在定義它的模塊(包括模塊
11、的子過程)內(nèi)使用模塊變量。在模塊的聲明區(qū)域用Private聲明。公共模塊變量公共模塊變量(全局變量)(全局變量)在任何模塊和過程中都可以訪問全局變量。全局變量需要在模塊的聲明區(qū)域用Public聲明。全局全局/模塊變量聲明方式模塊變量聲明方式 Public 變量名變量名 As 數(shù)據(jù)類型數(shù)據(jù)類型 P266l 全局變量聲明方式:全局變量聲明方式: Private 變量名變量名 As 數(shù)據(jù)類型數(shù)據(jù)類型 l 模塊變量(私有變量)聲明方式:模塊變量(私有變量)聲明方式: 全局變量和模塊變量必須在模塊/窗體的聲明區(qū)域中聲明。變量的使用規(guī)則與作用域變量的使用規(guī)則與作用域P176作用范圍作用范圍局部變量局部變量
12、模塊變量模塊變量全局變量全局變量聲明方式聲明方式聲明位置聲明位置能否被本模塊的能否被本模塊的其他過程存取其他過程存取能否被其他模塊能否被其他模塊的過程存取的過程存取Dim、Static Dim、PrivatePublic在子過程中在窗體/模塊的聲明區(qū)域在標(biāo)準(zhǔn)模塊的聲明區(qū)域不能不能不能能能能(1)全局變量與私有變量的比較)全局變量與私有變量的比較全局變量與私有變量的比較全局變量與私有變量的比較(2)私有變量與局部變量的比較)私有變量與局部變量的比較私有變量與局部變量的比較私有變量與局部變量的比較(3)靜態(tài)變量與非靜態(tài)變量)靜態(tài)變量與非靜態(tài)變量靜態(tài)變量與非靜態(tài)變量靜態(tài)變量與非靜態(tài)變量第一次執(zhí)行CC
13、1第二次執(zhí)行CC13.數(shù)組數(shù)組l 數(shù)組是一種特殊的變量,由數(shù)組名和數(shù)組下標(biāo)組成。l VBA中不允許隱式說明數(shù)組,數(shù)組在使用前必?cái)?shù)組在使用前必須用須用DimDim命令聲明命令聲明,說明數(shù)組的大小、數(shù)據(jù)類型及作用范圍。l 數(shù)組的類型數(shù)組的類型 靜態(tài)數(shù)組中的元素個(gè)數(shù)在聲明時(shí)被指定,在程序運(yùn)行時(shí)不能改變數(shù)組元素的個(gè)數(shù)。 數(shù)組有兩種類型:_和_。靜態(tài)數(shù)組動(dòng)態(tài)數(shù)組 (1 1)聲明靜態(tài)數(shù)組聲明靜態(tài)數(shù)組3.數(shù)組數(shù)組(1)聲明靜態(tài)數(shù)組)聲明靜態(tài)數(shù)組Dim 數(shù)組名數(shù)組名( 下標(biāo)下界下標(biāo)下界 to 下標(biāo)上界下標(biāo)上界 ) As 數(shù)據(jù)類型數(shù)據(jù)類型 l 語法格式:一維數(shù)組二維或多維數(shù)組Dim 數(shù)組名數(shù)組名( 下標(biāo)下界下標(biāo)
14、下界 to 下標(biāo)上界下標(biāo)上界 , ) As 數(shù)據(jù)類型數(shù)據(jù)類型 (1)聲明靜態(tài)數(shù)組)聲明靜態(tài)數(shù)組l說明As選項(xiàng)缺省時(shí),數(shù)組中各元素為變體數(shù)據(jù)類型。下標(biāo)下界的默認(rèn)值為0,如果設(shè)置下標(biāo)下界為非0值,既可以使用to選項(xiàng),也可以在模塊的通用聲明部分用Option Base來更改數(shù)組的默認(rèn)下標(biāo)下界。Option Base 1 設(shè)置數(shù)組的下標(biāo)下界為設(shè)置數(shù)組的下標(biāo)下界為1Option Base 0 設(shè)置數(shù)組的下標(biāo)下界為默認(rèn)值設(shè)置數(shù)組的下標(biāo)下界為默認(rèn)值Option Base格式:【例例】 Dim aa ( 5 ) As Single Dim bb ( 1 to 6 , 2 to 7 ) As String Di
15、m cc ( 2 to 5 , 3 to 8 , 10) As Boolean Dim dd ( 3 , 1 to 4 )2)數(shù)組)數(shù)組的使用的使用l 語法格式:數(shù)組名數(shù)組名 ( 下標(biāo)值下標(biāo)值 )下標(biāo)值是指定范圍內(nèi)(上下界之間)的一個(gè)整數(shù),其值不能超出這個(gè)范圍。如果是多維數(shù)組,則下標(biāo)各整數(shù)間用逗號隔開。 【例】 A1( 0 , 0 ) = ABC B1( 3 ) = True3)聲明動(dòng)態(tài)數(shù)組聲明動(dòng)態(tài)數(shù)組 動(dòng)態(tài)數(shù)組中的元素個(gè)數(shù)在聲明時(shí)不指定,在程序運(yùn)行時(shí)可以改變數(shù)組元素中的個(gè)數(shù)。建立動(dòng)態(tài)數(shù)組的步驟建立動(dòng)態(tài)數(shù)組的步驟Dim Array()()(1)用Dim聲明空的動(dòng)態(tài)數(shù)組,但不指定數(shù)組元素的個(gè)數(shù)。
16、如:ReDim Array(5 , 10)(2)然后用ReDimReDim語句配置數(shù)組個(gè)數(shù)。說明:ReDim語句只能出現(xiàn)在過程中,可以改變數(shù)組的大小和上下界,但不能改變數(shù)組的維數(shù)。說明(說明(1)l 使用ReDim重新聲明數(shù)組后,原有數(shù)組元素中的值將全部清除并取其默認(rèn)值。數(shù)數(shù) 據(jù)據(jù) 類類 型型默認(rèn)值默認(rèn)值數(shù)值型包括:整型、長整型、單精度型、雙精度型和貨幣型。數(shù) 值 型字 符 型布 爾 型日 期 型變體類型數(shù)據(jù)庫對象0空字符串False00:00:00EmptyNothing說明(說明(2)l若要保留數(shù)組中元素原有的值,則需在ReDim后加Preserve選項(xiàng)。ReDim Preserve Ar
17、ray(5 , 10) Preserve可以改變數(shù)組中最后一維的上界,但不能改變這一維的下界,改變下界將導(dǎo)致錯(cuò)誤。 若改變后的數(shù)組比原來小,則多余數(shù)據(jù)將丟失。舉例(舉例(1)舉例(舉例(2)6.2.3 標(biāo)準(zhǔn)函數(shù)標(biāo)準(zhǔn)函數(shù)l 函數(shù)的標(biāo)準(zhǔn)形式:函數(shù)名不可缺省。函數(shù)名(函數(shù)名( )函數(shù)的參數(shù)可以是常量、變量或表達(dá)式,且置于函數(shù)名后的圓括號中,多個(gè)參數(shù)間用逗號隔開。函數(shù)無參數(shù)時(shí),其后的圓括號可以省略。函數(shù)被調(diào)用時(shí),都會(huì)返回一個(gè)特定類型的值。注意事項(xiàng)注意事項(xiàng)l 對每一個(gè)函數(shù)需掌握: (1)函數(shù)名 (2)參數(shù)(個(gè)數(shù)、順序、類型、含義) (3)函數(shù)功能 (4)返回值及其類型1. 數(shù)學(xué)函數(shù)數(shù)學(xué)函數(shù) (1 1)絕
18、對值函數(shù))絕對值函數(shù)功能:返回參數(shù)的絕對值A(chǔ)bsAbs( )【例】Abs(-25)25Abs(125+(-2)3)6返回值數(shù)據(jù)類型:數(shù)值型1. 數(shù)學(xué)函數(shù)數(shù)學(xué)函數(shù) (2 2)向下取整函數(shù))向下取整函數(shù)返回值數(shù)據(jù)類型:數(shù)值型IntInt( )【例】Int(3.56)3Int(-3.56)-4參數(shù)為負(fù)值時(shí)返回小于等于參數(shù)值的最大負(fù)數(shù)。功能:返回參數(shù)的向下取整的值1. 數(shù)學(xué)函數(shù)數(shù)學(xué)函數(shù) (3 3)取整函數(shù)(靠取整函數(shù)(靠0 0取整)取整)返回值數(shù)據(jù)類型:數(shù)值型FixFix( )【例】Fix(3.56)3Fix(-3.56)-3參數(shù)為負(fù)值時(shí)返回大于等于參數(shù)值的最小負(fù)數(shù)。功能:返回參數(shù)的整數(shù)部分1. 數(shù)學(xué)
19、函數(shù)數(shù)學(xué)函數(shù) (4 4)求算術(shù)平方根函數(shù))求算術(shù)平方根函數(shù)返回值數(shù)據(jù)類型:雙精度型SqrSqr( )【例】Sqr(9)3Sqr(Sqr(16)2功能:計(jì)算參數(shù)的算術(shù)平方根1. 數(shù)學(xué)函數(shù)數(shù)學(xué)函數(shù) (5 5)三角函數(shù)三角函數(shù)返回值數(shù)據(jù)類型:雙精度型SinSin( )功能:計(jì)算參數(shù)的正弦、余弦和正切值CosCos( )TanTan( )參數(shù)是以弧度為單位的角度值。1. 數(shù)學(xué)函數(shù)數(shù)學(xué)函數(shù)【例】Pi=3.1415927Sin(90*Pi/180)1Cos(60*Pi/180)0.50000Tan(45*Pi/180)1.000001. 數(shù)學(xué)函數(shù)數(shù)學(xué)函數(shù)(6 6)隨機(jī)函數(shù)隨機(jī)函數(shù)返回值數(shù)據(jù)類型:單精度型R
20、ndRnd( )【例】Int(100*Rnd)產(chǎn)生1個(gè)0,99的隨機(jī)整數(shù) Int(100 * Rnd)+1 產(chǎn)生1個(gè)1,100的隨機(jī)整數(shù)功能:產(chǎn)生一個(gè)大于等于0 且小于 1的隨機(jī)數(shù)1. 數(shù)學(xué)函數(shù)數(shù)學(xué)函數(shù)(7 7)四舍五入函數(shù)四舍五入函數(shù)返回值數(shù)據(jù)類型:雙精度型RoundRound( , , 2 )功能: 對的值按 指定小數(shù)位數(shù)進(jìn)行四舍五入【例】Round(123.456, 1)123.5Round(123.456, 2)123.46Round函數(shù)函數(shù)Round(123.456, 0)123Round(123.456)1232. 字符串函數(shù)字符串函數(shù) (1 1)字符串檢索函數(shù))字符串檢索函數(shù)功能
21、:返回String2在String1中最早出現(xiàn)的位置InStr ( Start , String1 , String2 , Compare )返回值數(shù)據(jù)類型:長整型InStr函數(shù)函數(shù)l Compare指定字符串比較的方法,其值可以是:0做二進(jìn)制比較1不區(qū)分大小寫的文本比較(默認(rèn))2基于數(shù)據(jù)庫中包含信息的比較如果指定了Compare參數(shù),則一定要有Start參數(shù)?!纠?】InStr(3, abcdABCD, BC)6InStr函數(shù)函數(shù)InStr(abcdABCD, BC)2InStr(1,abcdABCD, BC,0)62. 字符串函數(shù)字符串函數(shù) (2 2)字符串長度檢測函數(shù))字符串長度檢測函數(shù)
22、功能:返回字符串所含字符數(shù)LenLen ( ( | | ) )返回值數(shù)據(jù)類型:長整型如果變量是字符型,則函數(shù)返回的即為該變量所含的字符數(shù)(未賦值時(shí)返回0)。如果變量是其它數(shù)據(jù)類型,則函數(shù)返回的即為該數(shù)據(jù)類型所占空間?!纠?】Len(123.456)7Len函數(shù)函數(shù)Len(abc+南京)52. 字符串函數(shù)字符串函數(shù) (3 3)取子串函數(shù))取子串函數(shù)功能:從字符表達(dá)式中截取一個(gè)子字符串LeftLeft ( ( , ) , )返回值數(shù)據(jù)類型:字符型RightRight ( ( , ) , )MidMid ( ( , , ) , , )【例1】字符串截取函數(shù)字符串截取函數(shù)Left(abcd南京,3)a
23、bcRight(abcd南京,2)南京Mid(abcd南京, 5, 2)南京Mid(abcd南京, 3)cd南京2. 字符串函數(shù)字符串函數(shù) (4 4)生成空格函數(shù))生成空格函數(shù)功能:返回?cái)?shù)值表達(dá)式所指定的空格數(shù)Space ( Space ( ) )返回值數(shù)據(jù)類型:字符型Space(2*3) 【例】Space(0)2. 字符串函數(shù)字符串函數(shù) (5 5)大小寫轉(zhuǎn)換函數(shù))大小寫轉(zhuǎn)換函數(shù)功能:將字符串中的小寫字母轉(zhuǎn)換成大寫字母Ucase Ucase ( ( ) )返回值數(shù)據(jù)類型:字符型功能:將字符串中的大寫字母轉(zhuǎn)換成小寫字母Lcase Lcase ( ( ) )返回值數(shù)據(jù)類型:字符型【例】大小寫轉(zhuǎn)換函
24、數(shù)大小寫轉(zhuǎn)換函數(shù)Ucase(abcABC)ABCABCLcase(abcABC)Lcase( Ucase(abc)abcabcabc2. 字符串函數(shù)字符串函數(shù) (6 6)去除空格)去除空格函數(shù)函數(shù)功能:刪除字符串的首部、尾部和首尾空格LTrimLTrim( ( ) )返回值數(shù)據(jù)類型:字符型RTrimRTrim ( ( )TrimTrim ( ( )【例】刪除空格函數(shù)刪除空格函數(shù)X & LTrim( a b ) & YXa b YX & RTrim( a b ) & YX & Trim( a b ) & YXa bYX a bY3. 日期日期/時(shí)間
25、函數(shù)時(shí)間函數(shù) (1 1)系統(tǒng)日期和時(shí)間函數(shù))系統(tǒng)日期和時(shí)間函數(shù)功能:返回當(dāng)前系統(tǒng)日期DateDate( )( )返回值數(shù)據(jù)類型:日期時(shí)間型TimeTime ( ) ( )NowNow ( ) ( )功能:返回當(dāng)前系統(tǒng)時(shí)間功能:返回當(dāng)前系統(tǒng)日期和時(shí)間返回的日期格式由操作系統(tǒng)設(shè)置的日期格式?jīng)Q定返回的日期格式由操作系統(tǒng)設(shè)置的日期格式?jīng)Q定3. 日期日期/時(shí)間函數(shù)時(shí)間函數(shù) (2 2)截取日期分量函數(shù))截取日期分量函數(shù)功能:返回日期表達(dá)式年份Year( )返回值數(shù)據(jù)類型:整型如果參數(shù)中略去了年份,則返回系統(tǒng)日期中的年份如果參數(shù)中略去了年份,則返回系統(tǒng)日期中的年份【例】Year(#2011-10-20#)+
26、102021Year(Date()-Year(#2000-1-1#)14截取日期分量函數(shù)截取日期分量函數(shù)功能:返回日期表達(dá)式月份Month( )返回值數(shù)據(jù)類型:整型【例】Month(#2011-10-8#)+1020截取日期分量函數(shù)截取日期分量函數(shù)功能:返回日期表達(dá)式日期DayDay( ( ) )返回值數(shù)據(jù)類型:整型【例】Day(#2011-10-20#)+1030截取日期分量函數(shù)截取日期分量函數(shù)功能:返回17的整數(shù),表示星期幾Weekday( , w )返回值數(shù)據(jù)類型:整型 參數(shù)w用來指定一星期的第一天:常數(shù)常數(shù)值值描描 述述常數(shù)常數(shù)值值描描 述述vbSunday1星期日星期日( (默認(rèn)值默
27、認(rèn)值) )vbThursday5星期四vbMonday2星期一vbFriday6星期五vbTuesday3星期二vbSaturday7星期六vbWednesday4星期三Weekday函數(shù)函數(shù)【例】Weekday(#2015-10-01#)5Weekday(#2015-10-01#, vbSunday)5Weekday(#2015-10-01#, 2)43. 日期日期/時(shí)間函數(shù)時(shí)間函數(shù) (3 3)截取時(shí)間分量函數(shù))截取時(shí)間分量函數(shù)功能:返回時(shí)間表達(dá)式的小時(shí)數(shù)Hour( )返回值數(shù)據(jù)類型:整型Minute( )Second( )功能:返回時(shí)間表達(dá)式的分鐘數(shù)功能:返回時(shí)間表達(dá)式的秒數(shù)截取時(shí)間分量函
28、數(shù)截取時(shí)間分量函數(shù)【例】Hour(#2011-10-01 10:20:30#)10Minute(#2011-10-01 10:20:30#)20Second(#2011-10-01 10:20:30#)30Minute(#10:20:30#)20Second(#10:20#)0Hour(Null)Null3. 日期日期/時(shí)間函數(shù)時(shí)間函數(shù)(4 4)DateSerialDateSerial函數(shù)函數(shù) 功能:返回包含指定年、月、日的日期 DateSerial( , , ) 返回值數(shù)據(jù)類型:日期型 為100 9999間的整型數(shù)據(jù),或一個(gè)數(shù)值表達(dá)式,表示返回日期的年份。 為整型數(shù)據(jù)或數(shù)值表達(dá)式,表示返回日
29、期的月份。 為整型數(shù)據(jù)或數(shù)值表達(dá)式,表示返回的日期。DateSerial函數(shù)函數(shù)【例】DateSerial(2011, 10, 20)2011-10-20DateSerial(2011, 13, 32)2012-2-1DateSerial(2011+10, 10+5, 23+20) 2022-4-12DateSerial(2015, 3, 0)2015-2-28DateSerial(2011, 0, 1)2010-12-13. 日期日期/時(shí)間函數(shù)時(shí)間函數(shù)功能:返回代表指定日期的指定日期部分的時(shí)間間隔。返回值數(shù)據(jù)類型:整型參數(shù):interval,時(shí)間間隔,如P184 表6-6 Date, 要計(jì)算
30、的指定日期例如:Datepart(“w”,#2015-10-1#) ,返回5 Datepart(“ww”,#2015-10-1#),返回40。 DatePart (,)(5)DatePart函數(shù)函數(shù)3. 日期日期/時(shí)間函數(shù)時(shí)間函數(shù)語法:DateAdd(,)功能:在向指定日期加上一段時(shí)間的基礎(chǔ)上,返回新的datetime值。yyyyyyyy 年yearq q 季Quarterm m 月Monthy 一年的日數(shù)d d 日Dayw 一周的日數(shù)wwww 周WeekDay h 時(shí)Hourm 分鐘Minutes 秒Second dateadd(ww,3,# dateadd(ww,3,#2015-10-1#
31、)2015-10-1#)返回:返回:2015/10/222015/10/22(6 6)DateAddDateAdd函數(shù)函數(shù)3. 日期日期/時(shí)間函數(shù)時(shí)間函數(shù)(7)DateDiff函數(shù)函數(shù)DateDiff(,)功能:返回兩個(gè)指定日期之間的日期間隔或時(shí)間間隔。返回值數(shù)據(jù)類型:整型例: datediff(yyyy,#2000-9-20#,#2015-10-1#) 結(jié)果為154. 類型轉(zhuǎn)換函數(shù)類型轉(zhuǎn)換函數(shù)(1 1)ASCIIASCII函數(shù)函數(shù)功能:返回字符表達(dá)式中第1個(gè)字符的ASCII碼值A(chǔ)sc( )返回值數(shù)據(jù)類型:整型Asc(abcd)97Asc(ABCD)65【例】Asc()出錯(cuò)Asc(南京)-15
32、153Asc( )324. 類型轉(zhuǎn)換函數(shù)類型轉(zhuǎn)換函數(shù)(2 2)ChrChr函數(shù)函數(shù)功能:返回與字符代碼相對應(yīng)的字符Chr( )返回值數(shù)據(jù)類型:字符型Chr(97)aChr(65)A【例】Chr(13)回車符Chr(-15153)南 AB + Chr( 10 ) + CD ABCDChr(10)為換行字符4. 類型轉(zhuǎn)換函數(shù)類型轉(zhuǎn)換函數(shù)(3 3)數(shù)值轉(zhuǎn)字符串?dāng)?shù)值轉(zhuǎn)字符串函數(shù)函數(shù)功能:將數(shù)值表達(dá)式的值轉(zhuǎn)換為字符串StrStr( ( ) )返回值數(shù)據(jù)類型:字符型 當(dāng)當(dāng)一個(gè)數(shù)字轉(zhuǎn)換成字符串時(shí),會(huì)在其一個(gè)數(shù)字轉(zhuǎn)換成字符串時(shí),會(huì)在其前頭前頭保留一個(gè)保留一個(gè)空格來表示正負(fù)空格來表示正負(fù)。 表達(dá)式值為正,返回的
33、字符串包含一前導(dǎo)空格表示正號。Str函數(shù)函數(shù)【例】 表示一個(gè)空格Str(123)+abc123abcStr(-123)+abc-123abcabc+ Str(123)abc123abc+ Str(-123)abc-123Str(12.3) & #2011-10-1#12.32011-10-1True & Str(12.3)True12.34. 類型轉(zhuǎn)換函數(shù)類型轉(zhuǎn)換函數(shù)(4 4)字符串)字符串轉(zhuǎn)數(shù)值函數(shù)轉(zhuǎn)數(shù)值函數(shù)功能:將由數(shù)字組成的字符串轉(zhuǎn)換為數(shù)值型ValVal( ( ) )返回值數(shù)據(jù)類型:數(shù)值型 數(shù)字字符串轉(zhuǎn)換時(shí)可自動(dòng)將字符串中的空格、制表符和換行符去掉。 轉(zhuǎn)換時(shí)當(dāng)遇到系統(tǒng)不能
34、識別為數(shù)字的第一個(gè)字符時(shí),停止字符串的轉(zhuǎn)換。Val函數(shù)函數(shù)【例】Val(123)+100223Val(12.3)+100112.3Val(-1234)-1000-2234Val(123.4)123.4Val(12ab34)12Val(ab34)0Val(2E3)20005.條件函數(shù)條件函數(shù) (1 1)IIF函數(shù)函數(shù)IIF(條件表達(dá)式(條件表達(dá)式,表達(dá)式,表達(dá)式1,表達(dá)式,表達(dá)式2) 功能:根據(jù)條件表達(dá)式的值,返回兩個(gè)值中的一個(gè)。 說明: 當(dāng)條件表達(dá)式的值為真時(shí),返回表達(dá)式1的值,否則返回表達(dá)式2的值。 格式:IIF函數(shù)舉例函數(shù)舉例【例1】根據(jù)cj變量的取值返回“及格”或“不及格”。Cj = 8
35、5Result = IIf ( cj = 0 , 1 , -1 ) 1 x=0Y= -1 x0Y= 0 x=0 -1 x 0 , 1 , IIf ( X = 0 , 0 , -1 ) ) (2 2)Switch函數(shù)函數(shù)Switch ( Expr1 , Value1 , Expr2 , Value2 , ) 功能: 依次判斷各條件表達(dá)式的值,當(dāng)某一表達(dá)式的值為True時(shí),即輸出其后的值。 說明: 條件表達(dá)式是由左至右進(jìn)行計(jì)算判斷的。 格式:5.條件函數(shù)條件函數(shù)Switch函數(shù)舉例函數(shù)舉例【例1】根據(jù)輸入的成績Score判定等級:若低于60分為“不及格”;若大于等于60分且小于85分為“及格”;若
36、大于等于85分且小于等于100分為“良好”。Result = Switch ( Score 60, 不及格不及格, _ Score 85, 及格及格, Score 0Y= 0 x=0 -1 x 0 , 1 , X = 0 , 0 , X =abcabd 45123 45 =#2011-1-1# abcd ABCD FalseTrueTrueFalseFalse關(guān)系運(yùn)算符規(guī)則關(guān)系運(yùn)算符規(guī)則 漢字字符按漢語拼音比較大小,且大于西文字符。 如果參與比較的兩個(gè)操作數(shù)都是字符型,則從左到右一一對應(yīng)逐字符比較。 字母不區(qū)分大小寫,且大于數(shù)字。 如果參與比較的兩個(gè)操作數(shù)都是數(shù)值型,則按它們的大小進(jìn)行比較。字
37、符串中:字符串中:漢字漢字字符字符 西文字符西文字符( (大大小寫小寫相同相同) ) 數(shù)字串?dāng)?shù)字串 空格串空格串(4)邏輯運(yùn)算符)邏輯運(yùn)算符l 邏輯運(yùn)算符用于對兩個(gè)邏輯量進(jìn)行邏輯運(yùn)算,其結(jié)果仍然是一個(gè)邏輯值。與運(yùn)算與運(yùn)算 AndAndl 邏輯運(yùn)算符主要有:或運(yùn)算或運(yùn)算 OrOr非運(yùn)算非運(yùn)算 NotNot各個(gè)邏輯運(yùn)算符的真值表各個(gè)邏輯運(yùn)算符的真值表P191XYNot XX And Y X Or YTrueTrueTrueFalseFalse TrueFalseFalseFalseFalseTrue True True False FalseFalse True True True False 2
38、. 表達(dá)式和優(yōu)先級表達(dá)式和優(yōu)先級l 表達(dá)式由字面值、常量、變量、運(yùn)算符、函數(shù)、標(biāo)識符、邏輯量和括號等按一定的規(guī)則組成。l 表達(dá)式通過運(yùn)算得出結(jié)果,運(yùn)算結(jié)果的類型由操作數(shù)的數(shù)據(jù)類型和運(yùn)算符共同決定。 在VBA中,邏輯量在表達(dá)式中進(jìn)行算術(shù)運(yùn)算時(shí),True值被當(dāng)成-1,F(xiàn)alse值被當(dāng)成0處理。(1) 表達(dá)式的組成表達(dá)式的組成(2) 表達(dá)式表達(dá)式的書寫規(guī)則的書寫規(guī)則只能使用只能使用圓括號圓括號( )且且必須成對出現(xiàn)必須成對出現(xiàn)乘號乘號(*)不能不能省略省略表達(dá)式從左至右書寫表達(dá)式從左至右書寫,不大,不大小寫區(qū)分小寫區(qū)分2. 表達(dá)式和優(yōu)先級表達(dá)式和優(yōu)先級(3)運(yùn)算優(yōu)先級)運(yùn)算優(yōu)先級P192優(yōu)先級優(yōu)先級
39、高高 低低高高 低低算術(shù)運(yùn)算符算術(shù)運(yùn)算符 字符串運(yùn)算符字符串運(yùn)算符 關(guān)系運(yùn)算符關(guān)系運(yùn)算符 邏輯運(yùn)算符邏輯運(yùn)算符指數(shù)運(yùn)算 &、+優(yōu)先級相同=、=、 、abd And #11-25-99#12-25-98#False15False And A & 12BTrue#2011-12-20#-102011-12-106.3 VBA模塊的創(chuàng)建模塊的創(chuàng)建l 模塊就是將VBA_和_作為一個(gè)單元來保存的集合。l 模塊是Access項(xiàng)目的基本構(gòu)件。 聲明過程l 模塊以_為基礎(chǔ)編寫。VBA語言l 模塊以_或_為單元的集合方式存儲(chǔ)。l 在Access中,模塊分為_和_兩種類型。子過程(Sub)類模塊函
40、數(shù)過程(Function)標(biāo)準(zhǔn)模塊6.3 VBA模塊的創(chuàng)建模塊的創(chuàng)建模塊聲明過程聲 明函數(shù)過程子過程6.3 VBA模塊的創(chuàng)建模塊的創(chuàng)建6.3.1 類類模塊的創(chuàng)建模塊的創(chuàng)建l 窗體模塊和報(bào)表模塊都是類模塊,而且它們都依附于某一窗體或報(bào)表而存在。 類模塊的創(chuàng)建方法參考第7章。6.3.2 標(biāo)準(zhǔn)標(biāo)準(zhǔn)模塊的創(chuàng)建模塊的創(chuàng)建l 標(biāo)準(zhǔn)模塊包含的是不與任何對象相關(guān)聯(lián)的通用過程,這些過程可以在數(shù)據(jù)庫中的任何位置直接調(diào)用執(zhí)行。l 全局變量或公共過程具有全局的特性,其作用范圍在整個(gè)應(yīng)用程序里。l 隨應(yīng)用程序的運(yùn)行而開始、關(guān)閉而結(jié)束。標(biāo)準(zhǔn)模塊示例標(biāo)準(zhǔn)模塊示例 模塊是以過程為單元組成的。(1)聲明(一個(gè))(2)子過程/函
41、數(shù)過程(一個(gè)/多個(gè)) 聲明區(qū)域用于定義模塊中使用的變量等內(nèi)容。 過程是由代碼組成的單元,包含一系列計(jì)算語句和執(zhí)行語句。過程有兩種類型:Sub過程和Function過程。6.3.2 標(biāo)準(zhǔn)標(biāo)準(zhǔn)模塊的創(chuàng)建模塊的創(chuàng)建1. Sub過程過程lSub過程又稱子過程,用于執(zhí)行一個(gè)操作或一系列的運(yùn)算,無返回值。Public | Private Static Sub 子過程名子過程名 ( 形參列表形參列表 ) Exit Sub End Sub 過程名不能與所在模塊的模塊名相同。 如果沒有參數(shù),過程名后也必須包含一對()。說明說明 Public:過程能被所有模塊的所有其它過程調(diào)用。:過程能被所有模塊的所有其它過程調(diào)
42、用。 Private:過程只能被同一模塊的其它過程調(diào)用。:過程只能被同一模塊的其它過程調(diào)用。 Static:表示調(diào)用之間保留:表示調(diào)用之間保留Sub過程的局部變量的值。過程的局部變量的值。 即使過程中也使用了同名變量,對在即使過程中也使用了同名變量,對在Sub外外 聲明聲明的變量不會(huì)產(chǎn)生任何影響。的變量不會(huì)產(chǎn)生任何影響。 如果沒有使用Public或Private指定,過程則是Public(默認(rèn)情況);如果沒有使用Static,則在調(diào)用之后不會(huì)保留局部變量的值。Sub過程調(diào)用方法過程調(diào)用方法l 語法格式一Call 子過程名子過程名 ( ) 實(shí)參列表和形參列表必須一一對應(yīng)。l 語法格式二子子過程名
43、過程名 Public與與Private的舉例(的舉例(1)Public與與Private的舉例(的舉例(2)Public與與Private的舉例(的舉例(3)2. Function過程過程l語法格式Public|Private Static Function 函數(shù)名函數(shù)名(形參列表形參列表 ) AS 數(shù)據(jù)類型數(shù)據(jù)類型 程序代碼程序代碼 Exit Function 函數(shù)名函數(shù)名 = 表達(dá)式表達(dá)式 程序代碼程序代碼 End Function 在函數(shù)過程執(zhí)行中一旦遇到Exit Function語句,則結(jié)束函數(shù)過程的執(zhí)行。函數(shù)過程的調(diào)用形式函數(shù)過程的調(diào)用形式l 語法格式函數(shù)過程名函數(shù)過程名 ( ) 不
44、能使用CALL來調(diào)用執(zhí)行。 需要直接引用函數(shù)名并加括號來辨別。 可以在查詢、宏等中調(diào)用使用。舉例舉例【例】編寫一個(gè)返回系統(tǒng)日期的函數(shù)過程Getdate( )。 Function Getdate( ) Getdate=Str(Year(Now)+年 + Str(Month(Now)+月+Str(Day(Now)+日 End Function Sub Pdate( ) Debug.Print Getdate( ) End Sub 調(diào)用函數(shù)過程: 運(yùn)行結(jié)果將顯示在立即窗口中。6.4 VBA程序設(shè)計(jì)基礎(chǔ)程序設(shè)計(jì)基礎(chǔ) 要用要用Access來完成一個(gè)實(shí)際的而用宏來完成一個(gè)實(shí)際的而用宏又又實(shí)現(xiàn)不了的數(shù)據(jù)庫應(yīng)
45、用系統(tǒng)時(shí),就實(shí)現(xiàn)不了的數(shù)據(jù)庫應(yīng)用系統(tǒng)時(shí),就應(yīng)該應(yīng)該掌握掌握VBA編程。編程。 VBA中的語句是能夠完成某項(xiàng)操作的一條完整命令,它可以包含關(guān)鍵字、函數(shù)、運(yùn)算符、變量、常量以及表達(dá)式等。6.4 VBA程序設(shè)計(jì)基礎(chǔ)程序設(shè)計(jì)基礎(chǔ)VBA語句類型語句類型 VBA的語句分為3種類型: 聲明聲明語句語句 賦值賦值語句語句 控制結(jié)構(gòu)語句控制結(jié)構(gòu)語句 為變量、符號常量或程序命名,并且指定一個(gè)數(shù)據(jù)類型。把一個(gè)值或表達(dá)式賦給一個(gè)變量。賦值符號:=用來控制各語句的執(zhí)行順序。6.4.1 聲明語句聲明語句 在VBA中,使用聲明語句去命名和定義過程、變量、數(shù)組以及符號常量。 當(dāng)聲明一個(gè)過程、變量或常量時(shí),也同時(shí)定義了它的作用
46、范圍,而此范圍取決于聲明位置以及所用的關(guān)鍵字。 過程中聲明的變量只在過程中可以使用,而且在調(diào)用時(shí)會(huì)丟失其變量的值,除非將它聲明為Static。6.4.2 賦值語句賦值語句 賦值語句用于指定一個(gè)值或表達(dá)式給變量或符號常量。 語法格式: Let 變量名變量名 = 值或表達(dá)式值或表達(dá)式 功能:將指定的值或表達(dá)式的值賦給變量。 通常情況下省略Let。 賦值語句中的“ = ”并不是數(shù)學(xué)中的等號,它表示:將右邊的表達(dá)式的運(yùn)算結(jié)果賦予變量。賦值語句舉例賦值語句舉例【例】指定InputBox函數(shù)返回值給變量YourName。 Sub Question ( ) Dim YourName As String Di
47、m a As Integer YourName = InputBox ( What is your name ? ) a = MsgBox( Your name is & YourName) End Subl 語句的執(zhí)行方式按流程可以分為:6.4.3 控制結(jié)構(gòu)語句控制結(jié)構(gòu)語句順序結(jié)構(gòu)順序結(jié)構(gòu)按照語句的邏輯按照語句的邏輯順序依次執(zhí)行順序依次執(zhí)行分支結(jié)構(gòu)分支結(jié)構(gòu)根據(jù)條件是否成立根據(jù)條件是否成立選擇語句執(zhí)行選擇語句執(zhí)行路徑路徑循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)可可重復(fù)執(zhí)行重復(fù)執(zhí)行某一段程序語句某一段程序語句例1:已知圓的半徑r(從鍵盤上輸入),編寫area子過程求圓的面積s。Public Sub area()
48、 Const PI = 3.14 Dim r As Single r = InputBox(請輸入圓的半徑:) S = PI * r 2 Debug.Print 圓的面積為: & sEnd Sub1. 順序結(jié)構(gòu)語句順序結(jié)構(gòu)語句例2:從鍵盤上輸入兩個(gè)數(shù)x、y,編寫swap子程序?qū)崿F(xiàn)這兩個(gè)數(shù)據(jù)的交換。Public Sub swap() x = InputBox(請從鍵盤上輸入一個(gè)數(shù)X:) y = InputBox(請從鍵盤上輸入一個(gè)數(shù)Y:) Debug.Print 交換前X、Y分別為:, x, y t = x x = y y = t Debug.Print 交換后X、Y分別為:, x, y
49、End Sub510txy51051. 順序結(jié)構(gòu)語句順序結(jié)構(gòu)語句 在VBA代碼中使用If條件語句,可根據(jù)條件表達(dá)式的值來選擇程序執(zhí)行哪些語句。2. 分支結(jié)構(gòu)語句分支結(jié)構(gòu)語句l If條件語句的主要格式:單分支雙分支多分支(1)單分支結(jié)構(gòu)語句)單分支結(jié)構(gòu)語句l 單分支結(jié)構(gòu)語句格式(一):單分支結(jié)構(gòu)語句格式(一):If Then 功能: 當(dāng)條件表達(dá)式為真時(shí),執(zhí)行Then后面的語句,否則不做任何操作。說明: Then后的語句只能是一條,或者是多條語句用冒號分隔,且必須與If 語句在同一行上。 (1)單分支結(jié)構(gòu)語句)單分支結(jié)構(gòu)語句l 單分支結(jié)構(gòu)語句格式(二):單分支結(jié)構(gòu)語句格式(二): If Then
50、End If功能: 當(dāng)條件表達(dá)式為真時(shí),執(zhí)行Then后面的語句,否則不做任何操作。說明: 語句塊中的語句可以是多條,且可以多行書寫。對條件表達(dá)式求值語句塊IfTrueFalseEnd If 后的語句單分支結(jié)構(gòu)語句流程圖單分支結(jié)構(gòu)語句流程圖單分支結(jié)構(gòu)語句舉例單分支結(jié)構(gòu)語句舉例【例1】比較兩個(gè)數(shù)值變量x和y的值,用x保存大的值,y保存小的值。If x y Then t = x x = y y = t End If或者:If x y Then t = x : x = y : y = t510txy5105單分支結(jié)構(gòu)語句舉例單分支結(jié)構(gòu)語句舉例【例2】隨機(jī)出一道兩位數(shù)加法題,如答對了,顯示“答案正確!”
51、;答錯(cuò)顯示“答錯(cuò)了!”。 Sub test ( ) Dim A As Integer , B As Integer , Sum As Integer A = 10 + Rnd * 90 : B = 10 + Rnd * 90 Sum = InputBox ( A & + & B & =? , 加法加法 ) If Sum = A + B Then MsgBox ( 答案正確答案正確! ) If Sum A + B Then MsgBox ( 答錯(cuò)了答錯(cuò)了! ) End Sub單分支結(jié)構(gòu)語句舉例單分支結(jié)構(gòu)語句舉例【例3】判斷下面的程序代碼的功能。 Sub Abstr( )
52、Dim A As Single, B As Single A = InputBox(請輸入一個(gè)數(shù)值:請輸入一個(gè)數(shù)值:) If A = 0 Then B = A If A Date Then Debug.Print 未到期!未到期! If A = Date Then Debug.Print 已到期!已到期! End Sub(2)雙分支結(jié)構(gòu)語句)雙分支結(jié)構(gòu)語句l 雙分支結(jié)構(gòu)語句格式:雙分支結(jié)構(gòu)語句格式:If Then Else 功能: 當(dāng)條件表達(dá)式為真時(shí),執(zhí)行Then后面的語句1或語句塊1,否則執(zhí)行Else后面的語句2或語句塊2。 If Then Else End If對條件表達(dá)式求值語句塊1語句
53、塊2IFENDIF雙分支結(jié)構(gòu)語句流程圖雙分支結(jié)構(gòu)語句流程圖TrueFalse雙分支結(jié)構(gòu)語句舉例雙分支結(jié)構(gòu)語句舉例【例例1 1】任意輸入兩個(gè)數(shù)值,輸出兩個(gè)數(shù)中的最大值。 Sub test ( ) Dim A As Single , B As Single A=InputBox(請輸入第一個(gè)數(shù)值:請輸入第一個(gè)數(shù)值:) B=InputBox(請輸入第二個(gè)數(shù)值:請輸入第二個(gè)數(shù)值:) If A = B Then max = A Else max = B Debug.Print 最大數(shù)值是:最大數(shù)值是: & max End Sub例例1的另一種寫法的另一種寫法 Sub test ( ) Dim A
54、 As Single , B As Single A=InputBox(請輸入第一個(gè)數(shù)值:請輸入第一個(gè)數(shù)值:) B=InputBox(請輸入第二個(gè)數(shù)值:請輸入第二個(gè)數(shù)值:) If A = B Then max = A Else max = B End If Debug.Print 最大數(shù)值是:最大數(shù)值是: & max End Sub雙分支結(jié)構(gòu)語句舉例雙分支結(jié)構(gòu)語句舉例【例例2 2】自定義過程Welcome,其功能是:如果當(dāng)前系統(tǒng)時(shí)間在1218點(diǎn)之間,則在立即窗口中顯示“下午好!”,否則顯示“歡迎下次光臨!”。Sub Welcome( )If Hour(Time() = 12 And H
55、our(Time() = 0 Then Y = 1 Else Y = -1 Debug.Print Y End Sub 1 x=0Y= -1 x= 0 Then Y = 1 Else Y = -1 End If Debug.Print Y End Sub例例3的第的第3種寫法種寫法 Sub XY( ) Dim X As Single , Y As Single X = InputBox(請輸入一個(gè)數(shù)值:請輸入一個(gè)數(shù)值:) Y=IIf( X = 0 , 1 , -1) Debug.Print Y End Sub雙分支結(jié)構(gòu)語句舉例雙分支結(jié)構(gòu)語句舉例【例例4 4】輸入一個(gè)整數(shù),編程判斷該數(shù)是奇數(shù)還是
56、偶數(shù)。 Sub Parity( ) Dim i As Integer i = InputBox(請輸入一個(gè)整數(shù):請輸入一個(gè)整數(shù):) If i / 2 = i 2 Then Debug.Print i; 是偶數(shù)。是偶數(shù)。 Else Debug.Print i; 是奇數(shù)。是奇數(shù)。 End If End Sub雙分支結(jié)構(gòu)語句舉例雙分支結(jié)構(gòu)語句舉例【例例5 5】輸入購書數(shù)量及單價(jià),如果購買10本以上,就打八折,否則不打折。計(jì)算并輸出購書金額。 Sub buy ( ) Dim n As Integer, price As Single, money As Single n = InputBox ( 請輸
57、入購書數(shù)量請輸入購書數(shù)量 , 購書數(shù)量購書數(shù)量 ) price = InputBox ( 請輸入單價(jià)請輸入單價(jià) , 單價(jià)單價(jià) ) If n 10 Then money = price * n Else money = price * n * 0.8 End If MsgBox( 購書金額購書金額 = +Str ( money )+元元 ) End Sub(3)IfThenElseIf多多分支結(jié)構(gòu)語句分支結(jié)構(gòu)語句l語句語句格式:格式: If Then ElseIf Then Else End If語句語句流程圖流程圖ElseIfTrueFalseEnd If后語句后語句語句塊1條件表達(dá)式2Fal
58、seTrue語句塊2TrueFalse條件表達(dá)式1語句塊n功能功能【例1】判斷鍵盤輸入的字符是何種類型的字符。 功能: 依次測試條件表達(dá)式1、表達(dá)式2、,當(dāng)遇到條件表達(dá)式為真時(shí),執(zhí)行該條件下的語句塊。如均不為真,若有Else選項(xiàng),則執(zhí)行Else后的語句塊,否則執(zhí)行End If后面的語句。雙分支結(jié)構(gòu)語句舉例雙分支結(jié)構(gòu)語句舉例 Sub Character ( ) strChar = InputBox ( 請輸入任意一個(gè)字符請輸入任意一個(gè)字符 ) nChar = Asc ( strChar ) If nChar = 65 And nChar = 97 And nChar = 48 And nChar
59、 0Y= 0 x=0 -1 x 0 Then Y = 1 ElseIf X = 0 Then Y = 0 Else X = 3 And age = 5 And age = 6 Then Debug.Print 大班大班 Else Debug.Print 幼兒園不收幼兒園不收 End If End Sub多分支結(jié)構(gòu)語句多分支結(jié)構(gòu)語句【例4】根據(jù)工資級別來計(jì)算獎(jiǎng)金。 Function Bonus( performance, salary ) If performance = 1 Then Bonus = salary * 0.1 ElseIf performance = 2 Then Bonus
60、= salary * 0.09 ElseIf performance = 3 Then Bonus = salary * 0.07 Else Bonus = 0 End If End Function多分支結(jié)構(gòu)語句多分支結(jié)構(gòu)語句【例5】編寫子過程,通過調(diào)用【例4】自定義的函數(shù),求解指定的工作級別和工資所對應(yīng)的獎(jiǎng)金。Sub Calc( ) Dim X As Integer, Y As Single, Z As Single X = InputBox( 請輸入工作級別:請輸入工作級別: ) Y = InputBox( 請輸入工資:請輸入工資: ) Z = Bonus( X, Y ) Debug.Print 獎(jiǎng)金為:獎(jiǎng)金為: & Z & 元元End Sub(4)Select Case多分支結(jié)構(gòu)語句多分支結(jié)構(gòu)語句l 多分支結(jié)構(gòu)語句格式
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度幼兒園與教師簽訂的幼兒教育資源共享保密協(xié)議
- 光儲(chǔ)氫氨一體化示范項(xiàng)目可行性研究報(bào)告
- 產(chǎn)業(yè)數(shù)字化科技創(chuàng)新園項(xiàng)目可行性研究報(bào)告
- 二零二五年度字畫裝裱與藝術(shù)品展覽策劃與管理合同
- 二零二五年度新能源儲(chǔ)能項(xiàng)目多人入股合作協(xié)議
- 二零二五年度生態(tài)宜居區(qū)委托中介代理出租協(xié)議
- 2025年度租賃房屋合同轉(zhuǎn)讓與租賃雙方權(quán)益保障協(xié)議
- 二零二五年度方式卡租賃與智能家居系統(tǒng)合作協(xié)議
- 二零二五年度個(gè)人信用貸款擔(dān)保中介服務(wù)合同
- 2025年度自媒體合伙人內(nèi)容創(chuàng)作與推廣服務(wù)合同
- 包扎(三角巾)課件
- 外科學(xué)第八版手外傷以及斷指再植
- 高校助學(xué)貸款結(jié)清憑證
- 產(chǎn)業(yè)園規(guī)劃建筑設(shè)計(jì)說明
- 現(xiàn)場快速反應(yīng)跟蹤管理看板
- 瑪莎拉蒂路演執(zhí)行手冊升級版
- 《建筑工程資料管理規(guī)程》DB34T918-2019
- 框架核心筒結(jié)構(gòu)辦公樓施工測量方案(12頁)
- 整體機(jī)房維護(hù)方案及報(bào)價(jià)通用
- 北大金融學(xué)課程表
- 英國簽證戶口本翻譯模板(共4頁)
評論
0/150
提交評論