第八章 模塊 - 副本_第1頁(yè)
第八章 模塊 - 副本_第2頁(yè)
第八章 模塊 - 副本_第3頁(yè)
第八章 模塊 - 副本_第4頁(yè)
第八章 模塊 - 副本_第5頁(yè)
已閱讀5頁(yè),還剩78頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第八章模塊8.1模塊的基本概念模塊是Access的一種基本對(duì)象。由一種叫VBA(VisualBasicforApplication)的語(yǔ)言來(lái)實(shí)現(xiàn)。VBA是微軟公司將VisualBasic的一部分代碼結(jié)合到Office中而形成的,模塊里面的內(nèi)容是程序。一、模塊的定義模塊分為類(lèi)模塊和標(biāo)準(zhǔn)模塊二、模塊的分類(lèi)主要是窗體模塊和報(bào)表模塊窗體模塊和報(bào)表模塊的事件過(guò)程只能作用于響應(yīng)的窗體和報(bào)表,不能被其他類(lèi)所使用(一)類(lèi)模塊(二)標(biāo)準(zhǔn)模塊存放在整個(gè)數(shù)據(jù)庫(kù)中可用對(duì)象使用的公共模塊(函數(shù)和過(guò)程)。可以被其它模塊的程序調(diào)用。(和“模塊”掛鉤)(主要和“窗體”掛鉤)三、宏和模塊宏是系統(tǒng)設(shè)置的一系列操作,如“打開(kāi)窗體”、“打開(kāi)報(bào)表”、“關(guān)閉表格”等,對(duì)表、查詢(xún)、窗體、報(bào)表等能完成一些簡(jiǎn)單的操作。模塊是用戶(hù)自己設(shè)定的程序,可以完成所有宏設(shè)置的內(nèi)容,并且自由度更高宏:簡(jiǎn)單、操作方便,不用寫(xiě)代碼;但運(yùn)行速度慢,自由度不高,只能選擇系統(tǒng)提供的操作(Access特有的)模塊:比較復(fù)雜,需要具有一些程序編寫(xiě)基礎(chǔ),寫(xiě)代碼;但運(yùn)行速度快,自由度很高,功能比宏強(qiáng)大得多(基本遵從VB的代碼規(guī)則)四、將宏轉(zhuǎn)換為模塊每個(gè)宏都可轉(zhuǎn)換成模塊,但模塊不一定能轉(zhuǎn)換成宏。8.2創(chuàng)建模塊一、在模塊中加入過(guò)程:過(guò)程是模塊的組成單元

1、進(jìn)入類(lèi)模塊編輯區(qū):“代碼”工具按鈕或者窗體和報(bào)表的事件過(guò)程。

2、進(jìn)入標(biāo)準(zhǔn)模塊編輯區(qū):“模塊”—“新建”

Sub過(guò)程和function函數(shù)過(guò)程格式:

Sub過(guò)程名Function函數(shù)名

[程序代碼][程序代碼] EndSubEndFunction二、在模塊中執(zhí)行宏(4套綜合3)格式:DoCmd.RunMacro“宏名”聲明子過(guò)程函數(shù)過(guò)程例:8.3.1面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念(oop)1.集合(類(lèi))和對(duì)象集合:含有相同屬性的事物的總稱(chēng)成為集合,比如所有的學(xué)生就構(gòu)成一個(gè)集合(類(lèi))。如命令按鈕類(lèi)(Command)。對(duì)象:集合中的某一個(gè)實(shí)體,例如學(xué)生集合中的某一個(gè)學(xué)生就是一個(gè)對(duì)象。如Command18.3VBA程序設(shè)計(jì)基礎(chǔ)2.屬性和方法:描述對(duì)象的性質(zhì)和行為引用方式:對(duì)象.屬性或者對(duì)象.方法4.事件和事件過(guò)程事件:Access窗體或者報(bào)表及其上控件等對(duì)象可以“辨識(shí)”的動(dòng)作,如單擊click、雙擊、某一個(gè)按鍵等,事件過(guò)程:為某個(gè)事件編寫(xiě)事件(VBA代碼)過(guò)程,來(lái)完成指定的動(dòng)作。

(練習(xí)4套綜合5、8套綜合5)3.特殊對(duì)象:DoCmd,它是專(zhuān)門(mén)通過(guò)調(diào)用包含在內(nèi)部的方法來(lái)實(shí)現(xiàn)VBA編程中對(duì)Access其它對(duì)象的操作。

3.x.打開(kāi)和關(guān)閉窗體(報(bào)表)1).打開(kāi)窗體:DoCmd.OpenForms“窗體名稱(chēng)”,,,,2).關(guān)閉窗體:DoCmd.Close

[acForm,“窗體名稱(chēng)”](33套綜合4)3).打開(kāi)報(bào)表:DoCmd.OpenReport“報(bào)表名”[,視圖][,查詢(xún)名稱(chēng)][,條件]例:

doCmd.OpenReport“remp”acViewPreview(15套綜合4)8.3.2VBA編程環(huán)境:VBA界面(VBE)一.進(jìn)入VBE編輯環(huán)境類(lèi)模塊:

1)定位窗體或者報(bào)表,單擊工具欄“代碼”按鈕;2)或者通過(guò)窗體、報(bào)表或者控件“屬性”窗口中“事件”選項(xiàng)卡的“事件過(guò)程”項(xiàng)進(jìn)入。標(biāo)準(zhǔn)模塊:

1)已有模塊,在數(shù)據(jù)庫(kù)窗體選擇“模塊”對(duì)象,雙擊要查看的模塊;

2)新建模塊,在數(shù)據(jù)庫(kù)窗體選擇“模塊”對(duì)象,單擊“新建”按鈕;

3)在數(shù)據(jù)庫(kù)對(duì)象窗體中,單擊“工具”菜單——“宏”——“Visualbasic編輯器”。8.3.2VBA編程環(huán)境:VBA界面一.VBE窗口介紹工程窗口屬性窗口代碼窗口標(biāo)準(zhǔn)工具條8.3.2VBA編程環(huán)境:VBA界面二.VBE環(huán)境中編寫(xiě)代碼對(duì)象瀏覽器快速訪(fǎng)問(wèn)子過(guò)程自動(dòng)顯示提示信息F1幫助8.3.2VBA編程環(huán)境:VBA界面四.VBE環(huán)境中語(yǔ)句(代碼)書(shū)寫(xiě)原則

1.語(yǔ)句書(shū)寫(xiě)規(guī)定:一行一句多句寫(xiě)在一行時(shí),用冒號(hào)(:)分隔

2.注釋語(yǔ)句:rem或單引號(hào)(‘)打頭的語(yǔ)句,默認(rèn)是綠色一、標(biāo)準(zhǔn)數(shù)據(jù)類(lèi)型VBA提供了多種數(shù)據(jù)類(lèi)型的支持,這樣也是為了大家進(jìn)行編程提供方便。各種數(shù)據(jù)類(lèi)型所占的存儲(chǔ)空間、所表示數(shù)據(jù)范圍大小、以及所支持的數(shù)據(jù)運(yùn)算不同。數(shù)據(jù)類(lèi)型可以分為數(shù)值型、布爾型、日期型、字符型、對(duì)象型、變體型和用戶(hù)自定義的數(shù)據(jù)類(lèi)型。8.3.3VBA編程基礎(chǔ)

——常量、變量、運(yùn)算符和表達(dá)式一、標(biāo)準(zhǔn)數(shù)據(jù)類(lèi)型1、數(shù)值型2、布爾型:True和False3、日期型:#2011-12-07#4、字符型5、變體型和用戶(hù)自定義的數(shù)據(jù)類(lèi)型。8.3.3VBA編程基礎(chǔ)

——常量、變量、運(yùn)算符和表達(dá)式1.標(biāo)準(zhǔn)數(shù)據(jù)類(lèi)型-數(shù)值型VBA中數(shù)值型包括字節(jié)、整型、長(zhǎng)整型、單精度、雙精度和貨幣等。數(shù)據(jù)的存儲(chǔ)從8位到64位不等。數(shù)據(jù)支持加、減、乘、除等運(yùn)算。貨幣類(lèi)型的數(shù)據(jù)保持小數(shù)點(diǎn)左邊15位數(shù)字,右邊4位數(shù)字,以滿(mǎn)足精度的需要。整型長(zhǎng)整型單精度雙精度貨幣integerlongsingledoublecurrency標(biāo)識(shí)符1.標(biāo)準(zhǔn)數(shù)據(jù)類(lèi)型-字符型字符前后有”號(hào),如”男”or“女”標(biāo)識(shí)符:String1.標(biāo)準(zhǔn)數(shù)據(jù)類(lèi)型-布爾型布爾數(shù)據(jù)類(lèi)型以16位數(shù)字形式存儲(chǔ)。布爾數(shù)據(jù)類(lèi)型只有True和False兩個(gè)值。布爾數(shù)據(jù)支持邏輯與、或、非等運(yùn)算。當(dāng)其他的數(shù)值類(lèi)型轉(zhuǎn)化為布爾型時(shí),0轉(zhuǎn)化為False,其他轉(zhuǎn)化為T(mén)rue。當(dāng)布爾型轉(zhuǎn)化為其他的數(shù)值類(lèi)型時(shí),F(xiàn)alse轉(zhuǎn)化為

0,True轉(zhuǎn)化為1。標(biāo)識(shí)符:Boolean1.標(biāo)準(zhǔn)數(shù)據(jù)類(lèi)型-日期型日期數(shù)據(jù)前后有#號(hào),如#2005-1-1#或#2005/1/1#標(biāo)識(shí)符:Date1.標(biāo)準(zhǔn)數(shù)據(jù)類(lèi)型-變體型變體數(shù)據(jù)類(lèi)型所代表的數(shù)據(jù)類(lèi)型是不確定的,可以成為任何類(lèi)型的變量。變體的數(shù)據(jù)類(lèi)型的變量可以存儲(chǔ)特殊值,如:Empty,Error,Nothing,Null等。變體數(shù)據(jù)類(lèi)型中的數(shù)值類(lèi)型可以代表任何的整型和實(shí)型數(shù)。標(biāo)識(shí)符:Variant2.用戶(hù)自定義數(shù)據(jù)類(lèi)型前面所介紹的數(shù)據(jù)類(lèi)型都是原子型的數(shù)據(jù)類(lèi)型,即不可以再分割的數(shù)據(jù)類(lèi)型,使用Type語(yǔ)句可以定義任何結(jié)構(gòu)型數(shù)據(jù)類(lèi)型,如:

Typeperson NameAsString

Birthdate

AsDate SexAsInteger

EndType

這樣就定義了“人”這種數(shù)據(jù)類(lèi)型,它包括“姓名”、“生日”、“性別”三個(gè)數(shù)據(jù)域。二、數(shù)據(jù)庫(kù)對(duì)象(略)數(shù)據(jù)類(lèi)型對(duì)象庫(kù)對(duì)應(yīng)的數(shù)據(jù)庫(kù)對(duì)象類(lèi)型數(shù)據(jù)庫(kù),database使用dao時(shí)用jet數(shù)據(jù)庫(kù)引擎打開(kāi)的數(shù)據(jù)連接,connectionAdo取代了dao的數(shù)據(jù)庫(kù)連接對(duì)象窗體,form窗體,包括子窗體報(bào)表,report報(bào)表,包括子報(bào)表控件,control窗體和報(bào)表上的控件查詢(xún),querydef查詢(xún)表,tabledef數(shù)據(jù)表表8.3VBA支持的數(shù)據(jù)庫(kù)對(duì)象8.3.4變量與常量直觀(guān)的數(shù)據(jù),如123,”男”,#2007-1-1#二、變量一、常量1、值是會(huì)發(fā)生改變的數(shù)據(jù)。如x,y,count,n2、變量的命名規(guī)則:字母打頭;不區(qū)分大小寫(xiě)只能含有字母,數(shù)字或下劃線(xiàn)系統(tǒng)保留關(guān)鍵字不能使用練習(xí):判斷以下變量名是否合法

A&a

abAdDeda_33h_3integer三、變量的聲明:注意變量聲明后會(huì)有一個(gè)默認(rèn)值1).顯式聲明:Dim變量名as類(lèi)型例如:dimxasintegerdimsasstring,snasboolean2).隱含聲明(未指明類(lèi)型,即為變體型)例如:dima,bdimcountdimnx=501.變量聲明Optionexplicit有了這條語(yǔ)句之后,變量必須顯式聲明2.強(qiáng)制聲明四、變量的作用范圍1局部范圍local:在一個(gè)過(guò)程內(nèi)定義并使用2模塊范圍module:在一個(gè)模塊范圍內(nèi)定義并使用3全局范圍public:在標(biāo)準(zhǔn)模塊開(kāi)頭定義,在所有模塊中都可使用。練習(xí):在A(yíng)ccess中,如果變量定義在模塊的過(guò)程內(nèi)部,當(dāng)過(guò)程代碼執(zhí)行時(shí)才可見(jiàn),則這種變量的作用域?yàn)?/p>

A)程序范圍B)全局范圍

C)模塊范圍D)局部范圍五、數(shù)據(jù)庫(kù)對(duì)象變量(28.3,41.4)數(shù)據(jù)庫(kù)中包括的所有對(duì)象(尤其是報(bào)表和窗體以及他們上面的控件(文本框等))及其屬性,都可被看作是一個(gè)變量。

窗體或報(bào)表對(duì)象引用格式如下:

forms!窗體名稱(chēng)!控件名稱(chēng)[.屬性名稱(chēng)]reports!報(bào)表名稱(chēng)!控件名稱(chēng)[.屬性名稱(chēng)]如:查詢(xún)的條件中引用窗體fmp上控件tss的值

[forms]![fmp]![tss]六、數(shù)組數(shù)組是一群有連續(xù)編號(hào)(下標(biāo))的變量。定義方式為:dim數(shù)組名(個(gè)數(shù))as類(lèi)型例:dimarray1(5)asintegerarray1(1)=5array1(2)=8……例:dima(3to9)asstring注意:數(shù)組的外觀(guān)和函數(shù)有些相似但完全是兩種不同的東 西,數(shù)組是變量的集合,函數(shù)是一種運(yùn)算?;径x格式一維數(shù)組:Dim數(shù)組名(個(gè)數(shù))as變量類(lèi)型Dima(5)asinteger共6個(gè)整型變量a(0)-a(5)二維:Dim數(shù)組名(行數(shù),列數(shù))as變量類(lèi)型Dima(2,3)asinteger

共3行4列共12個(gè)整型變量a(0,0)-a(2,3)說(shuō)明:1、定義后各數(shù)組元素默認(rèn)值為0或空字符串

2、Optionbasen命令Optionbase0:下標(biāo)從0開(kāi)始Optionbase1:下標(biāo)從1開(kāi)始第二種定義格式:dim數(shù)組名(下界to上界)DimA(2to6)asinteger表示有A(2)—A(6)共5個(gè)變量Dimarr(3to6,2to4)asinteger表示共12個(gè)變量a(0to5)等同于A(yíng)(5)這種格式的特點(diǎn)是:下標(biāo)并不一定從0或1開(kāi)始,可以是整型范圍內(nèi)的任何數(shù)開(kāi)始。比如b(-2to4)七、符號(hào)常量對(duì)于經(jīng)常使用的固定常量,如3.1415926,為了書(shū)寫(xiě)方便,我們用符號(hào)代替它,但必須要先使用const說(shuō)明

Constpi=3.1415926注意pi是常量,不能對(duì)pi再次賦值8.3.5常用標(biāo)準(zhǔn)函數(shù)數(shù)學(xué)函數(shù):abs()、int()、fix()、sin()、cos()字符串函數(shù):instr()、left()、right()、mid()日期/時(shí)間函數(shù):date()、time()、now()、year() month()、day()、weekday()類(lèi)型轉(zhuǎn)換函數(shù):asc()、chr()、str()、val()常用的數(shù)學(xué)函數(shù)見(jiàn)表3-8所示

Abs(N)int(N)fix(N)round(N)Sqr(N)Rnd(N)

說(shuō)明:

(1)注意int與fix和round的區(qū)別

Fix(N)為截?cái)嗳≌慈サ粜?shù)后的數(shù)。

Int(N)不大于N的最大整數(shù)。

Round(N)為四舍五入。

N>0與int(N)相同,當(dāng)N<0時(shí),int(N)

與fix(N)-1相等。 例如:Fix(9.59)=9,Int(9.59)=9 Fix(-9.59)=-9,Int(-9.59)=-10(2)Rnd函數(shù)返回0~1(包括0和不包括1)之間的雙精度隨機(jī)數(shù)。若要產(chǎn)生1-100的隨機(jī)整數(shù):Int(Rnd*100)+1一.算術(shù)函數(shù)例如:InStr(2,“ABCDEFGEF”,“EF”) 5(第一次出現(xiàn)的位置)Len("Thisisabook!") 15Left("ABCDEFG",3)“ABC”Right("ABCDEFG",3) “EFG”Mid("ABCDEFG",2,3)“BCD”Space(5)“”Ucase("ABcdEfG")“ABCDEFG”Lcase("ABcdEfG")“abcdefg”Ltrim()Rtrim()Trim()

二.字符串操作函數(shù)三.日期、時(shí)間函數(shù)1.求系統(tǒng)當(dāng)前日期,時(shí)間,日期和時(shí)間函數(shù)

Date()Time()Now()2.截取某日期中的年份,月份,日期號(hào)函數(shù)

Year()Month()Day()weekday()3截取某時(shí)間中的小時(shí),分鐘,秒

Hour()Minute()Second()三.日期、時(shí)間函數(shù)4.日期/時(shí)間增加或減少一個(gè)時(shí)間間隔

dateadd(間隔類(lèi)型,間隔值,表達(dá)式)5.計(jì)算兩個(gè)日期的間隔值函數(shù)

datediff(間隔類(lèi)型,日期1,日期2)6.截取日期中指定部分值

datepart(間隔類(lèi)型,日期)7.返回包含指定年月日的日期函數(shù)

dateserial(年,月,日)四.轉(zhuǎn)換函數(shù)說(shuō)明:(1)Asc("Abcd")

值為:65(只取首字母的Ascii值)

(2)chr(65)值為:“A”

(3)str(123)值為:“123”

(4)val(“123”)值為:123

(5)datevalue(“3,29,2005”)值為:#2005-3-29#

注意:待轉(zhuǎn)換的字符串一定要是日期形的字符(6)nz():專(zhuān)門(mén)把null值轉(zhuǎn)換成其它值.8.3.6運(yùn)算符和表達(dá)式

1算術(shù)運(yùn)算符:+-*/\^Mod2關(guān)系運(yùn)算符:=<><=>=<>3邏輯運(yùn)算符:ANDORNOT4連接運(yùn)算符:&+一、運(yùn)算符二、表達(dá)式和優(yōu)先級(jí)將常量和變量用各種運(yùn)算符(包括函數(shù))連接在一起構(gòu)成的式子就叫表達(dá)式。優(yōu)先級(jí)高低高低算術(shù)運(yùn)算符連接運(yùn)算符關(guān)系運(yùn)算符邏輯運(yùn)算符^&+=<><><=>=NOT負(fù)數(shù)(-)AND*和

/OR整數(shù)除法(\)Mod+和-8.4VBA流程控制語(yǔ)句1、VBA程序語(yǔ)句按照功能不同分為:聲明語(yǔ)句:用于給變量、常量或者過(guò)程定義命名。執(zhí)行語(yǔ)句:用于執(zhí)行賦值操作、調(diào)用過(guò)程、實(shí)現(xiàn)各種流程控制。2、執(zhí)行語(yǔ)句3種結(jié)構(gòu):順序結(jié)構(gòu):按照語(yǔ)句的順序順次執(zhí)行。分支(選擇)結(jié)構(gòu):根據(jù)條件選擇執(zhí)行。循環(huán)結(jié)構(gòu):重復(fù)執(zhí)行某一段程序。8.4VBA程序流程控制語(yǔ)句執(zhí)行語(yǔ)句3種結(jié)構(gòu):順序結(jié)構(gòu):按照語(yǔ)句的順序順次執(zhí)行。分支結(jié)構(gòu):又稱(chēng)選擇結(jié)構(gòu),根據(jù)條件選擇執(zhí)行。循環(huán)結(jié)構(gòu):重復(fù)執(zhí)行某一段程序。語(yǔ)句1語(yǔ)句2語(yǔ)句3……N條命令N條命令1if條件語(yǔ)句條件結(jié)構(gòu)結(jié)束endifN條命令條件語(yǔ)句循環(huán)結(jié)束8.4.1賦值語(yǔ)句1、格式:變量名=表達(dá)式例如:dimaasinteger,basstringa=30b=“access程序設(shè)計(jì)”

forms!fmp!lab1.caption=“你好”

2、注意:賦值不同于關(guān)系運(yùn)算的”=”例:下列能夠交換變量X和Y值的程序段是(筆試2010.9選擇30題)

A)Y=X:X=Y(jié)B)Z=X:Y=Z:X=Y(jié)C)Z=X:X=Y(jié):Y=ZD)Z=X:W=Y(jié):Y=Z:X=Y(jié)在窗體的代碼上引用窗體或控件屬性時(shí),格式為:Form.屬性=表達(dá)式或控件名稱(chēng).屬性=表達(dá)式8.4.2條件語(yǔ)句根據(jù)不同的條件,選擇不同的程序語(yǔ)句來(lái)執(zhí)行。

1、單分支結(jié)構(gòu)格式1:If〈條件表達(dá)式〉Then〈語(yǔ)句序列〉格式2:If〈條件表達(dá)式〉Then〈語(yǔ)句序列〉

EndIf條件語(yǔ)句塊NY例:如果X大于0,則Y=格式二:

Ifx>0Then

Y=sqr(x)EndIf格式一:

Ifx>0ThenY=sqr(x)2、雙分支結(jié)構(gòu)格式1:If〈條件表達(dá)式〉Then〈語(yǔ)句序列1〉Else〈語(yǔ)句序列2〉格式2:If〈條件表達(dá)式〉Then〈語(yǔ)句序列1〉

Else

〈語(yǔ)句序列2〉

EndIf條件語(yǔ)句序列1語(yǔ)句序列2NY例:根據(jù)X的值,求Y的值格式二:

Ifx>0Then

Y=sqr(x)ElseY=abs(x)EndIf格式一:

Ifx>0ThenY=sqr(x)ElseY=abs(x)格式1:If〈條件表達(dá)式1〉Then

〈語(yǔ)句序列1〉

Elseif〈條件表達(dá)式2〉Then〈語(yǔ)句序列2〉……

Else〈語(yǔ)句序列3〉

EndIf3、多分支結(jié)構(gòu)條件1語(yǔ)句塊1條件2T…條件nTT語(yǔ)句塊2語(yǔ)句塊n語(yǔ)句塊n+1FFF例:根據(jù)X的值,求Y的值Ifx>0Then

y=sqr(x)Elseif

x=0Then

y=0Elsey=abs(x)EndIf格式2:If〈條件表達(dá)式1〉Then

〈語(yǔ)句序列1〉

Else

If〈條件表達(dá)式2〉Then〈語(yǔ)句序列2〉

Else〈語(yǔ)句序列3〉

Endif

EndIfIfx>0Then

y=sqr(x)Else

If

x=0Then

y=0

Elsey=abs(x)

EndIfEndIf4、多分支結(jié)構(gòu)

格式:SelectCase<表達(dá)式>

Case<表達(dá)式1> <語(yǔ)句系列1>

Case<表達(dá)式2To表達(dá)式3> <語(yǔ)句系列2>

CaseIs<關(guān)系運(yùn)算符表達(dá)式4> <語(yǔ)句系列3>

CaseElse

<語(yǔ)句系列4>EndSelect程序:DimscoreasintegerDimstrasstringSelectcasescore case90to100

str=“優(yōu)秀”

case60to80

str=“合格”

caseIs<60

str=“不合格”

caseelse

str=“曠考”Endselect5.條件函數(shù)(1)IIf語(yǔ)句語(yǔ)句結(jié)構(gòu):IIf(條件式,表達(dá)式1,表達(dá)式2)例句:Max=IIf(a>b,a,b)例句分析:當(dāng)a>b成立時(shí),取a的值,否則取b的值,將最終結(jié)果賦值給max這個(gè)變量習(xí)題:18.3,25.4,46.4(2)Switch(略)(3)choose(略)6.條件語(yǔ)句綜合實(shí)例例8.9

設(shè)計(jì)一個(gè)登陸窗體,用戶(hù)名和密碼為空給出提示,正確的時(shí)候給出“歡迎使用”信息。8.4.3循環(huán)語(yǔ)句循環(huán)結(jié)構(gòu)是指反復(fù)執(zhí)行某段程序的結(jié)構(gòu)。

1.For…Next格式:For

循環(huán)變量=初值To

終值[Step步長(zhǎng)]

循環(huán)體[條件語(yǔ)句系列

ExitFor結(jié)束條件語(yǔ)句系列]Next[循環(huán)變量]循環(huán)變量<=終值T循環(huán)體FNEXT的下一條語(yǔ)句循環(huán)變量=初值循環(huán)變量=循環(huán)變量+步長(zhǎng)例:計(jì)算1+2+3+……+99+100的和程序段:Dimiasinteger,sasintegerS=0Fori=1to100step1s=s+iNexti執(zhí)行說(shuō)明:①i=1②s=s+I③nextI,將i增加一步長(zhǎng)值,即i=i+step,轉(zhuǎn)到for④判斷i是否超過(guò)初值和終值.若在范圍內(nèi),執(zhí)行⑤

,否則結(jié)束循環(huán)。⑤重復(fù)②~④For…Next說(shuō)明:省略步長(zhǎng)時(shí)默認(rèn)為1,上題可改為左邊程序步長(zhǎng)為0時(shí),進(jìn)入死循環(huán)或一次也不執(zhí)行循環(huán)程序段:Dimiasinteger,sasintegerS=0Fori=1to100s=s+1Nexti運(yùn)行下列程序段,結(jié)果是Form=10to1step0 k=k+3NextmA)形成死循環(huán) B)循環(huán)體不執(zhí)行即結(jié)束循環(huán)C)出現(xiàn)語(yǔ)法錯(cuò)誤 D)循環(huán)體執(zhí)行一次后結(jié)束循環(huán)For…Next說(shuō)明:Exitfor強(qiáng)制退出循環(huán)程序段:Dimiasinteger,sasintegerS=0Fori=1to100ifi=50thenexitfors=s+iNextI說(shuō)明:左邊循環(huán)結(jié)構(gòu),當(dāng)循環(huán)至i=50時(shí),強(qiáng)制退出,因此相當(dāng)于是1+2+3+……..?例:求5000以?xún)?nèi)能被3整除的數(shù)的和Dimsumasinteger,xasintegerForx=0to5000ifxmod3=0thensum=sum+x

endifNextxDimsumasinteger,xasintegerForx=3to5000step3sum=sum+xNextx2.DoWhile…Loop語(yǔ)句條件表達(dá)式T循環(huán)體F說(shuō)明:當(dāng)條件為真時(shí),執(zhí)行循環(huán)體,直到條件為假或執(zhí)行到exitdo時(shí)退出循環(huán)。格式:DoWhile<條件表達(dá)式>

循環(huán)體[條件語(yǔ)句系列

ExitDo結(jié)束條件語(yǔ)句系列]Loop例:計(jì)算1+2+3+……+99+100的和s=0i=1DoWhilei<=100s=s+ii=i+1Loop3.DoUntil…Loop語(yǔ)句說(shuō)明:當(dāng)條件為假時(shí),執(zhí)行循環(huán)體,直到條件為真或執(zhí)行到exitdo時(shí)退出循環(huán)。格式:DoUntil<條件表達(dá)式>

循環(huán)體[條件語(yǔ)句系列

ExitDo結(jié)束條件語(yǔ)句系列]Loop條件表達(dá)式T循環(huán)體F例:計(jì)算1+2+3+……+99+100的和s=0i=1DoUntili>100s=s+ii=i+1Loop4.Do…LoopWhile語(yǔ)句說(shuō)明:先執(zhí)行循環(huán)體,再判斷條件,當(dāng)條件為真時(shí),重復(fù)執(zhí)行循環(huán)體,直到條件為假或執(zhí)行到exitdo時(shí)退出循環(huán)。格式:Do循環(huán)體[條件語(yǔ)句系列

ExitDo結(jié)束條件語(yǔ)句系列]LoopWhile<條件表達(dá)式>條件表達(dá)式T循環(huán)體F例:計(jì)算1+2+3+……+99+100的和s=0i=1Dos=s+ii=i+1LoopWhilei<=1005.Do…LoopUntil語(yǔ)句說(shuō)明:先執(zhí)行循環(huán)體,再判斷條件,當(dāng)條件為假時(shí),重復(fù)執(zhí)行循環(huán)體,直到條件為真或執(zhí)行到exitdo時(shí)退出循環(huán)。格式:Do循環(huán)體[條件語(yǔ)句系列

ExitDo結(jié)束條件語(yǔ)句系列]LoopUntil<條件表達(dá)式>條件表達(dá)式F循環(huán)體T例:計(jì)算1+2+3+……+99+100的和s=0i=1Dos=s+ii=i+1LoopUntili>100前兩種格式區(qū)別:條件放在循環(huán)體前面,則先判斷條件,再執(zhí)行循環(huán)體。條件放在循環(huán)體后面,則先執(zhí)行一次循環(huán)后,再判斷條件,根據(jù)條件決定是否執(zhí)行下一次循環(huán)。8.4.4標(biāo)號(hào)和GoTo語(yǔ)句Goto

標(biāo)號(hào)語(yǔ)句

功能:無(wú)條件轉(zhuǎn)移到標(biāo)號(hào)所指示的語(yǔ)句執(zhí)行例如:GotoLabel

注意:盡量避免使用此語(yǔ)句。8.5過(guò)程調(diào)用和參數(shù)傳遞一、過(guò)程調(diào)用(自己寫(xiě)函數(shù))1、子過(guò)程定義調(diào)用⑴定義格式:

[Public/Private][Static]Sub子過(guò)程名([形參])[As數(shù)據(jù)類(lèi)型] [<子過(guò)程語(yǔ)句>] [Exitsub] [<子過(guò)程語(yǔ)句>]

EndSub例:編寫(xiě)一個(gè)打開(kāi)指定窗體的子過(guò)程⑵調(diào)用格式:

Call子過(guò)程名([實(shí)參])

子過(guò)程名[<實(shí)參>]例:調(diào)用黃色框中的過(guò)程2、函數(shù)過(guò)程定義調(diào)用⑴定義格式:

[Public/Private][Static]Function函數(shù)過(guò)程名([形參])[As數(shù)據(jù)類(lèi)型] [<函數(shù)過(guò)程語(yǔ)句>] [函數(shù)過(guò)程名=<表達(dá)式>] [ExitFunction] [<函數(shù)過(guò)程語(yǔ)句>] [函數(shù)過(guò)程名=<表達(dá)式>]

EndFunction例:編寫(xiě)一個(gè)求解圓面積的函數(shù)過(guò)程area。⑵調(diào)用格式:函數(shù)過(guò)程名(<實(shí)參>)例:紅框調(diào)用籃框中的函數(shù)area()PrivateSubcommand1_click()DimRAsSingleR=7

warea=area(R)

Debug.PrintR,wareaEndSubPublicFunctionarea(RAsSingle)AsSingleIfR<0Then

MsgBox"半價(jià)不能小于零!",vbCritical,"警告"ExitFunctionEndIfarea=3.14*R*REndFunction二、參數(shù)傳遞1、形參的使用:[ByVal/ByRef]形參名

[()][As類(lèi)型]

說(shuō)明:①ByVal:按值傳遞(單向)②ByRef:按地址傳遞(雙向)調(diào)用過(guò)程:實(shí)參傳值(或傳地址)給形參形式參數(shù)與實(shí)際參數(shù)(1)PublicFunctionFruit(ByValxasinteger,ByRefy$)SelectcasexCase1

apple(y)EndSelectEndFunctionPrivateSubForm_Load()Fruit(1,“apple”)EndSubPublicFunctionapple(y$)PrintyEndFunction實(shí)參形參實(shí)際參數(shù)(實(shí)參):調(diào)用函數(shù)時(shí)的參數(shù)形式參數(shù)(形參):函數(shù)定義時(shí)的參數(shù)形式參數(shù)與實(shí)際參數(shù)(2)傳遞參數(shù)1)按值傳遞參數(shù)2)按地址傳遞參數(shù)參數(shù)前加ByVal1)形參變量名可以和實(shí)參相同也可以不同2)默認(rèn)為按地址傳遞傳輸參數(shù)前加ByRef實(shí)參形參實(shí)參(形參)注意:真題(筆試2010.9選擇31題):窗體中有命令按鈕Command1,事件過(guò)程如下:PublicFunctionf(xASInteger)AsInteger

DimyAsInteger

x=20

y=2

f=x*yEndFunctionPrivateSubCommandl_Click()

DimyAsInteger

StaticxAsInteger

x=10

y=5

y=f(x)

Debug.Printx,yEndSub運(yùn)行程序,單擊命令按鈕,則立即窗口中顯示的內(nèi)容是A)10

5B)10

40C)20

5D)20

40錯(cuò)誤診斷靜態(tài)變量9.1常用操作方法一.打開(kāi)關(guān)閉窗口(P254)二.InputBox三.MsgBox(返回值=)MsgBox“提示”,“顯示類(lèi)型”,“標(biāo)題”返回值=InputBox“提示”,“標(biāo)題”,“默認(rèn)值”打開(kāi)窗體:DoCmd.OpenForms“窗體名稱(chēng)”,,,,關(guān)閉窗體:DoCmd.Close

acForm,“窗體名稱(chēng)”顯示類(lèi)型:

vbInformation、vbCritical、vbOkOnly、vbOkCancel、vbRetryCancel

vbQuestion、vbAbortRetryIgnore

、vbYesNoCancel常用操作方法輸入框(InputBox)(15.4):1.功能:用于在一個(gè)對(duì)話(huà)框中顯示提示,等待用戶(hù)輸入正文并且按下按鈕,然后返回包含文本框內(nèi)容的數(shù)據(jù)信息。2.格式:InputBox(提示字符串,[標(biāo)題],…)inputbox使用格式舉例:a=inputbox(“請(qǐng)輸入一個(gè)整數(shù)”

)a=inputbox(“請(qǐng)輸入一個(gè)整數(shù)”,”整數(shù)輸入”)a=inputbox(“請(qǐng)輸入一個(gè)整數(shù)”,”整數(shù)輸入”,10)注意:輸入的數(shù)據(jù)即是函數(shù)的返回值,默認(rèn)為字符型即debug.print

isnumeric(a)結(jié)果為false消息框(MsgBox)(14.5)1.功能:用于在一個(gè)對(duì)話(huà)框中顯示消息,等待用戶(hù)按下按鈕,然后返回一個(gè)整型值告訴用戶(hù)單擊

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論