access8VBA編程入門語法市公開課金獎(jiǎng)市賽課一等獎(jiǎng)?wù)n件_第1頁
access8VBA編程入門語法市公開課金獎(jiǎng)市賽課一等獎(jiǎng)?wù)n件_第2頁
access8VBA編程入門語法市公開課金獎(jiǎng)市賽課一等獎(jiǎng)?wù)n件_第3頁
access8VBA編程入門語法市公開課金獎(jiǎng)市賽課一等獎(jiǎng)?wù)n件_第4頁
access8VBA編程入門語法市公開課金獎(jiǎng)市賽課一等獎(jiǎng)?wù)n件_第5頁
已閱讀5頁,還剩85頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第8章VBA編程入門第1頁內(nèi)容提要8-1VBA概念8-2VBA編程基礎(chǔ)8-3VBA慣用語句8-4VBA程序流程控制8-5數(shù)組8-6VBA與宏8-7小結(jié)及練習(xí)第2頁VBA(VisualBasicforApplication)是MicrosoftOffice系列軟件內(nèi)置編程語言,其語法結(jié)構(gòu)與VisualBasic編程語言相互兼容,采取是面向?qū)ο缶幊虣C(jī)制和可視化編程環(huán)境。8-1VBA概述8-1-1VBA介紹第3頁集合和對象VBA中應(yīng)用程序是由許多對象組成,如表、窗體、查詢等。對象是幫助結(jié)構(gòu)應(yīng)用程序元素,以特定方式組織這些對象,就形成了應(yīng)用程序。數(shù)據(jù)庫窗口把可供選擇對象排列在一起,形成不一樣類。8-1-2面向?qū)ο蟪绦蛟O(shè)計(jì)基本概念第4頁對象屬性、事件和方法屬性

屬性描述了對象本身性質(zhì)。其格式為:

對象名.屬性=屬性值事件事件是指能夠發(fā)生在一個(gè)對象上且能夠被該對象所識別動(dòng)作。如:單擊某個(gè)命令按鈕就產(chǎn)生該按鈕“單擊”事件當(dāng)某個(gè)對象發(fā)生某一事件后,就會驅(qū)動(dòng)系統(tǒng)去執(zhí)行預(yù)先編好、與這一事件相對應(yīng)一段程序。第5頁方法方法是系統(tǒng)事先設(shè)計(jì)好,能夠完成一定操作特殊過程,是從屬于對象行為和動(dòng)作。在需要使用時(shí)候能夠直接調(diào)用。其調(diào)用格式為:

對象名.方法名第6頁

Access中除數(shù)據(jù)庫7個(gè)對象外,還提供一個(gè)主要對象:DoCmd對象除窗體、控件SetFocus(取得控制焦點(diǎn))方法外,用得最多得是DoCmd對象一些方法。使用這些方法,能夠在VBA中運(yùn)行Access操作。第7頁打開當(dāng)前數(shù)據(jù)庫中“雇員”窗體

DoCmd.OpenForm"Employees"

在數(shù)據(jù)庫窗口中選擇“雇員”窗體DoCmd.SelectObjectacForm,"

Employees

",True在數(shù)據(jù)庫窗口中關(guān)閉“雇員”窗體

DoCmd.CloseacForm,“Employees”,acSaveYes刪除數(shù)據(jù)庫中“雇員”表

DoCmd.DeleteObject"Employees"

DoCmd對象慣用方法(參考教材P190頁)第8頁例8-1新建一個(gè)窗體并添加兩個(gè)命令按鈕,運(yùn)行窗體后,單擊第一個(gè)按鈕,新式一個(gè)消息框;單擊第二個(gè)按鈕,退出當(dāng)前窗體。(參考教材P191頁)

經(jīng)過此例,體會可視化編程、面向?qū)ο蟆⑹录^程、應(yīng)用方法等基本概念。第9頁進(jìn)入VBE編程環(huán)境VBE窗口組成VBE窗口由工具欄、工程資源管理器窗口、屬性窗口、代碼窗口和馬上窗口組成。在VBE環(huán)境中編寫VBA代碼8-1-3VBA編程環(huán)境第10頁標(biāo)準(zhǔn)工具條視圖MicrosoftAccess按鈕:切換Access窗口插入按鈕:插入模塊或過程運(yùn)行子過程/用戶窗體按鈕:運(yùn)行模塊中程序中止按鈕:中止正在運(yùn)行程序重新設(shè)置按鈕:結(jié)束正在運(yùn)行程序設(shè)置模式按鈕:在設(shè)計(jì)模式和非設(shè)計(jì)模式之間切換工程資源管理器按鈕:用于打開工程資源管理器屬性窗口按鈕:用于打開屬性窗口對象瀏覽器按鈕:用于打開對象瀏覽器MicrosoftAccsee插入模塊運(yùn)行子過程/用戶窗體設(shè)計(jì)模式中止重新設(shè)計(jì)工程資源管理器對象瀏覽器屬性窗口第11頁工程窗口-選擇對象屬性窗口-選擇對象屬性代碼窗口選擇事件VBE編程環(huán)境第12頁8-2-1常量、變量8-2VBA編程基礎(chǔ)常量:在程序運(yùn)行中其存放值不會改變。變量:在程序運(yùn)行中其值能夠改變。VBA使用常量、變量來存放值。用來保留在程序運(yùn)行期間數(shù)據(jù)。第13頁常量

在程序運(yùn)行過程中,其值不會被改變量稱為常量。在VBA中有三類常量:直接常量

如:10,20%,123.0,“AB”,“VBA程序設(shè)計(jì)”等

符號常量系統(tǒng)常量

指VBA系統(tǒng)預(yù)先定義好,用戶能夠直接引用量。如:acForm,acQuery,vbOk,vbRed

第14頁符號常量

在程序中,某個(gè)常量屢次被使用,則能夠使用一個(gè)符號來代替該常量,這么不但在書寫上方便,而且有效地改進(jìn)了程序可讀性和可維護(hù)性。VBA中使用關(guān)鍵字Const

申明符號常量。其格式以下:

Const常量名[類型符號]=常數(shù)表示式如:

ConstPI#=3.1415926第15頁變量是內(nèi)存中暫時(shí)單元,存放在程序執(zhí)行過程中產(chǎn)生中間結(jié)果和最終輸出結(jié)果。

在程序中使用變量,就要給變量定義名稱及類型,即對變量進(jìn)行申明。變量第16頁

變量命名規(guī)則變量名必須以字母或漢字開頭,后可跟字母、漢字、數(shù)字或下劃線組成(不能含有小數(shù)點(diǎn)和空格),長度不超出255個(gè)字符字符串;不能使用VBA中關(guān)鍵字;VBA中不區(qū)分變量名大小寫;變量名最終一個(gè)字符能夠是%、&、!、#、$等表示數(shù)據(jù)類型申明符。說明:常量名命名規(guī)則與變量名命名規(guī)則相同第17頁8-2-2數(shù)據(jù)類型與變量申明在VBA中,數(shù)據(jù)類型用來決定變量能夠保留何種數(shù)據(jù)。VBA支持各種數(shù)據(jù)類型,為用戶編程提供了方便。參考教材P196頁表8-1VBA數(shù)據(jù)類型第18頁

VBA數(shù)據(jù)類型數(shù)據(jù)類型類型申明符存放空間取值范圍整型(Integer)%2-32768~32767長整型(Long)&4-2147483648~2147483647單精度浮點(diǎn)型(Single)!4負(fù)數(shù):-3.402823E38~-1.401298E-45正數(shù):1.401298E-45~3.402823E38雙精度浮點(diǎn)型(Double)#8負(fù)數(shù):-1.79769313486232E308~-4.94065645841247E-324正數(shù):4.94065645841247E-324~1.79769313486232E308貨幣型(Currency)@8-922337203685477.5808~922337203685477.5807日期型(Date)811月1日~9999年12月31日字符型(String)$0字符~65400個(gè)字符字節(jié)型(Byte)10~255邏輯型(Boolean)2True或False對象型(Object)4任何引用對象變體型(Variant)第19頁變量申明用Dim|Static語句顯式申明局部變量格式:Dim變量名[AS類型]或Dim變量名類型符語句中“As類型”子句是可選。假如使用該子句,就能夠定義變量數(shù)據(jù)類型。未使用,默認(rèn)變量類型為變體型(Variant)。比如:DimiAsinteger,s表示申明了一個(gè)名為i整型變量和一個(gè)名為s變體型變量。第20頁關(guān)鍵字Dim或Static區(qū)分:Dim申明:隨過程調(diào)用而分配存貯單元,每次調(diào)用都對變量初始化;過程體結(jié)束,變量內(nèi)容自動(dòng)消失,存放單元釋放。Static申明:Static申明變量,也稱為靜態(tài)變量。靜態(tài)變量在程序運(yùn)行過程中一直保留其值,即每次調(diào)用過程,變量保持原來值。

第21頁隱式申明變量

未進(jìn)行上述申明而直接使用變量,稱變量隱式申明。采取隱式申明變量都是變體型(Variant)。

注意:

VBA中允許不事先申明而直接使用變量,能夠經(jīng)過語句

OptionExplicit,來要求所使用變量必須事先申明,不然VBA會發(fā)出警告信息。第22頁下面是一個(gè)簡單程序,其使用變量a,b,Sum都沒有事先定義。PrivateSubForm_Click()

Sum=0

a=10

b=20Sum=a+bPrint"Sum=";SumEndSub

良好編程習(xí)慣應(yīng)該是“先申明變量,后使用變量”,這么做能夠提升程序效率,同時(shí)也使程序易于調(diào)試。VBA中能夠強(qiáng)制顯式申明,能夠在窗體模塊、標(biāo)準(zhǔn)模塊和類模塊通用申明段中加入語句:OptionExplicit第23頁申明而未賦值變量值為:數(shù)值型變量初始化為0;字符型變量為零長度字符串;變體型變量初始化為Empty。

變量初始化第24頁8-2-3運(yùn)算符和表示式(教材P199頁)運(yùn)算符算術(shù)運(yùn)算符第25頁比如:"123"+"456"結(jié)果"123456"

"123"&"456"結(jié)果"123456"

使用上&與+區(qū)分:比如:"abcdef"&12345結(jié)果為"abcdef12345"

"123"&456結(jié)果為"123456"

"abcdef"+12345結(jié)果為犯錯(cuò)"123"+456結(jié)果為579

連接運(yùn)算符:

&、+(字符串連接)第26頁

將兩個(gè)操作數(shù)進(jìn)行大小比較,結(jié)果為邏輯值。

注意:字符串比較,則按字符ASCII碼值從左到右一一比較,直到出現(xiàn)不一樣字符為止。關(guān)系運(yùn)算符第27頁將操作數(shù)進(jìn)行邏輯運(yùn)算,結(jié)果是邏輯值邏輯運(yùn)算符第28頁組成

由變量、常量、函數(shù)等運(yùn)算對象加上運(yùn)算符、圓括號組成式子。書寫規(guī)則

(1)運(yùn)算符不能相鄰。例a+-b是錯(cuò)誤。(2)乘號不能省略。例x乘以y應(yīng)寫成:x*y。(3)括號必須成對出現(xiàn),均使用圓括號。(4)表示式從左到右在同一基準(zhǔn)上書寫,無高低。運(yùn)算優(yōu)先級

算術(shù)運(yùn)算符>連接運(yùn)算符>關(guān)系運(yùn)算符>邏輯運(yùn)算表示式第29頁例1:用人單位招聘秘書:年紀(jì)小于40歲女性,學(xué)歷??苹虮究疲昙o(jì)<40,性別=“女”,(學(xué)歷=“專科”,學(xué)歷=“本科”)

AndAndOr例2:算術(shù)表示式:正確VBA表示式:3〈=xAndx<=7

錯(cuò)誤VBA表示式:3<=x<=7或3<=xOrx<=7

考慮:若分別寫成:年紀(jì)<40And性別="女"And(學(xué)歷="???And學(xué)歷="本科")年紀(jì)<40Or性別="女"Or(學(xué)歷="???Or學(xué)歷="本科")第30頁

函數(shù)實(shí)際上是系統(tǒng)事先定義好內(nèi)部程序,用來完成特定功效。VBA提供了大量內(nèi)部函數(shù),供用戶在編程時(shí)使用。

函數(shù)調(diào)用形式為:函數(shù)名(參數(shù)表)慣用內(nèi)部函數(shù)

參考教材P201頁表8-5慣用內(nèi)部函數(shù),在馬上窗口練習(xí),體會函數(shù)功效。8-2-4慣用函數(shù)第31頁InputBox函數(shù)InputBox(提醒[,標(biāo)題][,缺省])

其中:提醒:提醒信息;標(biāo)題:對話框標(biāo)題;缺?。狠斎?yún)^(qū)缺省值。

注意:函數(shù)返回值為字符型數(shù)據(jù)。輸入、輸出函數(shù)第32頁使用MsgBox,能夠在對話框中顯示文本信息。格式為:MsgBox(提醒信息[,按鈕數(shù)目和類型][,標(biāo)題])MsgBox函數(shù)或方法(用于顯示輸出信息)MsgBox函數(shù):變量[%]=MsgBox(提醒[,按鈕][,標(biāo)題])MsgBox方法:MsgBox提醒[,按鈕][,標(biāo)題]第33頁8-3VBA慣用語句

VBA代碼不區(qū)分字母大小寫

系統(tǒng)保留字自動(dòng)轉(zhuǎn)換每個(gè)單詞首字母大寫;

語句書寫自由

一行可書寫幾句語句,之間用冒號(:)分隔;一句語句可分若干行書寫,用續(xù)行符將語句分開。8-3-1VBA語句書寫規(guī)則第34頁賦值語句:給變量、常量或?qū)ο髮傩灾付ㄒ粋€(gè)值或表示式。8-3-2VBA慣用語句

格式:[LET]變量名=表示式

作用:將表示式值賦值給變量名。普通用于給變量賦值或?qū)丶O(shè)定屬性值。比如:s=10Text1.Text="歡迎使用VBA"注意:即使賦值號與關(guān)系運(yùn)算符等于號都用“=”表示,VBA會依據(jù)所處位置自動(dòng)判斷是何種意義符號第35頁申明語句:命名和定義常量、變量、數(shù)組以及過程。注釋語句在程序中適當(dāng)位置加上注釋語句有利于程序維護(hù)和閱讀。

格式:Rem注釋內(nèi)容 或用單引號’注釋內(nèi)容第36頁結(jié)構(gòu)化程序設(shè)計(jì)由次序、分支、循環(huán)這3種基本結(jié)構(gòu)所組成。語句組2語句組1TF語句組2條件語句組1

8-4VBA程序流程控制FT條件語句組TF條件語句組第37頁單行If語句格式:If表示式Then語句1[Else語句2]功效:If測試指定條件,假如條件表示式為真(True),則執(zhí)行Then后面語句1,不然執(zhí)行語句2(若Else子句未省略)。分支結(jié)構(gòu)TF語句2條件語句1TF條件語句1第38頁P(yáng)rivateSubp1()DimxAsInteger,yAsIntegerx=InputBox("請輸入x值")

Ifx>=0Theny=2*x+1MsgBox"y:"&yEndSubPrivateSubp1()DimxAsInteger,yAsIntegerx=InputBox(“請輸入x值”)

Ifx>=0Theny=2*x+1Elsey=1MsgBox"y:"&yEndSub依據(jù)輸入x值,觀察y輸出結(jié)果第39頁多行If語句格式:If表示式Then語句組1[Else語句組2]EndIf第40頁多行If語句執(zhí)行過程是:假如“表示式”值為真,則執(zhí)行語句組1;不然執(zhí)行語句組2。當(dāng)執(zhí)行完語句組1或語句組2后,程序流程跳轉(zhuǎn)到語句EndIf后面。語句組能夠由一條或多條語句組成,語句組不能與Then書寫在同一行,不然VBA認(rèn)為是一個(gè)單行If語句,會造成Else沒有匹配If。語句“EndIf”是多行If語句結(jié)束標(biāo)志。在多行If語句中,即使省略Else子句,也要寫該結(jié)束標(biāo)志。省略Else子句時(shí)多行If語句形式為:If表示式Then語句組 EndIf第41頁

例:計(jì)算分段函數(shù)單行If語句實(shí)現(xiàn):

Ifx=0Theny=cos(x)-x^3+3*xIfx<>0Theny=sin(x)+sqr(x*x+1)

多行If語句實(shí)現(xiàn):Ifx<>0Theny=sin(x)+sqr(x*x+1)Elsey=cos(x)-x^3+3*xEndIf第42頁If語句嵌套If語句嵌套是指If或Else后面語句塊中又包含If語句。

If<表示式1>Then

If<表示式11>Then…EndIf

EndIf第43頁

例:已知x,y,z三個(gè)數(shù),使得x>y>z

用一個(gè)IF語句和一個(gè)嵌套IF語句實(shí)現(xiàn)Ifx<yThent=x:x=y:y=t

Ify<zThent=y:y=z:z=t

Ifx<yThent=x:x=y:y=tEndIf

EndIfIf語句嵌套注意事項(xiàng):書寫鋸齒型;If與EndIf配對第44頁If…Then…ElseIf語句(多分支結(jié)構(gòu))

If<表示式1>Then <語句塊1>ElseIf<表示式2>Then <語句塊2> … [Else語句塊n+1]

EndIf第45頁不論有幾個(gè)分支,依次判斷,當(dāng)某條件滿足,執(zhí)行對應(yīng)語句,其余分支不再執(zhí)行;若條件都不滿足,且有Else子句,則執(zhí)行該語句塊,不然什么也不執(zhí)行。ElseIf不能寫成ElseIf。說明:第46頁例:已知百分制成績mark,顯示對應(yīng)五級制成績以下三種方法哪些正確,哪些錯(cuò)誤?第47頁<表示式列表>:與<變量或表示式>同類型下面四種形式之一:

表示式

例:"A"

一組枚舉表示式(用逗號分隔)

2,4,6,8

表示式1To表示式2

60To100

Is關(guān)系運(yùn)算符表示式

Is<60SelectCase語句(情況語句)語句格式:

SelectCase變量或表示式 Case表示式列表1 語句塊1 Case表示式列表2 語句塊2 …

[CaseElse 語句塊n+1]

EndSelect數(shù)值型或字符串表示式第48頁程序流程圖語句塊n+1語句塊1語句塊2語句塊n條件2TF…...條件nTF條件1TF第49頁例:變量strC中存放了一個(gè)字符,判斷該字符類型。用多分支結(jié)構(gòu)實(shí)現(xiàn):

IfUcase(strC)>="A"AndUcase(strC)<="Z"Then PrintstrC+"是字母字符"ElseIfstrC>="0"AndstrC<="9"Then PrintstrC+"是數(shù)字字符"Else PrintstrC+"其它字符"EndIf用SelectCase語句實(shí)現(xiàn):

SelectCasestrC Case"a"To"z","A"To"Z" PrintstrC+"是字母字符" Case"0"To"9" PrintstrC+"是數(shù)字字符" CaseElse PrintstrC+"其它字符"EndSelect第50頁比如:在輸入成績文本框中輸入一個(gè)分?jǐn)?shù),單擊“判斷”命令按鈕后,在成績等級文本框中顯示對應(yīng)成績等級。輸入成績在90~100分為A,80~89分為B,70~79分為C,60~69分為D,0~59分為E,不然顯示犯錯(cuò)信息。

編程點(diǎn)撥:依據(jù)題意,當(dāng)輸入成績不在[0,100]內(nèi)時(shí),應(yīng)顯示犯錯(cuò)信息,在該范圍內(nèi)時(shí),應(yīng)進(jìn)行分等級。判斷是否為正當(dāng)成績可用If語句,而分等級最好使用SelectCase語句。

第51頁條件函數(shù)

IIf函數(shù)形式為:

IIf(表示式,當(dāng)表示式為True時(shí)值,當(dāng)表示式為False時(shí)值)

比如:求x,y中大數(shù),放入max變量中。 max=IIf(x>y,x,y)

第52頁循環(huán)結(jié)構(gòu)(參考教材P211頁)For…Next循環(huán)Do…Loop循環(huán)第53頁For…Next循環(huán)結(jié)構(gòu):將一段程序重復(fù)執(zhí)行指定次數(shù),其中使用一個(gè)計(jì)數(shù)變量,統(tǒng)計(jì)執(zhí)行次數(shù)。格式:

For循環(huán)變量=初值to終值[Step步長]語句塊 [ExitFor] 語句塊Next[循環(huán)變量]For…Next循環(huán)語句P211循環(huán)體第54頁

循環(huán)變量

<=終值

語句塊

ExitFor

語句塊

循環(huán)變量加步長

T

F

循環(huán)變量得初值

第55頁功效:執(zhí)行For語句時(shí),“循環(huán)變量”設(shè)為“初值”;執(zhí)行到Next語句時(shí),步長加(減)到循環(huán)變量上;再執(zhí)行For語句時(shí),若“循環(huán)變量”超出“終值”則循環(huán)結(jié)束。步長:未指定值時(shí)默認(rèn)為1。若“步長”是正數(shù)或0,則“初值”應(yīng)大于等于“終值”,不然,“初值”應(yīng)小于等于“終值”。第56頁例:計(jì)算累加程序S=1+2+3+4….+x,并輸出結(jié)果。方法:接收一個(gè)累加終值,確定一個(gè)循環(huán)變量,循環(huán)變量有2個(gè)作用(加數(shù)和循環(huán)變量),確定一個(gè)存放累加和變量。使用循環(huán)計(jì)算,最終輸出顯示結(jié)果。

DimsAsinteger,xAsintegerx=InputBox("請輸入累加終值")Forx=lToxs=s+xNext思索:計(jì)算=1+3+5+7…X或2+4+6+8…X怎樣編寫?第57頁例:計(jì)算累乘程序S=1*2*3*4…X方法:接收一個(gè)累乘終值,確定一個(gè)循環(huán)變量,循環(huán)變量有2個(gè)作用(乘數(shù)和循環(huán)變量),確定一個(gè)存放累乘積變量。使用循環(huán)計(jì)算,最終輸出顯示結(jié)果。

DimSAsinteger,iAsintegerx=InputBox("請輸入累加終值")S=1Fori=lToxS=S*iNext注意:累乘乘數(shù)和乘積變量初值為1。第58頁注意:出了循環(huán),循環(huán)控制變量值問題。例程序段:

Fori=2To13Step3循環(huán)執(zhí)行次數(shù)

debug.Printi 輸出i值分別為:25811Nextidebug.Printi出了循環(huán)輸出為:i=14第59頁例:改變循環(huán)控制變量對循環(huán)影響PrivateSubCommand1_Click()j=0Fori=1To20Step2

i=i+3j=j+1Print"第";j;"次循環(huán)i=";iNextiPrint"退出循環(huán)后i=";iEndSub正常情況:i=1,3,5,7,9,11,13,15,17,19現(xiàn)在:i=4,9,14,19第60頁Do…Loop循環(huán)語句(用于控制循環(huán)次數(shù)未知)形式1:

Do{While|Until}<條件>語句塊[ExitDo語句塊]Loop

形式2:

Do

語句塊 [ExitDo 語句塊] Loop{While|Until}<條件>第61頁Do…Loop語句(循環(huán)結(jié)構(gòu))DoWhile…Loop語句DoUntil…Loop語句Do…LoopWhile語句Do…LoopUntil語句第62頁

DoWhile…Loop語句

i=1DoWhilei<=10s=s+ii=i+1Loop

當(dāng)i<=10成立時(shí),執(zhí)行循環(huán)體循環(huán)變量i必須有初值預(yù)防產(chǎn)生死循環(huán)有可能一次也不執(zhí)行循環(huán)體修改循環(huán)控制變量,改變加數(shù)值第63頁Do…LoopWhile

i=1Dos=s+ii=i+1LoopWhilei<=10當(dāng)i<=10成立時(shí),執(zhí)行循環(huán)體循環(huán)變量i必須有初值預(yù)防產(chǎn)生死循環(huán)最少執(zhí)行一次循環(huán)體修改循環(huán)控制變量,改變加數(shù)值第64頁DoUntil…Loop

i=1DoUntili>10s=s+ii=i+1Loop

當(dāng)i>10成立時(shí),結(jié)束執(zhí)行循環(huán)體循環(huán)變量i必須有初值預(yù)防產(chǎn)生死循環(huán)有可能一次也不執(zhí)行循環(huán)體修改循環(huán)控制變量,改變加數(shù)值第65頁Do…LoopUntil

i=1Dos=s+ii=i+1LoopUntili>10當(dāng)i>10成立時(shí),結(jié)束執(zhí)行循環(huán)體循環(huán)變量i必須有初值預(yù)防產(chǎn)生死循環(huán)最少執(zhí)行一次循環(huán)體修改循環(huán)控制變量,改變加數(shù)值第66頁補(bǔ)充:While…Wend語句格式以下: While<條件> <循環(huán)塊> Wend說明:該語句功效與DoWhile<條件>….Loop實(shí)現(xiàn)循環(huán)完全相同。第67頁三種循環(huán)語句:即For、Do—Loop,共同特點(diǎn)是重復(fù)執(zhí)行一個(gè)語句系列(循環(huán)體),不一樣點(diǎn)是控制重復(fù)次數(shù)時(shí)機(jī)和方法不一樣。參考教材P206-P214頁實(shí)例,掌握程序控制結(jié)構(gòu)。第68頁

數(shù)組:數(shù)組不是一個(gè)數(shù)據(jù)類型,而是一組相同類型變量集合。能夠像使用普通變量一樣使用數(shù)組中每一個(gè)元素。使用數(shù)組好處是用一個(gè)數(shù)組名代表邏輯上相關(guān)一批數(shù)據(jù),用下標(biāo)表示該數(shù)組中各個(gè)元素,能夠提升處理數(shù)據(jù)效率,縮短和簡化程序。8-5數(shù)組第69頁

數(shù)組不是一個(gè)數(shù)據(jù)類型,而是一組相同類型變量集合,數(shù)組必須先申明后使用。

兩類數(shù)組:靜態(tài)(定長)數(shù)組、動(dòng)態(tài)(可變長)數(shù)組

1.一維數(shù)組

定義一維數(shù)組形式:

Dim數(shù)組名([下界To]上界)[As類型]

申明了數(shù)組名、維數(shù)、大小、類型8-5-1數(shù)組定義第70頁說明:數(shù)組名命名規(guī)則與變量命名相同。數(shù)組元素個(gè)數(shù):上界-下界+1。缺省<下界>為0,若希望下標(biāo)從1開始,可在模塊通用部分使用OptionBase語句將設(shè)為1。其使用格式是:

OptionBase0|1

'后面參數(shù)只能取0或1比如:OptionBase1'將數(shù)組申明中缺省<下界>下標(biāo)設(shè)為1下界>和<上界>不能使用變量,必須是常量,常量能夠是直接常量、符號常量,普通是整型常量。第71頁假如省略As子句,則數(shù)組類型為變體類型。

數(shù)組中各元素在內(nèi)存占一片連續(xù)存放空間,一維數(shù)組在內(nèi)存中存放次序是按下標(biāo)大小次序。例:Dimmark(1to100)AsInteger例:Dima(-1to3)AsInteger申明一維數(shù)組a,包含了5個(gè)整型元素a(-1)、a(0)、a(1)、a(2)、a(3);第72頁在定義靜態(tài)數(shù)組時(shí),每一維元素個(gè)數(shù)必須是常數(shù),不能是變量或表示式。

如:錯(cuò)誤申明,下標(biāo)是變量Dimx(n)或:n=Inputbox(“輸入n”)Dimx(n)AsSingle注意:第73頁在數(shù)組申明中下標(biāo)說明了數(shù)組整體,即每維大??;而在程序其它地方出現(xiàn)下標(biāo)表示數(shù)組中一個(gè)元素。二者寫法形式相同,但意義不一樣。比如:Dimx(10)AsInteger

x(10)=100

表示申明了數(shù)組x,有11個(gè)數(shù)組元素對x(10)這個(gè)數(shù)組元素賦值第74頁定義二維數(shù)組形式:Dim數(shù)組名([下界1To]上界1,下界2To]上界2)As類型比如:Dima(2,3)AsSingle

二維數(shù)組在內(nèi)存存放次序是“先行后列”。數(shù)組a各元素在內(nèi)存中存放次序是: a(0,0)→a(0,1)→a(0,2)→a(0,3) a(1,0)→a(1,1)→a(1,2)→a(1,3) a(2,0)→a(2,1)→a(2,2)→a(2,3)

2.二維數(shù)組第75頁例:DimlArray(0To3,0To4)AsLong共有4×5個(gè)元素等價(jià)于:DimlArray(3,4)AsLong

第76頁

動(dòng)態(tài)數(shù)組指在申明數(shù)組時(shí)未給出數(shù)組大小(省略括號中下標(biāo)),當(dāng)要使用它時(shí),隨時(shí)用ReDim語句重新指出數(shù)組大小。形式以下:

ReDim數(shù)組名(下標(biāo)[,下標(biāo)2…])[As類型]

例:Private

SubS1()

Dimx()AsSingle …

n=Inputbox(“輸入n”)

ReDimx(n)…

EndSub3.動(dòng)態(tài)數(shù)組第77頁說明:

Dim、Static、Public申明語句是說明性語句,可出現(xiàn)在過程內(nèi)或通用申明段;ReDim語句是執(zhí)行語句,只能出現(xiàn)在過程內(nèi);在過程中可屢次使用ReDim來改變數(shù)組元素個(gè)數(shù)ReDim中下標(biāo)能夠是常量,也能夠是有了確定值變量。如:n=InputBox(“輸入n值”) ReDimArr(n)

靜態(tài)數(shù)組在程序編譯時(shí)分配存放單元,動(dòng)態(tài)數(shù)組在運(yùn)行時(shí)分配存放單元。第78頁一維數(shù)組元素引用使用形式:數(shù)組名(下標(biāo))其中:下標(biāo)能夠是常量、整型變量或表示式。比如:設(shè)有下面數(shù)組A(10)、B(10)AsInteger

則下面語句都是正確。A(1)=B(2)+B(1)+5'取數(shù)組元素運(yùn)算A(i)=B(i)'下標(biāo)使用變量A(i+2)=B(i+1) '下標(biāo)使用表示式注意:引用數(shù)組時(shí)不能下標(biāo)越界8-5-2數(shù)組基本操作1.數(shù)組元素引用第79頁引用二維數(shù)組形式:數(shù)組名([下標(biāo)1,下標(biāo)2)

下標(biāo)1指定元素在二維表中所在行,下標(biāo)2指定元素在二維表中所在列。比如:a(1,2)=10a(i+2,j)=a(2,3)*2

在程序中經(jīng)常經(jīng)過二重循環(huán)來操作使用二維數(shù)組元素。

第80頁數(shù)組引用實(shí)例:第81頁經(jīng)過循環(huán)給數(shù)組元素初值

Fori=1To10'A數(shù)組每個(gè)元素值為1 A(i)=1Next

溫馨提示

  • 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

提交評論