




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第九章模塊與VBA編程基礎概述本章要涉及到編程。了解編程基礎知識,掌握程序的三種結構在VBA中的實現(xiàn),能夠讀懂程序并寫(填)出程序片段v 模塊基本概念v 創(chuàng)建模塊v VBA設計基礎v VBA流程控制v 過程調用和參數(shù)傳遞1. 程序錯誤處理和調試9.1模塊基本概念模塊就是一些程序的集合,完成特定的功能。模塊分類:v 類模塊(與Access內置對象關聯(lián),如窗體、報表)1. 標準模塊9.2 創(chuàng)建模塊 模塊以過程為單元組成,一個模塊包含一個聲明區(qū)域和若干個過程Sub、函數(shù)Function。 過程創(chuàng)建一般格式public|privatestatic 過程名(形參表)語句Exit subEnd sub 調
2、用過程Call 過程名(參數(shù)表) Function函數(shù)public|privatestatic 函數(shù)名(形參表)語句End Function 例題9.1編寫一個求圓面積的函數(shù)Area()對于該例題中出現(xiàn)的語句只要大體了解即可。9.1 【添加過程】對話框【例9.1】編寫一個計算圓面積的函數(shù)過程Area()。Public Function Area(r as Single) as SingleIf r=0 ThenMsgBox 圓的半徑必須大于零,vbCritical,警告Area=0 半徑為零,設置函數(shù)返回值為0Exit Function 結束函數(shù)過程運行End IfArea=3.14*r*rE
3、nd Function函數(shù)過程的調用形式:函數(shù)過程名()函數(shù)過程不能使用CALL來調用執(zhí)行,需要直接引用函數(shù)名并加括號來辨別,可以在查詢、宏等中調用使用,函數(shù)過程的返回值可以直接賦給某個變量。例如,假如在某個窗體中要計算半徑為8的圓面積,并用變量S保存圓面積值,可調用上面創(chuàng)建的Area()函數(shù)過程,調用命令格式為:s=Area(8)。 9.3 VBA編程基礎 VBA是一種計算機語言。 對象在Access中指表、查詢、窗體、報表、頁、宏、模塊、DoCmd等 認識VBE窗口 例題9.2新建窗體,放置一個按鈕,該按鈕的單擊事件響應某過程。對象組合框事件組合框屬 性 窗口工 程 窗口代 碼 窗口立 即
4、 窗口標準工具欄代碼編輯區(qū) VBA語句書寫原則一行一句,如果特別長可以用_(下劃線)隔開如果節(jié)省空間,可以用: (冒號)將多條語句寫在同行VBE可以自動識別語法錯誤,有顏色提示。 注釋,給程序員看,對機器無用(單引號后面就是注釋內容)rem后面是注釋內容數(shù)據(jù)類型Access中提供了若干數(shù)據(jù)類型,如下:v 整數(shù)Integerv 長整數(shù)Longv 單精度數(shù)Singlev 雙精度數(shù)Doublev 貨幣Currencyv 字符串Stringv 布爾型Booleanv 日期型Datev 變體類型Variant1. 用戶自定義類型數(shù)據(jù)庫對象 Datebase Connection Form Report
5、Control QueryDef TableDef Command RecorderSet常量、變量、數(shù)組常量:不能改變的量。v 直接常量v 符號常量Const定義的常量v 內部常量,Access定義的常量1. 系統(tǒng)常量,True、False、Null、Yes、No、On、Off變量 變量,可以改變的量。 變量命名包含字母、數(shù)字、下劃線、漢字,且不以數(shù)字、下劃線開頭,不區(qū)分大小寫,不能與系統(tǒng)關鍵字沖突。 聲明變量:在VBA中可以隱式聲明顯式聲明,Dim 變量作用域局部變量、模塊變量、全局變量 數(shù)據(jù)庫對象變量的引用方法窗體名稱!控件名稱.屬性名稱注意嘆號和點號的使用 Function SafeS
6、qr(num) Val_Temp=Abs(num) SafeSqr=Sqr(Val_Tem) End Function 例如: intX1%=1243 定義intX1為一個整型變量 DouX2#=45665.456 定義douX2為一個雙精度變量 StrX3$=Access 定義strX3為一個字符串變量 聲明變量的一般方法是用Dim.AsDataType結構,其中As指定變量數(shù)據(jù)類型。 Dim語句使用格式為:Dim 變量名As 數(shù)據(jù)類型 如果不使用“數(shù)據(jù)類型”可選項,默認定義的變量為Variant數(shù)據(jù)類型??梢允褂肈im語句在一行中聲明多個變量。 例如: Dim strX As String
7、 定義了1個字符型變量strX Dim intX As Integer,strZ As String 定義了1個整型變量intX和1個字符型變量strZ Dim x 定義了1個變體(Variant)類型變量x Dim I,j,k As integer 只有k是integer型,I與j都是Variant型表9.4 3種變量的使用規(guī)則與作用域作用范圍局部變量模塊變量全局變量聲明方式Dim、StaticDim、PrivatePublic聲明位置在子過程中在窗體/模塊的聲明區(qū)域在標準模塊的聲明區(qū)域能否被本模塊的其他過程存取不能能能能否被其他模塊的過程存取不能不能能Access建立的數(shù)據(jù)庫對象及其屬性,
8、均可被看成是VBA程序代碼中的變量及其指定的值來加以引用,與普通變量不同的是要使用規(guī)定的引用格式。例如,窗體和報表對象的引用格式為:Forms(或Reports)窗體(或報表)名稱!控件名稱.屬性名稱關鍵字Forms或Reports分別指示窗體或報表對象類;感嘆號(!)為分隔符,用于分隔開父子對象;“屬性名稱”為可選項,若省略,則默認為控件的基本屬性Value。注意:如果對象名稱中含有空格或標點符號,引用時要用方括號把對象名稱括起來。例如,要在代碼中引用窗體(Myform1)中名為Txtxh的文本框控件,可使用以下語句:Forms!Myform1!Txtxh=3020503323“若在本窗體的
9、模塊中引用,可以使用Me代替Forms!Myform1。語句變?yōu)椋篗e!Txtxh=3020503323“Forms!Myform1!Txtxh”在程序語句中的作用相當于變量,但它指示的是某個Access對象。當需要多次引用對象時,可以先聲明一個Control(控件)數(shù)據(jù)類型的對象變量,然后使用Set關鍵字建立對象變量指向的控件對象。語句使用格式如下:Dim Txtxhbl As Control 定義對象變量,數(shù)據(jù)類型為Control(控件)數(shù)據(jù)類型Set Txtxhbl=Forms!Myform1!Txtxh 為對象變量指定窗體控件對象以后要引用控件對象,可轉為引用對象變量。例如:Txtxh
10、bl=3020503323等同于:Forms!Myform1!Txtxh=3020503323借助將變量定義為對象變量類型并使用Set語句為對象變量指定對象的方法,可以定義表9.3中所列任何對象數(shù)據(jù)類型的對象變量,并將數(shù)據(jù)庫對象指定為對象變量名。數(shù)組 數(shù)組是相同類型變量的集合 定義數(shù)組Dim 數(shù)組名(下界 to 上界) AS 類型默認下界為0零 數(shù)組引用通過數(shù)組明(下標)方法引用 二維數(shù)組Dim 數(shù)組名(a to b,m to n) AS 類型列舉一些關于數(shù)組定義、引用的例子單獨考數(shù)組很少,一般與循環(huán)部分結合! 數(shù)組變量由變量名和數(shù)組下標組成,在VBA中不允許隱式說明數(shù)組,可用Dim語句來聲明
11、數(shù)組。數(shù)組聲明方式為: Dim 數(shù)組名(下標下界to 下標上界) As 數(shù)據(jù)類型 下標下界的缺省值為0,數(shù)組元素為:數(shù)組名(0)至數(shù)組名(下標上界);如果設置下標下界非0,要使用to選項。 在使用數(shù)組時,可以在模塊的通用聲明部分使用Option Base來指定數(shù)組的默認下標下界是0或l: Option Base 1 設置數(shù)組的默認下標下界為l Option Base 0 語句的默認形式 數(shù)組有兩種類型:固定大小的數(shù)組和動態(tài)數(shù)組。前者總保持同樣的大小,而后者在程序中可根據(jù)需要動態(tài)地改變數(shù)組的大小。 (1)固定大小的數(shù)組例如:Dim IntArray(l0) As Integer這條語句聲明了一個
12、有11個整型數(shù)組元素的數(shù)組,數(shù)組元素從IntArray(0)至IntArray(l0),每個數(shù)組元素為一個整型變量,這里指定數(shù)組元素下標上界來定義數(shù)組。VBA中允許指定數(shù)組下標范圍時使用To,如下例所示:Dim IntArray(-2 to 3) As Integer該語句定義一個有6個整型數(shù)組元素的數(shù)組,數(shù)組元素下標從-2到3。如果要定義多維數(shù)組,聲明方式為:Dim 數(shù)組名(數(shù)組第1維下標上界,數(shù)組第2維下標上界) As 數(shù)據(jù)類型例如:Dim IntArray(3,5) As Integer語句定義了一個二維數(shù)組,第一維有4個元素,第二維有6個元素。類似的聲明也可以用在二維以上的數(shù)組中。例如
13、:Dim MultArray(3,1 to 5,0 to 5) As Long語句定義了一個三維數(shù)組,第一維有4個元素,第二維有5個元素,第三維有6個元素,其中數(shù)組元素的總數(shù)為三個維數(shù)的乘積:456=120。(2)動態(tài)數(shù)組在VBA中,還允許用戶定義動態(tài)數(shù)組。很多情況下,不能明確知道數(shù)組中應該有多少元素,可使用動態(tài)數(shù)組。動態(tài)數(shù)組中元素的個數(shù)是不定的,在程序運行中可以改變其大小。動態(tài)數(shù)組的定義方法是:先使用Dim來聲明數(shù)組,但不指定數(shù)組元素的個數(shù),而在以后使用時再用ReDim來指定數(shù)組元素個數(shù),稱為數(shù)組重定義。在對數(shù)組重定義時,可以使用ReDim后加保留字Preserve來保留以前的值,否則使用R
14、eDim后,數(shù)組元素的值會被重新初始化為默認值?!纠?.4】定義動態(tài)數(shù)組IntArray,設默認下界為1,并用循環(huán)賦值。Dim IntArray() As Integer 聲明動態(tài)數(shù)組ReDim IntArray(5) 數(shù)組重定義,分配5個元素For I = 1 To 5 使用循環(huán)給數(shù)組元素賦值IntArray(I) = INext IRem數(shù)組重定義,調整數(shù)組的大小,并抹去其中元素的值。ReDim IntArray(10) 重新設置為10個元素,IntArray(1)至IntArray(5)的值不保留For I = 11 To 20 使用循環(huán)給數(shù)組元素重新賦值IntArray(I) = IN
15、ext IRem數(shù)組重定義,調整數(shù)組的大小,使用保留字Preserve來保留以前的值。ReDim Preserve IntArray(15) 重新設置為15個元素,IntArray(1)至IntArray(10)的值保留For I = 11 To 15 使用循環(huán)給未賦值數(shù)組元素賦值IntArray(I) = INext IRedim語句只能出現(xiàn)在過程中,可以改變數(shù)組的大小和上下界,但不能改變數(shù)組的維數(shù)。執(zhí)行不帶Preserve關鍵字的Redim語句時,數(shù)組中存儲的數(shù)據(jù)會全部丟失。VBA將重新設置其中元素的值。對于Variant變量類型的數(shù)組,設為Empty;對于Numeric類型的數(shù)組,設為0
16、;對于String類型的數(shù)組則設為空字符串;對象數(shù)組則設為Nothing。使用Preserve關鍵字,可以改變數(shù)組中最后一維的邊界,但不能改變這一維中的數(shù)據(jù)。例如:Redim IntArray(10,10,10)Redim Preserve IntArray(10,10,15)也就是說,在使用Preserve關鍵字時,只能通過改變數(shù)組的上界來重新設置數(shù)組的大小,改變數(shù)組的下界將會導致一個錯誤。如果改變后的數(shù)組比原來小,那么多出來的數(shù)據(jù)將會丟失。(3)數(shù)組的使用數(shù)組聲明后,數(shù)組中的每個元素都可以當作單個的變量來使用,其使用方法同相同類型的普通變量。數(shù)組元素的引用格式為:數(shù)組名(下標值)。其中:如
17、果該數(shù)組為一維數(shù)組,則下標值為一個范圍為數(shù)組下標下界,數(shù)組下標上界的整數(shù);如果該數(shù)組為多維數(shù)組,則下標值為多個(不大于數(shù)組維數(shù))用逗號分開的整數(shù)序列,每個整數(shù)(范圍為數(shù)組該維下標下界,數(shù)組該維下標上界)表示對應的下標值。 例如,可以如下引用前面定義的數(shù)組,設默認下界為1。IntArray(2) 引用一維數(shù)組IntArray的第2個元素。IntArray(2,2) 引用二維數(shù)組IntArray的第2行第2個元素?!纠?.5】若要存儲一年中每天的支出,可以聲明一個具有365個元素的數(shù)組變量,而不是365個變量,數(shù)組中的每一個元素都包含一個值。下列的語句聲明數(shù)組CurArray具有365個元素,設默
18、認下界為1。Dim CurArray (1 to 365) As Currency 聲明一個具有365個元素的一維數(shù)組Dim intI As IntegerFor intI=1 to 365 CurArray(intI) = 10 每個數(shù)組元素都賦予一個初始值10Next運算符、表達式運算符v 算術運算符+ - * / mod v 字符串運算符+ &,推薦使用&v 關系運算符= = like is between.andv 邏輯運算符and or not1. 對象運算符! . 【例9.6】算術運算符應用示例。 28 計算2的8次方 2(1/2)或20.5 計算2的平方根 7/2 標準除法,結果
19、為3.5 72 整數(shù)除法,結果為3 10 Mod 4 取模運算,結果為2 10 Mod 2 結果為0 10 Mod -4 結果為2 -10 Mod -4 結果為-2 -8.8 Mod 5 結果為-4 20 True 結果為21,邏輯量True轉化為數(shù)值-1 20 + False +6 結果為26,邏輯量False轉化為數(shù)值0 【例9.7】“&”運算符應用示例。 Strx =ABC Strx&是大寫英文字母 出錯 Strx & 是大寫英文字母 結果為“ABC是大寫英文字母” Access & 數(shù)據(jù)庫教程 結果為“Access數(shù)據(jù)庫教程” abcd & 1234 結果為“abcd1234” abc
20、d & 1234 結果為“abcd1234” 4321 & 1234 結果為“43211234” 4321 & 1234 結果為“43211234” 2+3 & = & (2+3) 結果為“2+3=5” 【例9.8】“+”運算符應用示例。 4321+1234 結果為5555 4321+1234 結果為“43211234” abcd+1234 出錯 4321+1234 & 100 結果為“5555100” 【例9.9】Is關系運算符應用示例。 Dim s1,s2 As Control Set s1=Me!text1 Set s2=Me!text1 strx=s1 Is s2 strx值為“Tru
21、e” 【例9.10】關系運算符應用示例。 Dim S 定義變量S S=(52) 結果為True S=(2=5) 結果為False S=(abcdabc) 結果為True S=(王力劉力) 結果為True S=(#2005/10/10#2004/10/12#) 結果為True 【例9.11】邏輯運算符應用示例。 Dim S 定義變量S S=(52 And 3=4) 結果為False S=(52 Or 3=4) 結果為True S=(abcdabc And 3=4) 結果為False S=Not(3=4) 結果為True S=(52 Xor 3=4) 結果為True S=(52 Xor 4=3)
22、結果為False S=(25 Eqv 3=4) 結果為True S=(52 Eqv 3=4) 結果為False S=(52 Imp 3=4) 結果為False S=(52 Imp 4=3) 結果為True表達式 表達式就是由常量、變量、運算符構成的字符串,表達式具有特定的唯一值。 表達式運算優(yōu)先級參看表9.9 P222(1)表達式的組成表達式由字面值、常量、變量、運算符、函數(shù)、標識符、邏輯量和括號等按一定的規(guī)則組成,表達式通過運算得出結果,運算結果的類型由操作數(shù)的數(shù)據(jù)和運算符共同決定。注意:在VBA中,邏輯量在表達式中進行算術運算時,True值被當成-1、False值被當成0處理。(2)表達式
23、的書寫規(guī)則只能使用圓括號且必須成對出現(xiàn),可以使用多個圓括號,但必須配對。乘號不能省略。X乘以Y應寫成X*Y,不能寫成XY。表達式從左至右書寫,無大小寫區(qū)分。(3)算術運算表達式的結果類型在算術運算表達式中,參與運算的操作數(shù)可能具有不同的數(shù)據(jù)精度,VBA規(guī)定運算結果的數(shù)據(jù)類型采用精度高的數(shù)據(jù)類型。(4)運算優(yōu)先級如果一個表達式中含有多種不同類型的運算符,運算進行的先后順序由運算符的優(yōu)先級決定。VBA常用運算符的優(yōu)先級劃分如9.9所示。表9.9 運算符的優(yōu)先級高優(yōu)先級 高 低低算術運算符字符串運算符關系運算符邏輯運算符指數(shù)運算()&+=Not負數(shù)(-)And乘法和除法(*、/)Or整數(shù)除法()取模
24、運算(Mod)加法和減法(+、-)關于運算符的優(yōu)先級作如下說明:不同類型運算符的優(yōu)先級為:算術運算符字符串運算符關系運算符邏輯運算符圓括號優(yōu)先級最高。所有關系運算符的優(yōu)先級相同。也就是說,按從左到右順序處理。算術運算符和邏輯運算符必須按照表9.9所列優(yōu)先順序處理。函數(shù)v 數(shù)學函數(shù)絕對值函數(shù) abs(數(shù)值表達式)向下取整 Int(數(shù)值表達式)取整Fix(數(shù)值表達式)四舍五入Round(數(shù)值表達式)自然指數(shù)Exp(數(shù)值表達式)自然對數(shù)Log(數(shù)值表達式)開平方Sqr(數(shù)值表達式)正弦函數(shù)Sin(數(shù)值表達式)余弦函數(shù)Cos(數(shù)值表達式)正切函數(shù)Tan(數(shù)值表達式)隨機函數(shù)Rnd(數(shù)值表達式)函數(shù) 字
25、符串函數(shù)字符串檢索InStr(起始位置,串1,串2,Compare)在串1中尋找串2的起始位置。-串長函數(shù)len(字符串),返回串長,漢字算一個-字符串截取left(str,n)Right(str,n)mid(str,start,n)字符串函數(shù) 生成空格space(n),產(chǎn)生n個空格 大小寫轉換Ucase(str)轉換成大寫Lcase(str)轉換成小寫 刪除空格Ltrim(str)消除前面空格Rtrim(str)消除后面空格Trim(str)消除前后空格注意:沒有直接消除中間空格函數(shù)日期、時間函數(shù) Date() Time() Now() Year(日期)month(日期)Day(日期) Ho
26、ur()minute()second() DateAdd(間隔類型,間隔值,基準日期時間)DateDiff(間隔類型,日期1,日期2)類型轉換 字符轉成ASCII碼ASC(字符串),只轉換第一個 ASCII轉成字符 Chr(代碼) 數(shù)字轉字符 Str(數(shù)值表達式) 字符轉數(shù)字Val(字符串)流程控制語句 聲明語句:命名或定義變量、常量、函數(shù)等 賦值語句:將表達式值賦給變量變量名=表達式 Goto語句 不推薦使用9.4.1 聲明語句聲明語句通過聲明語句可以命名和定義過程、變量、數(shù)組或常量。當聲明一個過程、變量或數(shù)組時,也同時定義了它們的作用范圍,此范圍取決于聲明位置(子過程、模塊或全局)和使用什
27、么關鍵字(Dim、Public、Static或Global等)來聲明它。例如,有如下程序段:Sub Myproc( )Dim SinS as Single,SinR as SingleConst P=3.14159End Sub上述語句聲明定義了一個名為Myproc的子過程,Dim語句定義了2個名稱分別為SinS和SinR的單精度數(shù)據(jù)變量,Const語句定義了1個名為P的符號常量。當這個子過程被調用或運行時,所有包含在Sub和End Sub之間的語句都會被執(zhí)行。 9.4.2 賦值語句賦值語句賦值語句用于指定一個值或表達式給變量或常量。使用格式為:Let 變量名= 值或表達式其中:Let為可選項
28、,在使用賦值語句時,一般省略。例如:Dim SinS as Single,SinR as SingleSinS=1234.567Let SinR=12.3關于使用賦值語句的說明:(1)當數(shù)值表達式與變量精度不同時,系統(tǒng)強制轉換成變量的精度。例如:Dim IntN as IntegerIntN=10.6 IntN為整型變量,10.6經(jīng)四舍五入轉換后賦值,IntN值為11(2)當表達式是數(shù)字字符串,變量為數(shù)值型,系統(tǒng)自動轉換成數(shù)值類型再賦值,若表達式含有非數(shù)字字符或空串時,賦值出錯。例如:IntN%=123 IntN值為123IntN%=1a2 3 出錯,類型不匹配(3)不能在一個賦值語句中,同時
29、給多個變量賦值。例如:以下語句語法沒有錯誤,但結果不正確。x%=y%=z%=10(4)實現(xiàn)累加作用的賦值語句。例如:n=n+1 取變量n中的值加1后再賦給n,與循環(huán)語句結合,可實現(xiàn)計數(shù)說明:還有一個賦值語句是Set語句,它用來指定一個對象給已聲明為對象類型的變量,Set關鍵字不能省略。 9.4.3 標號和標號和GoTo語句語句GoTo語句用于在程序執(zhí)行過程中實現(xiàn)無條件轉移。格式為:GoTo標號程序執(zhí)行過程中,遇到GoTo語句,會無條件地轉到其后的“標號”位置,并從該位置繼續(xù)執(zhí)行程序。標號定義時,名字必須從代碼行的第一列開始書寫,名字后加冒號“:”。例如:Goto Label1 跳轉到標號為“L
30、abel1”的位置執(zhí)行Label1: 定義的“Label1”標號位置說明:GoTo語句在早期的Basic語言中曾廣泛應用。在VBA中,程序的執(zhí)行流程可用結構化語句控制,除在錯誤處理的“On Error GoTo.”結構中使用外,應避免使用GoTo語句。 9.4.4 執(zhí)行語句執(zhí)行語句順序結構每條語句執(zhí)行且執(zhí)行一次。選擇(分支)結構根據(jù)條件真假,有些語句可能不執(zhí)行,但執(zhí)行部分只運行一次。循環(huán)結構根據(jù)條件真假,有些語句可能執(zhí)行多次,但也有可能一次也不執(zhí)行!分支結構 單分支、雙分支、多分支 單分支if 條件 then 語句塊 雙分支if 條件 then 語句塊1else 語句塊2end if 多分支,
31、即單雙分支的嵌套注意:else總與最近的if配對使用!當嵌套層次太多時,可以考慮使用case語句(1)單分支結構語句格式為:If Then 或 If Then End If功能:當條件表達式為真時,執(zhí)行Then后面的語句塊或語句,否則不做任何操作。說明:語句塊可以是一條或多條語句。在使用上邊的單行簡單格式時,Then后只能是一條語句,或者是多條語句用冒號分隔,但必須與If語句在一行上。例如:比較兩個數(shù)值變量x和y的值,用x保存大的值,y保存小的值。語句如下:If xy Thent=x t為中間變量,用于實現(xiàn)x與y值的交換x=y y=tEnd If或If xy Then t=x: x=y: y=
32、t(2)雙分支結構語句格式為:If Then Else 或If Then ElseEnd If功能:當條件表達式為真時,執(zhí)行Then后面的語句1或語句塊1,否則執(zhí)行Else后面的語句2或語句塊2。【例9.12】編寫計算如下函數(shù)的程序語句。If x=0 Theny=Sqr(x)Elsey=Abs(x)End If或If x=0 Then y=Sqr(x) Else y=Abs(x)本例亦可用單分支結構語句實現(xiàn),讀者可寫出程序語句。雙分支結構語句只能根據(jù)條件表達式的真或假來處理兩個分支中的一個。當有多種條件時,要使用多分支結構語句。 (3)多分支結構語句格式為:If Then ElseIf The
33、nElseEnd If功能:依次測試條件表達式1、條件表達式2、,當遇到條件表達式為真時,則執(zhí)行該條件下的語句塊。如均不為真,若有Else選項,則執(zhí)行Else后的語句塊,否則執(zhí)行End If后面的語句。說明:不管條件分支有幾個,程序執(zhí)行了一個分支后,其余分支不再執(zhí)行。當有多個條件表達式同時為真時,只執(zhí)行第一個與之匹配的語句塊。因此,應注意多分支結構中條件表達式的次序及相交性。另外注意ElseIf中不能有空格。 【例9.13】用窗體實現(xiàn)如下操作:當輸入某同學期末考試科目的總平均成績時,顯示該生對應的五級制總評結果。在窗體中添加以下控件:創(chuàng)建2個標簽控件,其標題分別設為:總平均成績和總評結果。創(chuàng)建
34、2個文本框控件,其名字分別設為:Zpcj和Zpjg。創(chuàng)建1個命令按鈕,其標題為“評定”,在其Click事件過程中,加入如下代碼語句:Private Sub command1_Click( )If Me!Zpcj=90 ThenMe!Zpjg=優(yōu)秀ElseIf Me!Zpcj=80 ThenMe!Zpjg=良好ElseIf Me!Zpcj=70 ThenMe!Zpjg=中等ElseIf Me!Zpcj=60 ThenMe!Zpjg=及格ElseMe!Zpjg=不及格End IfEnd Sub運行結果:當在總平均成績文本框中輸入任何數(shù)值數(shù)據(jù)時,單擊【評定】按鈕,總評結果將顯示在總評結果框中。 (4
35、)If語句的嵌套使用:指If或Else后面的語句塊中又包含有If語句。語句格式為:If ThenIf Then End IfEnd If【例9.14】比較3個數(shù)值變量x、y和z的值,通過交換,使得xyz。程序語句如下:If xy Thent=x: x=y: y=t 如果xyIf yz Then t=y: y=z: z=t 如果yzIf xy Then t=x: x=y: y=t 此時的x,y值已不是原先的值End IfEnd IfEnd If注意:嵌套If語句應注意書寫格式,為提高程序的可讀性,多采用鋸齒型。注意If與End If的配對。多個If嵌套,End If與它最近的If配對。2.多分支
36、Select Case語句Select Case語句格式為:Select Case 變量或表達式Case 表達式1Case 表達式2Case ElseEnd Select功能:Select語句首先計算Select Case后的值,然后依次計算每個Case子句中表達式的值,如果的值滿足某個Case值,則執(zhí)行相應的語句塊,如果當前Case值不滿足,則進行下一個Case語句的判斷。當所有Case語句都不滿足時,執(zhí)行Case Else子句。如果條件表達式滿足多個Case語句,則只有第一個Case語句被執(zhí)行。 說明: “變量或表達式”可以是數(shù)值型或字符串表達式。Case表達式與“變量或表達式”的類型必須
37、相同。 Case表達式可以是下列幾種格式: 單一數(shù)值或一行并列的數(shù)值,之間用逗號分開。 用關鍵字To分隔開的兩個數(shù)值或表達式之間的范圍,前一個值必須比后一個值要小。字符串的比較是從它們的第一個字符的ASCII碼值開始比較的,直到分出大小為止。 用Is關系運算符表達式。 例如: Case 1 to 20 Case is20 Case 1 To 5,7,8,10,is20 Case A To Z【例9.15】例9.13中判定學生總評成績的代碼可改寫如下:Select Case Val(me!Zpcj)Case is=90me!Zpjg=優(yōu)秀Case 80,81,82 to 89me!Zpjg=良好
38、Case 70 to 79me!Zpjg=中等Case 60 to 69me!Zpjg=及格Case Elseme!Zpjg=不及格End Select又例如:Dim strx as string *1Select Case strxCase A to Z, a to zstry=英文字母Case !,?,.,;stry=標點符號Case Is68stry=字符的ASCII碼值小于68Case Elsestry=其他字符End Select 3.循環(huán)語句(1)Do WhileLoop循環(huán)語句語法格式為:Do While 條件表達式 Exit Do Loop 功能:Do While循環(huán)語句:當條
39、件表達式結果為真時,執(zhí)行循環(huán)體,直到條件表達式結果為假或執(zhí)行到Exit Do語句而退出循環(huán)體。(2)Do UntilLoop循環(huán)語句語法格式為:Do Until 條件表達式 Exit Do Loop Do Until循環(huán)語句:當條件表達式結果為假時,執(zhí)行循環(huán)體,直到條件表達式結果為真或執(zhí)行到Exit Do語句而退出循環(huán)體。(3)DoLoop While循環(huán)語句語法格式為:Do Exit Do Loop While 條件表達式 說明:關鍵字While用于指明當條件為真(True)時,執(zhí)行循環(huán)體中的語句。(4)DoLoop Until循環(huán)語句語法格式為:Do Exit Do Loop Until
40、條件表達式說明:關鍵字Until用于指明當條件為真(True)前執(zhí)行循環(huán)體中的語句。對于(1)和(2)循環(huán)語句先判斷后執(zhí)行,循環(huán)體有可能一次也不執(zhí)行;而對于(3)和(4)循環(huán)語句為先執(zhí)行后判斷,循環(huán)體至少執(zhí)行一次。在DoLoop循環(huán)體中,可以在任何位置放置任意個數(shù)的Exit Do語句,隨時跳出DoLoop循環(huán)。如果Exit Do使用在嵌套的DoLoop語句中,則Exit Do會將控制權轉移到Exit Do所在位置的外層循環(huán)。當省略While或Until條件子句時,循環(huán)體結構變成如下格式:Do Exit Do Loop循環(huán)結構僅由Do. Loop關鍵字組成,表示無條件循環(huán),若在循環(huán)體中不加Exi
41、t Do語句,循環(huán)結構為“死循環(huán)”。 【例9.16】把26個小寫英文字母賦給數(shù)組strx。 Dim strx(1 to 26) As String I=1 Do While I=26 strx(I)=Chr(I+96) I=I+1 Loop5)ForNext循環(huán)語句主要用于循環(huán)次數(shù)已知的循環(huán)操作。語句格式為:For 循環(huán)變量=初值 To 終值 step 步長值Exit For Next 循環(huán)變量功能:循環(huán)變量先被賦初值。判斷循環(huán)變量是否在終值內,如果是,執(zhí)行循環(huán)體,然后循環(huán)變量加步長值繼續(xù);如果否,結束循環(huán),執(zhí)行Next后的語句。說明:循環(huán)變量必須為數(shù)值型。step步長值:可選參數(shù)。如果沒有指
42、定,則step的步長值默認為1。注意:步長值可以是任意的正數(shù)或負數(shù)。一般為正數(shù),初值應小于等于終值;若為負數(shù),初值應大于等于終值;步長值不能為0,否則造成“死循環(huán)”。【例9.17】把26個大寫英文字母賦給數(shù)組strx。Dim strx(1 to 26) As StringI=1For I=1 To 26 strx(I)=Chr(I+64)Next I說明:循環(huán)體結束后,循環(huán)變量的值為循環(huán)終值+步長值,上例循環(huán)結束后I值為27?!纠?.18】分析下列程序的循環(huán)結構:For K=5 To 10 Step 2K=K*2Next K按照公式計算,循環(huán)次數(shù)為:(10-5+1)/2=3次,但這是錯誤的。實
43、際上,該循環(huán)的循環(huán)次數(shù)為只有1次(循環(huán)變量先后取值5和12,循環(huán)執(zhí)行1次之后,循環(huán)變量值為12,超過終值10,循環(huán)結束)。【例9.19】在立即窗口中顯示有(*)組成的5*5的正方形。Sub Procedure5( ) 輸出5*5的正方形 Const MAX=5 定義常量 Dim Str As String Str= For n=1 to Max Str=Str+* Next nFor n=1 to Max Debug.print Str Next nEnd Sub(6)WhileWend循環(huán)語句 WhileWend循環(huán)與Do WhileLoop結構類似,但不能在WhileWend循環(huán)中使用Ex
44、it Do語句。 WhileWend循環(huán)語句格式為: While條件表達式 Wend9.5過程調用 函數(shù)調用函數(shù)名稱(參數(shù)表) 例題9.20計算圓面積,使用函數(shù)調用方法 過程調用Call 過程名稱(參數(shù)表) 參數(shù)傳遞ByVal傳值方式,單向ByRef傳址方式,雙向舉例子說明!【例9.20】在窗體對象中,使用函數(shù)過程實現(xiàn)任意半徑的圓面積計算,當輸入圓半徑值時,計算并顯示圓面積。在窗體中添加以下控件:創(chuàng)建兩個標簽控件,其標題分別設為:半徑和圓面積。創(chuàng)建兩個文本框控件,其名字分別設為:SinR和SinS創(chuàng)建一個命令按鈕,其標題設為“計算”,在其Click事件過程中,加入如下代碼語句:Private Sub comman
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 付國外傭金合同范本
- 化妝品廣告合同范本
- 豐田汽車合同范本
- 光伏運營合作合同范本
- 農(nóng)戶辣椒種植合同范本
- 優(yōu)惠倉庫租賃服務合同范本
- 冷凍海鮮銷售合同范本
- 農(nóng)村購買墳地合同范本
- 中石油員工業(yè)績合同范本
- 會務定金合同范本
- 央企最新版員工手冊vvv
- 2019安徽中考語文真題含答案
- 新生兒科出科考試試卷試題
- 信息化教學設計教案大學語文
- FSC-COC培訓學習
- 植物的營養(yǎng)器官:根、莖、葉匯總
- 會議、匯報材料排版格式
- 華為公司產(chǎn)品線獎金分配暫行辦法
- 兒童能力評估量表(PEDI拍迪)
- 道岔及交叉渡線施工方案
- 第三套廣播體操《七彩陽光》分解動作講解(共4頁)
評論
0/150
提交評論