![數(shù)據(jù)庫課件第章vba程序設(shè)計(jì)基礎(chǔ)_第1頁](http://file4.renrendoc.com/view/2a1e233729a76a20b0a577253c813cca/2a1e233729a76a20b0a577253c813cca1.gif)
![數(shù)據(jù)庫課件第章vba程序設(shè)計(jì)基礎(chǔ)_第2頁](http://file4.renrendoc.com/view/2a1e233729a76a20b0a577253c813cca/2a1e233729a76a20b0a577253c813cca2.gif)
![數(shù)據(jù)庫課件第章vba程序設(shè)計(jì)基礎(chǔ)_第3頁](http://file4.renrendoc.com/view/2a1e233729a76a20b0a577253c813cca/2a1e233729a76a20b0a577253c813cca3.gif)
![數(shù)據(jù)庫課件第章vba程序設(shè)計(jì)基礎(chǔ)_第4頁](http://file4.renrendoc.com/view/2a1e233729a76a20b0a577253c813cca/2a1e233729a76a20b0a577253c813cca4.gif)
![數(shù)據(jù)庫課件第章vba程序設(shè)計(jì)基礎(chǔ)_第5頁](http://file4.renrendoc.com/view/2a1e233729a76a20b0a577253c813cca/2a1e233729a76a20b0a577253c813cca5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第十章VBA程序設(shè)計(jì)基礎(chǔ)本章要點(diǎn)1、VBA的基礎(chǔ)知識(shí)2、在VBA中各種變量的定義及用法3、程序設(shè)計(jì)中的流程控制方法10.1 VBA編程環(huán)境在Access 2003提供的“模塊”數(shù)據(jù)庫對(duì)象中,使用VBA(Visual Basic for Application)程序設(shè)計(jì)語言,在不同的模塊中實(shí)現(xiàn)VBA代碼設(shè)計(jì),可以解決實(shí)際開發(fā)中的復(fù)雜應(yīng)用。 10.1.1 認(rèn)識(shí)VBAVB是微軟公司推出的可視化BASIC語言,是一種編程簡單、功能強(qiáng)大的面向?qū)ο箝_發(fā)工具,我們可以像編寫VB程序那樣來編寫VBA程序。用VBA語言編寫的代碼,將保存在Access中的一個(gè)模塊里,并通過類似在窗體中激發(fā)宏的操作那樣來啟動(dòng)這個(gè)模
2、塊,從而實(shí)現(xiàn)相應(yīng)的功能。 要用Access 2003來完成一個(gè)實(shí)際的數(shù)據(jù)庫應(yīng)用系統(tǒng),就應(yīng)該掌握VBA。10.1.2 VBA編程環(huán)境:VBE窗口 1.進(jìn)入VBE(Visual Basic Editor)窗口Access 2003數(shù)據(jù)庫中包含的程序模塊可以分為兩種類型,獨(dú)立程序模塊和綁定型程序模塊。 (1) 創(chuàng)建與編輯綁定型程序模塊所謂綁定性程序模塊是指包含在窗體、報(bào)表、頁等數(shù)據(jù)庫基本對(duì)象之中的事件處理過程,這樣的程序模塊僅在所屬對(duì)象處于活動(dòng)狀態(tài)下有效。以窗體為例:編寫命令按鈕的“單擊”(Click)事件代碼打開VBE窗口打開“選擇生成器”對(duì)話框(2) 編輯獨(dú)立的程序模塊獨(dú)立程序模塊,是指Acce
3、ss 2003數(shù)據(jù)庫中的“模塊”對(duì)象。首先在數(shù)據(jù)庫設(shè)計(jì)視圖中選定“模塊”對(duì)象,然后單擊工具欄中的“代碼”按鈕,或者選擇“工具”菜單下“宏”中的“Visual Basic編輯器”命令,也可以啟動(dòng)VBE,并使得VBE程序代碼窗口中顯示被選中的模塊對(duì)象包含的程序代碼。2.VBE窗口組成在VBA編程窗口中,主要有標(biāo)準(zhǔn)工具欄、工程窗口、屬性窗口和代碼窗口。(1)標(biāo)準(zhǔn)工具欄(2)工程窗口也稱工程資源管理器 ,一個(gè)數(shù)據(jù)庫應(yīng)用系統(tǒng)就是一個(gè)工程,系統(tǒng)中的所有類對(duì)象及模塊對(duì)象都在該窗口中顯示出來。(3)屬性窗口 屬性窗口列出了選定對(duì)象的屬性,可以在設(shè)計(jì)時(shí)查看、改變這些屬性。當(dāng)選取了多個(gè)控件時(shí),屬性窗口會(huì)列出所有控
4、件的共同屬性。(4)代碼窗口 代碼窗口用來顯示、編寫以及修改VBA 代碼。實(shí)際操作中,可以打開多個(gè)代碼窗口,查看不同窗體或模塊中的代碼,代碼窗口之間可以進(jìn)行復(fù)制和粘貼, 10.1.3 VBA代碼窗口的使用雙擊工程窗口中的任何對(duì)象,都可以在代碼窗口中打開該對(duì)象的對(duì)應(yīng)模塊代碼,用戶可以進(jìn)行編寫、修改與調(diào)試等處理。對(duì)象事件代碼常用的設(shè)計(jì)方法是:(1) 在“對(duì)象”列表框選擇要處理的對(duì)象。(2) 在“過程/事件” 列表框選擇需要設(shè)計(jì)代碼的事件過程。(3) 選擇某個(gè)事件過程后,系統(tǒng)將顯示該事件過程代碼(若有)或自動(dòng)生成該事件的過程模板,用戶可以做編寫、修改和調(diào)試代碼處理。1.對(duì)象瀏覽器“對(duì)象瀏覽器”用于顯
5、示對(duì)象庫以及工程中的可用類、屬性、方法、事件及常數(shù)變量??梢杂盟鼇硭阉骷笆褂眉扔械膶?duì)象,或是來源于其他應(yīng)用程序的對(duì)象。2.自動(dòng)顯示提示信息在代碼窗口中輸入命令代碼時(shí),系統(tǒng)會(huì)適時(shí)地自動(dòng)顯示命令關(guān)鍵字列表、關(guān)鍵字列表屬性列表及過程參數(shù)列表等提示信息,可以選擇或參考其中的信息。例如,使用Docmd對(duì)象,當(dāng)輸入“Docmd”時(shí),系統(tǒng)會(huì)打開可選操作命令列表框。3. 立即窗口在代碼窗口中,使用“視圖”菜單中的“立即窗口”命令可以打開立即窗口。4.本地窗口在代碼窗口中,使用“視圖”菜單中的“本地窗口”命令可以打開本地窗口,本地窗口自動(dòng)顯示出所有在當(dāng)前過程中的變量聲明及變量值。5.監(jiān)視窗口 在代碼窗口中,使用
6、“視圖”菜單中的“監(jiān)視窗口”命令可以打開“監(jiān)視窗口” 。10.2 模塊的基礎(chǔ)知識(shí)模塊是將 Visual Basic for Applications 聲明和過程作為一個(gè)單元進(jìn)行保存的集合。模塊有兩個(gè)基本類型:類模塊和標(biāo)準(zhǔn)模塊。模塊中的代碼以過程的形式加以組織,每一個(gè)過程都可以是一個(gè)Function過程或一個(gè)Sub過程。10.2.1 類模塊窗體模塊和報(bào)表模塊都是類模塊,而且它們各自與某一窗體或報(bào)表相關(guān)聯(lián)。窗體和報(bào)表模塊通常都含有事件過程,該過程用于響應(yīng)窗體或報(bào)表中的事件??梢允褂檬录^程來控制窗體或報(bào)表的行為,以及它們對(duì)用戶操作的響應(yīng),例如單擊某個(gè)命令按鈕。10.2.2 標(biāo)準(zhǔn)模塊標(biāo)準(zhǔn)模塊一般用于
7、存放公共過程(子過程和函數(shù)過程),不與其他任何Access對(duì)象相關(guān)聯(lián)。在Access 2003系統(tǒng)中,通過模塊對(duì)象創(chuàng)建的代碼過程就是標(biāo)準(zhǔn)模塊。在標(biāo)準(zhǔn)模塊中,通常為整個(gè)應(yīng)用系統(tǒng)設(shè)置全局變量或通用過程,供其他窗體或報(bào)表等數(shù)據(jù)庫對(duì)象在類模塊中使用或調(diào)用。反過來,在標(biāo)準(zhǔn)模塊的子過程中,也可以調(diào)用窗體或運(yùn)行宏等數(shù)據(jù)庫對(duì)象。標(biāo)準(zhǔn)模塊中的公共變量和公共過程具有全局性,其作用范圍為整個(gè)應(yīng)用系統(tǒng)。10.2.3 創(chuàng)建模塊模塊是以過程為單元組成的,一個(gè)模塊包含一個(gè)聲明區(qū)域及一個(gè)或多個(gè)子過程與函數(shù)過程,聲明區(qū)域用于定義模塊中使用的變量等內(nèi)容。過程是包含VBA代碼的基本單位,由一系列可以完成某項(xiàng)指定的操作或計(jì)算的語句和
8、方法組成,通常分為:Sub過程(子程序)、Function過程(函數(shù))和Property過程(屬性)。1.Sub過程Sub過程(又稱子過程)以關(guān)鍵詞Sub開始,以End Sub結(jié)束,其定義語句語法格式為:PublicPrivateStatic Sub 子過程名()As 數(shù)據(jù)類型Exit SubEnd Sub對(duì)于子過程,可以傳送參數(shù)和使用參數(shù)來調(diào)用它,但不返回任何值。選用關(guān)鍵字Public:可使該過程能被所有模塊的所有其他過程調(diào)用。選用關(guān)鍵字Private:可使該過程只能被同一模塊的其他過程調(diào)用。 上面列出的過程實(shí)際上是3個(gè)事件過程。子過程的名字是由一個(gè)對(duì)象的名字和一個(gè)事件的名字Click組成的
9、,兩者之間用下劃線分開,“上一條記錄”即是“上一條”命令按鈕的名字,當(dāng)單擊這個(gè)命令按鈕時(shí),就會(huì)運(yùn)行這個(gè)事件過程?!纠?0.1】在名為OpenCT控件的“單擊”事件過程中,使用OpenForm方法打開“學(xué)生信息錄入”窗體。2. Function過程Function過程(又稱函數(shù)過程)以關(guān)鍵詞Function開始,以End Function結(jié)束,其定義語句語法格式為:PublicPrivateStatic Function 函數(shù)過程名()As 數(shù)據(jù)類型函數(shù)過程名=Exit Function函數(shù)過程名=End FunctionFunction過程和Sub過程很類似,但它通常都具有返回值,在代碼中可以
10、一次或多次為函數(shù)名賦一個(gè)值來作為函數(shù)的返回值。選用關(guān)鍵字Static:只要含有這個(gè)過程的模塊是打開的,則在這個(gè)過程中無論是顯式或隱式說明的變量值都將被保留。As 數(shù)據(jù)類型子句:定義函數(shù)過程返回的變量數(shù)據(jù)類型,若未定義,系統(tǒng)將自動(dòng)賦給函數(shù)過程一個(gè)最合適的數(shù)據(jù)類型。 【例10.2】編寫一個(gè)計(jì)算圓面積的函數(shù)過程Area()。10.3 面向?qū)ο蟪绦蛟O(shè)計(jì)基礎(chǔ)10.3.1 面向?qū)ο蟮某绦蛟O(shè)計(jì)概念面向?qū)ο蠹夹g(shù)提供了一個(gè)具有全新概念的程序開發(fā)模式,它將面向?qū)ο蠓治?OOA,Object-Oriented Analysis)、面向?qū)ο笤O(shè)計(jì)(OOD,Object-Oriented Design)和面向?qū)ο蟪绦蛟O(shè)計(jì)
11、(OOP,Object-Oriented Programming)集成在一起,其核心概念是“面向?qū)ο蟆?。所謂面向?qū)ο?Object-Oriented),可以這樣定義:面向?qū)ο?對(duì)象+類+屬性的繼承+對(duì)象之間的通信。10.3.2 對(duì)象和類的概念1. 對(duì)象和類 客觀世界的任何實(shí)體都可以被看作是對(duì)象。每個(gè)對(duì)象都具有描述其特征的屬性及附屬于它的行為,屬性用來表示對(duì)象的狀態(tài),方法用來描述對(duì)象的行為。屬性和方法是與對(duì)象緊密聯(lián)系的,“對(duì)象”既可以是一個(gè)單一對(duì)象,也可以是對(duì)象的集合。屬性與方法的引用方式為:對(duì)象.屬性名或?qū)ο?方法名,引用中的“對(duì)象”描述,一般使用如下格式:父對(duì)象類名!子對(duì)象名。類是對(duì)一類相似
12、對(duì)象的性質(zhì)描述,這些對(duì)象具有相同的性質(zhì);相同種類的屬性以及方法。類是對(duì)象的抽象,而對(duì)象是類的具體實(shí)例。在Access 2003中,除表、查詢、窗體、報(bào)表、頁、宏和模塊等7種對(duì)象外,還可以在VBA中使用一些范圍更廣泛的對(duì)象,例如,“記錄集”對(duì)象、DoCmd對(duì)象等。2. DoCmd對(duì)象DoCmd是Access 2003數(shù)據(jù)庫的一個(gè)重要對(duì)象,它的主要功能是通過調(diào)用Access 內(nèi)置的方法,在VBA 中實(shí)現(xiàn)某些特定的操作。例如:利用DoCmd對(duì)象的OpenForm方法打開“學(xué)生信息錄入”窗體,使用的語句格式為:DoCmd.OpenForm 學(xué)生信息錄入 10.4 VBA編程基礎(chǔ)10.4.1 數(shù)據(jù)庫對(duì)象
13、數(shù)據(jù)庫對(duì)象,如:數(shù)據(jù)庫、表和查詢以及應(yīng)用程序?qū)ο?窗體和報(bào)表),在VBA中都有對(duì)應(yīng)的數(shù)據(jù)類型,這些對(duì)象數(shù)據(jù)類型由對(duì)象庫引用所定義。所有常用的VBA對(duì)象數(shù)據(jù)類型和對(duì)象庫中所包括的對(duì)象,可在數(shù)據(jù)庫對(duì)象中列出,如下表所示。對(duì)象數(shù)據(jù)類型庫相應(yīng)的數(shù)據(jù)庫對(duì)象類型DatabaseDAO3.6使用DAO時(shí)用Jet數(shù)據(jù)庫引擎打開的數(shù)據(jù)庫ConnectionADO2.1ADO取代了DAO數(shù)據(jù)庫對(duì)象FormAccess9.0窗體,包括子窗體ReportAccess9.0報(bào)表,包括子報(bào)表ControAccess9.0窗體和報(bào)表上的控件QueryDefDAO3.6使用ADO時(shí)的查詢定義CommandADO2.1ADO取
14、代DAO、QueryDef對(duì)象TableDefDAO3.6表定義(結(jié)構(gòu),索引和其他表屬性)DAO RecordsetDAO3.6DAO創(chuàng)建的查詢結(jié)果集10.4.2 VBA中的基本數(shù)據(jù)類型VBA在數(shù)據(jù)類型和定義方式上均繼承了傳統(tǒng)的Basic語言的特點(diǎn)。Access 2003數(shù)據(jù)表中的字段使用的數(shù)據(jù)(OLE對(duì)象和備注字段數(shù)據(jù)類型除外)在VBA中都有對(duì)應(yīng)的類型。在定義方式上,除支持符號(hào)定義方式外,還支持使用關(guān)鍵字定義方式。VBA數(shù)據(jù)類型、關(guān)鍵字、符號(hào)、前綴、占用空間和取值范圍如表10.2所示。 1.數(shù)值型數(shù)據(jù)類型包括:Byte、Integer、Long、Single、Double和Currency。
15、(1)Byte以一個(gè)字節(jié)的無符號(hào)二進(jìn)制數(shù)存儲(chǔ),取值范圍為0255。(2)整數(shù)(integer和Long)整數(shù)是不帶小數(shù)點(diǎn)和指數(shù)符號(hào)的數(shù),在機(jī)器內(nèi)以二進(jìn)制補(bǔ)碼形式表示。整型(Integer) 長整型(Long) 例如: 345、-345、345%均表示整型數(shù)。345&、-345&均表示長整型數(shù)。(3)浮點(diǎn)數(shù)(single和Double)浮點(diǎn)數(shù)也稱實(shí)型數(shù)或?qū)崝?shù),是帶有小數(shù)部分的數(shù)值。它由三部分組成:符號(hào)、指數(shù)和尾數(shù)。單精度型(Single):以4個(gè)字節(jié)存儲(chǔ),符號(hào)1位,指數(shù)8位,尾數(shù)23位,1位隱含位。用E來表示指數(shù)。雙精度型(Double):以8個(gè)字節(jié)存儲(chǔ),符號(hào)1位,指數(shù)11位,尾數(shù)52位,1位隱
16、含位。用D來表示指數(shù)。例如:345!、-345.12、0.345E+3均表示單精度浮點(diǎn)數(shù),345#、-345.12#、0.345E+3#、0.345D+3均表示雙精度浮點(diǎn)數(shù)。(4)貨幣型(Currency)貨幣數(shù)據(jù)類型是為表示錢款而設(shè)置的。該類型數(shù)據(jù)以8個(gè)字節(jié)存儲(chǔ),精確到小數(shù)點(diǎn)后四位,小數(shù)點(diǎn)前有15位,小數(shù)點(diǎn)后4位以后的數(shù)字將被舍去。例如:345、345.12 均表示貨幣型數(shù)據(jù)。 2. 字符型數(shù)據(jù)類型字符串是一個(gè)字符序列,由ASCII字符組成,包括標(biāo)準(zhǔn)的ASCII字符和擴(kuò)展ASCII字符及漢字等。VB中的字符串分為兩種,即變長字符串和定長字符串。例如:345、Access 2003 程序設(shè)計(jì)
17、等均表示字符型數(shù)據(jù)。表示空字符串, 表示有一個(gè)空格的字符。 3.日期型數(shù)據(jù)類型日期型數(shù)據(jù)用來表示日期信息,按8字節(jié)的浮點(diǎn)數(shù)來存儲(chǔ),表示范圍:日期范圍為1000年1月1日到9999年12月31日,而時(shí)間范圍為0:00:0023:59:59。日期型數(shù)據(jù)有兩種表示方法:一種是在字面上可被認(rèn)為日期和時(shí)間的字符,表示格式為mm/dd/yyyy或mm-dd-yyyy,日期文字須以數(shù)字符號(hào) (#)括起來。例如,#April 1,2002# #10-11-2005# #2005-10-11 10:30:00 PM#。另一種是以數(shù)字序列表示,當(dāng)其他的數(shù)值類型要轉(zhuǎn)換為 Date 型時(shí),小數(shù)點(diǎn)左邊的數(shù)字代表日期,而
18、小數(shù)點(diǎn)右邊的數(shù)字代表時(shí)間,0為午夜,0.5為中午12點(diǎn),負(fù)數(shù)代表的是1899年12月31日之前的日期和時(shí)間。 4.變體數(shù)據(jù)類型變體類型數(shù)據(jù)(Variant)是一種可變的數(shù)據(jù)類型,可以表示任何值,包括數(shù)值、字符串及日期等。變體類型數(shù)據(jù)可以包含Empty、Error、Nothing和Null特殊值,在使用時(shí),可以使用VarType與TypeName函數(shù)來決定如何處理Variant中的數(shù)據(jù)。 VBA規(guī)定,如果沒有使用Dim As 數(shù)據(jù)類型顯式聲明或使用符號(hào)來定義變量的數(shù)據(jù)類型,系統(tǒng)默認(rèn)為變體類型(Variant)。 5. 邏輯數(shù)據(jù)類型邏輯數(shù)據(jù)類型(Boolean)用于邏輯判斷,亦稱布爾型。其值為邏輯
19、值,用兩個(gè)字節(jié)存儲(chǔ),它只有True(真)或False(假)兩個(gè)值。當(dāng)邏輯數(shù)據(jù)轉(zhuǎn)換成整型數(shù)據(jù)類型時(shí),True轉(zhuǎn)換為-1,F(xiàn)alse轉(zhuǎn)換為0。當(dāng)將其他類型數(shù)據(jù)換成邏輯數(shù)據(jù)時(shí),非0數(shù)據(jù)轉(zhuǎn)換為True ,0轉(zhuǎn)換為False。 6. 對(duì)象數(shù)據(jù)類型對(duì)象型數(shù)據(jù)(Object)用來表示圖形、OLE對(duì)象或其他對(duì)象,用4個(gè)字節(jié)存儲(chǔ),對(duì)象變量可引用應(yīng)用程序中的對(duì)象。 7. 用戶定義的數(shù)據(jù)類型 創(chuàng)建自定義的數(shù)據(jù)類型的語句是Type,用戶自定義類型可包含一個(gè)或多個(gè)基本數(shù)據(jù)類型的數(shù)據(jù)元素、數(shù)組或一個(gè)先前定義的用戶自定義類型。Type語句的基本格式:Private | Public Type 數(shù)據(jù)類型名元素1 As 數(shù)據(jù)類
20、型元素2 As 數(shù)據(jù)類型End Type10.4.3 變量、常量與數(shù)組 1. 變量變量是指在程序運(yùn)行過程中值會(huì)發(fā)生變化的數(shù)據(jù)。變量的三要素:變量名、變量類型、變量的值。變量的命名規(guī)則。對(duì)變量進(jìn)行聲明可以使用類型說明符號(hào)、Dim語句和DefType語句。(1) 隱含型變量 隱式聲明在使用一個(gè)變量之前并不必先聲明這個(gè)變量。這個(gè)變量只在當(dāng)前過程中有效,類型為變體數(shù)據(jù)類型。用戶可以通過將一個(gè)值指定給變量名的方式來建立隱含型變量。例如:NewVar = 1234。(2)顯式變量 對(duì)變量進(jìn)行聲明可以使用類型說明符號(hào)、Dim語句和DefType語句。 使用類型說明符號(hào)聲明變量類型允許使用類型說明符號(hào)來聲明常
21、量和變量的數(shù)據(jù)類型,如:varXyz%是一個(gè)整型變量;123%則是一個(gè)整型常數(shù),類型說明符號(hào)在使用時(shí)始終放在變量或常數(shù)的末尾。使用Dim語句聲明變量聲明變量的一般方法是用Dim.AsDataType結(jié)構(gòu),其中As指定變量數(shù)據(jù)類型。Dim語句使用格式為:Dim 變量名As 數(shù)據(jù)類型DefType語句DefType語句只能用于模塊級(jí),即模塊的通用聲明部分,用來為變量和傳送給過程的參數(shù)設(shè)置默認(rèn)數(shù)據(jù)類型,以及為其名稱以指定的字符開頭的Function和Property Get過程,設(shè)置返回值類型。DefType語句使用格式:DefType 字母,字母范圍使用變體類型聲明變量數(shù)據(jù)類型可以使用上述三種方法
22、,VBA 在判斷一個(gè)變量的數(shù)據(jù)類型時(shí),按以下先后順序進(jìn)行:是否使用Dim 語句;是否使用數(shù)據(jù)類型說明符;是否使用DefType 語句。沒有使用上述三種方法聲明數(shù)據(jù)類型的變量默認(rèn)為變體類型(Variant)。 2. 常量常量是指在程序運(yùn)行的過程中,其值不能被改變的量。常量的使用可以增加代碼的可讀性,并且使代碼更加容易維護(hù)。在Access 2003中,常量的類型有4種:直接常量符號(hào)常量固有常量系統(tǒng)定義常量(1) 符號(hào)常量如果在代碼中要反復(fù)使用相同的值,或者代表一些具有特定意義的數(shù)字或字符串,可以使用符號(hào)常量。符號(hào)常量使用Const語句來創(chuàng)建。例如:Const conPI=3.14159265(2)
23、 固有常量固有常量以兩個(gè)前綴字母指明了定義該常量的對(duì)象庫。來自Access庫的常量以“ac”開頭,來自ADO庫的常量以“ad”開頭,而來自Visual Basic庫的常量則以“vb”開頭。例如:acForm、adAddNew、vbCurrency(3) 系統(tǒng)定義常量系統(tǒng)定義的常量有三個(gè):True、False和Null。系統(tǒng)定義常量可以在計(jì)算機(jī)上的所有應(yīng)用程序中使用。 3. 數(shù)組數(shù)組是由一組具有相同數(shù)據(jù)類型的變量(稱為數(shù)組元素)構(gòu)成的集合。數(shù)組變量由變量名和數(shù)組下標(biāo)組成,在VBA中不允許隱式說明數(shù)組,可用Dim語句來聲明數(shù)組。數(shù)組聲明方式為:Dim 數(shù)組名(下標(biāo)下界 to 下標(biāo)上界) As 數(shù)據(jù)
24、類型下標(biāo)下界的缺省值為0,數(shù)組元素為:數(shù)組名(0)至 數(shù)組名(下標(biāo)上界);如果設(shè)置下標(biāo)下界非0,要使用to選項(xiàng)。在使用數(shù)組時(shí),可以在模塊的通用聲明部分使用Option Base來指定數(shù)組的默認(rèn)下標(biāo)下界是0或l。數(shù)組有兩種類型:固定大小的數(shù)組和動(dòng)態(tài)數(shù)組。前者總保持同樣的大小,而后者在程序中可根據(jù)需要?jiǎng)討B(tài)地改變數(shù)組的大小。(1) 固定大小的數(shù)組例如:Dim IntArray(l0) As Integer這條語句聲明了一個(gè)有11個(gè)整型數(shù)組元素的數(shù)組,數(shù)組元素從IntArray(0)至IntArray(l0),每個(gè)數(shù)組元素為一個(gè)整型變量,這里只指定數(shù)組元素下標(biāo)上界來定義數(shù)組。(2) 動(dòng)態(tài)數(shù)組動(dòng)態(tài)數(shù)組的
25、定義方法是:先使用Dim來聲明數(shù)組,但不指定數(shù)組元素的個(gè)數(shù),而在以后使用時(shí)再用ReDim來指定數(shù)組元素個(gè)數(shù),稱為數(shù)組重定義。(3) 數(shù)組的使用數(shù)組聲明后,數(shù)組中的每個(gè)元素都可以當(dāng)作單個(gè)的變量來使用,其使用方法同相同類型的普通變量。數(shù)組元素的引用格式為:數(shù)組名(下標(biāo)值)。10.4.4 數(shù)據(jù)庫對(duì)象變量在Access 2003數(shù)據(jù)庫中建立的對(duì)象及其屬性,均可被看成是VBA程序代碼中的變量及其指定的值來加以引用,與普通變量不同的是要使用規(guī)定的引用格式。當(dāng)需要多次引用對(duì)象時(shí),可以先聲明一個(gè)Control(控件)數(shù)據(jù)類型的對(duì)象變量,然后使用Set關(guān)鍵字建立對(duì)象變量指向的控件對(duì)象。語句使用格式如下:Dim
26、Txtxhbl As Control 定義對(duì)象變量,數(shù)據(jù)類型為Control(控件)數(shù)據(jù)類型Set Txtxhbl= Forms!Myform1!Txtxh 為對(duì)象變量指定窗體控件對(duì)象以后要引用控件對(duì)象,可轉(zhuǎn)為引用對(duì)象變量。例如:Txtxhbl=3020503323 等同于:Forms!Myform1!Txtxh=302050332310.4.5 運(yùn)算符與表達(dá)式 1. 運(yùn)算符VBA中的運(yùn)算符可分為4種類型:算術(shù)運(yùn)算符、字符串運(yùn)算符、關(guān)系運(yùn)算符和邏輯運(yùn)算符。(1) 算術(shù)運(yùn)算符 算術(shù)運(yùn)算符是常用的運(yùn)算符,用來執(zhí)行簡單的算術(shù)運(yùn)算,VBA提供了8個(gè)算術(shù)運(yùn)算符。(2) 字符串運(yùn)算符 字符串運(yùn)算就是將兩個(gè)
27、字符串連接起來生成一個(gè)新的字符串。字符串運(yùn)算符包括:&運(yùn)算符+運(yùn)算符& 運(yùn)算符:用來強(qiáng)制兩個(gè)表達(dá)式作字符串連接。需注意的是:由于符號(hào)“&”還是長整型的類型定義符,在字符串變量后使用運(yùn)算符“&”時(shí),變量與運(yùn)算符“&”之間應(yīng)加一個(gè)空格。運(yùn)算符“&”兩邊的操作數(shù)可以是字符型,也可以是數(shù)值型。不管是字符型還是數(shù)值型,進(jìn)行連接操作前,系統(tǒng)先進(jìn)行操作數(shù)類型轉(zhuǎn)換,數(shù)值型轉(zhuǎn)換成字符型,然后再做連接運(yùn)算?!纠?0.6】 “& ”運(yùn)算符應(yīng)用示例。+ 運(yùn)算符:用來連接兩個(gè)字符串表達(dá)式,形成一個(gè)新的字符串。需注意的是:“+”運(yùn)算符要求兩邊的操作數(shù)都是字符串?!纠?0.7】 “ +”運(yùn)算符應(yīng)用示例。4321 結(jié)果為55
28、554321+1234結(jié)果為43211234abcd 出錯(cuò)4321+1234 & 100結(jié)果為5555100 (3) 關(guān)系運(yùn)算符 關(guān)系運(yùn)算符也稱比較運(yùn)算符,用來對(duì)兩個(gè)表達(dá)式的值進(jìn)行比較,比較的結(jié)果是一個(gè)邏輯值,即真(True)或假(False)。用關(guān)系運(yùn)算符連接兩個(gè)算術(shù)表達(dá)式所組成的表達(dá)式叫做關(guān)系表達(dá)式,VBA提供了9個(gè)關(guān)系運(yùn)算符。 =IsLikeBetween.And(4) 邏輯運(yùn)算符邏輯運(yùn)算也稱布爾運(yùn)算,除Not是單目運(yùn)算符外,其余均是雙目運(yùn)算符。由邏輯運(yùn)算符連接兩個(gè)或多個(gè)關(guān)系式,對(duì)操作數(shù)進(jìn)行邏輯運(yùn)算,結(jié)果是邏輯值True或False。VBA的邏輯運(yùn)算符有6種。 2. 對(duì)象運(yùn)算(標(biāo)識(shí))符
29、對(duì)象運(yùn)算符(標(biāo)識(shí)符)有“!” 和“.” 兩種,使用對(duì)象運(yùn)算符指示隨后將出現(xiàn)的項(xiàng)目類型。(1) !運(yùn)算符(2) . 運(yùn)算符 3. 表達(dá)式(1) 表達(dá)式的組成表達(dá)式由字面值、常量、變量、運(yùn)算符、函數(shù)、標(biāo)識(shí)符、邏輯量和括號(hào)等按一定的規(guī)則組成,表達(dá)式通過運(yùn)算得出結(jié)果,運(yùn)算結(jié)果的類型由操作數(shù)的數(shù)據(jù)和運(yùn)算符共同決定。(2) 表達(dá)式的書寫規(guī)則(3) 算術(shù)運(yùn)算表達(dá)式的結(jié)果類型(4) 運(yùn)算優(yōu)先級(jí)10.4.6 函數(shù)函數(shù)的主要特點(diǎn)是,具有參數(shù)(也有少量函數(shù)不需要參數(shù))并返回值。其使用形式為:函數(shù)名(,參數(shù)3 ,參數(shù)4 )其中,參數(shù)可以是常量、變量或表達(dá)式,可以有一個(gè)或多個(gè)。每個(gè)函數(shù)被調(diào)用時(shí),都會(huì)有一個(gè)返回值,需特別
30、說明的是:根據(jù)函數(shù)的不同,參數(shù)與返回值都有特定的數(shù)據(jù)類型與之對(duì)應(yīng)。內(nèi)置函數(shù)按其功能可分為數(shù)學(xué)函數(shù)、轉(zhuǎn)換函數(shù)、字符串函數(shù)、日期函數(shù)和格式輸出函數(shù)。1. 數(shù)學(xué)函數(shù)數(shù)學(xué)函數(shù)與數(shù)學(xué)中的定義一致,完成數(shù)學(xué)計(jì)算功能。2. 轉(zhuǎn)換函數(shù)轉(zhuǎn)換函數(shù)主要實(shí)現(xiàn)數(shù)據(jù)類型的轉(zhuǎn)換,有些轉(zhuǎn)換函數(shù)能得到特定的值,如Asc()和 Space() 。3. 字符串函數(shù)字符串函數(shù)用來處理字符型變量或字符串表達(dá)式。4. 日期/時(shí)間函數(shù)日期/時(shí)間函數(shù)用于處理日期和時(shí)間型表達(dá)式或變量。 5. 格式輸出函數(shù)格式輸出函數(shù)的作用是:使數(shù)值、日期或字符串按指定的格式輸出(顯示或打印),一般用于Print方法中,這里主要介紹Format()函數(shù)。函數(shù)格
31、式:Format(表達(dá)式,格式符)。其中:表達(dá)式為要格式化的數(shù)值、日期或字符串表達(dá)式。格式符指定格式的符號(hào)代碼,在使用時(shí)要加引號(hào)。格式符分為3類:數(shù)值格式符、日期格式符和字符串格式符。(1) 數(shù)值格式符(2) 日期/時(shí)間格式符(3) 字符串格式化 6. 其他常用函數(shù)(1) InputBox()函數(shù)用于VBA與用戶之間的人機(jī)交互。InputBox()函數(shù)打開一個(gè)對(duì)話框,顯示相應(yīng)提示信息并等待用戶輸入內(nèi)容。InputBox(prompt,title,default,xpos,ypos,helpfile,context)(2) Msgbox()函數(shù)與Msgbox過程在VBA中可以函數(shù)的形式調(diào)用,格式
32、為:Msgbox(prompt,buttons ,title ,helpfile,context)Msgbox用于打開一個(gè)信息框,等待用戶單擊按鈕并返回一整數(shù)值,告訴系統(tǒng)用戶單擊了哪一個(gè)按鈕,若不需要返回值,可直接作為命令語句使用,顯示提示信息。(3) IIf()函數(shù)該函數(shù)可用于選擇操作。調(diào)用格式為:IIf(條件表達(dá)式,表達(dá)式1,表達(dá)式2)功能:函數(shù)根據(jù)“條件表達(dá)式”的值來決定返回值。如果“條件表達(dá)式”的值為“真”(True),函數(shù)返回“表達(dá)式1”的值;“條件表達(dá)式”的值為“假”(Flase), 函數(shù)返回“表達(dá)式2”的值。例如:=IIf(cj =60, 及格,不及格)(4) Switch()函
33、數(shù)該函數(shù)可用于多條件選擇操作。調(diào)用格式為:Switch (條件式1,表達(dá)式1, 條件式2, 表達(dá)式2, 條件式n, 表達(dá)式n)功能:函數(shù)分別根據(jù)“條件式1”、 “條件式2”直至 “條件式n”的值來決定返回值。條件式是由左至右進(jìn)行計(jì)算判斷的,函數(shù)將返回第一個(gè)條件式為True的對(duì)應(yīng)“表達(dá)式”的值。若函數(shù)中條件式與表達(dá)式不配對(duì),則發(fā)生運(yùn)行錯(cuò)誤;若有多個(gè)條件式為真(True),函數(shù)返回為真的第一個(gè)條件式后的“表達(dá)式”的值。例如:y=switch(x0,sqr(x)(5) Choose()函數(shù)調(diào)用格式為:Choose (數(shù)值表達(dá)式,表達(dá)式1,表達(dá)式2,表達(dá)式n)功能:函數(shù)根據(jù)“數(shù)值表達(dá)式”的值決定返回值
34、。若不考慮變量的小數(shù)的定義位數(shù),當(dāng)“數(shù)值表達(dá)式” 值大于1、小于2時(shí),函數(shù)將返回“表達(dá)式1”的值;值大于2、小于3,返回“表達(dá)式2”的值,依此類推。“數(shù)值表達(dá)式”的值應(yīng)在1n之間,否則,函數(shù)返回Null值。例如,在數(shù)學(xué)函數(shù)計(jì)算中,根據(jù)變量x的值來計(jì)算y的值。y=Choose(x,x+1,m,m+n,10)(6) Nz() 函數(shù)語法格式為:Nz(表達(dá)式或字段屬性值, 規(guī)定值Nz 函數(shù)對(duì)可能包含 Null 值的表達(dá)式是很有用的。要使表達(dá)式即使在包含 Null 值時(shí)也能計(jì)算得到一個(gè)非 Null 值,可使用 Nz 函數(shù)來返回 0、空字符串或一個(gè)自定義的返回值。例如,表達(dá)式: 6 + varx ,在 V
35、ariant類型變量 varx是 Null 時(shí),返回一個(gè) Null 值。如使用表達(dá)式:6 + Nz(varX) ,結(jié)果為 6 。Nz 函數(shù)亦可作為IIf函數(shù)的替代函數(shù)。(7) DCount()函數(shù)Dcount 函數(shù)用于返回指定記錄集中的記錄數(shù)。語法格式為:DCount(表達(dá)式, 記錄集, 條件式)參數(shù)說明:表達(dá)式:用于標(biāo)識(shí)要統(tǒng)計(jì)其記錄數(shù)的字段。記錄集:字符串表達(dá)式,可以是表的名稱或查詢的名稱。條件式:可選的字符串表達(dá)式,用于限制 DCount 函數(shù)執(zhí)行的數(shù)據(jù)范圍。等價(jià)于 SQL 表達(dá)式中的 WHERE 子句,只是不含 WHERE 關(guān)鍵字。如果忽略條件式,DCount 函數(shù)在整個(gè)記錄集內(nèi)計(jì)算。(
36、8) DAvg()函數(shù)DAvg 函數(shù)用于計(jì)算指定記錄集中某個(gè)字段列數(shù)據(jù)的平均值??梢栽赩BA 代碼、宏、查詢表達(dá)式或計(jì)算控件中使用。語法格式為:DAvg(表達(dá)式, 記錄集, 條件式)參數(shù)說明:(同Dcount() 函數(shù)參數(shù))。使用說明:包含 Null 值的記錄不能在平均值的計(jì)算中使用。在查詢的“準(zhǔn)則”行中可以使用 DAvg 函數(shù)來指定準(zhǔn)則。(9) DSum()函數(shù)DSum 函數(shù)用于計(jì)算指定記錄集中某個(gè)字段列數(shù)據(jù)的總和。語法格式為:DSum(表達(dá)式, 記錄集, 條件式)參數(shù)說明:(同Dcount() 函數(shù)參數(shù))。使用說明:如果沒有記錄滿足“條件式”參數(shù)或者記錄集中不包含任何記錄,DSum 函數(shù)將
37、返回 Null。在查詢的“準(zhǔn)則”行、查詢中的計(jì)算字段表達(dá)式中或更新查詢的“更新到”行中均可以使用 DSum 函數(shù)指定準(zhǔn)則??梢栽诳傆?jì)查詢的計(jì)算字段表達(dá)式中使用 DSum 或Sum函數(shù)。(10) DLookup()函數(shù)DLookup 函數(shù)用于從指定記錄集檢索特定字段的值。語法格式為:DLookup(表達(dá)式, 記錄集, 條件式)參數(shù)說明:(同Dcount() 函數(shù)參數(shù))。使用說明: DLookup 函數(shù)將基于表達(dá)式中指定的信息返回單個(gè)字段的值。如果沒有滿足條件的記錄,或者記錄集中沒有記錄,DLookup 函數(shù)將返回 Null。如果有多個(gè)字段滿足條件式,DLookup 函數(shù)將返回第一個(gè)匹配字段所對(duì)應(yīng)
38、的檢索字段值。10.4.7 程序語句VBA中的語句是能夠完成某項(xiàng)操作的一條完整命令,程序由大量的命令語句構(gòu)成。命令語句可以包含關(guān)鍵字、函數(shù)、運(yùn)算符、變量、常數(shù)以及表達(dá)式。VBA語句一般分為3種類型:(1) 聲明語句:用來為變量、常量、程序或過程命名,指定數(shù)據(jù)類型。(2) 賦值語句:用來為變量指定一個(gè)值或表達(dá)式。(3) 執(zhí)行語句:用來調(diào)用過程、執(zhí)行一個(gè)方法或函數(shù),可以循環(huán)或從代碼塊中分支執(zhí)行,實(shí)現(xiàn)各種流程控制。 1.程序語句書寫規(guī)則(1) 不區(qū)分字母的大小(2) 語句書寫規(guī)定(3) 注釋語句 2. 聲明語句通過聲明語句可以命名和定義過程、變量、數(shù)組或常量。當(dāng)聲明一個(gè)過程、變量或數(shù)組時(shí),也同時(shí)定義
39、了它們的作用范圍,此范圍取決于聲明位置(子過程、模塊或全局)和使用什么關(guān)鍵字(Dim、Public、Static或Global等)來聲明它。 3. 賦值語句賦值語句用于指定一個(gè)值或表達(dá)式給變量或常量。使用格式為:Let 變量名= 值或表達(dá)式其中:Let為可選項(xiàng),在使用賦值語句時(shí),一般省略。關(guān)于使用賦值語句的說明:(1) 當(dāng)數(shù)值表達(dá)式與變量精度不同時(shí),系統(tǒng)強(qiáng)制轉(zhuǎn)換成變量的精度。(2) 當(dāng)表達(dá)式是數(shù)字字符串,變量為數(shù)值型,系統(tǒng)自動(dòng)轉(zhuǎn)換成數(shù)值類型再賦值,若表達(dá)式含有非數(shù)字字符或空串時(shí),賦值出錯(cuò)。(3) 不能在一個(gè)賦值語句中,同時(shí)給多個(gè)變量賦值。(4) 實(shí)現(xiàn)累加作用的賦值語句。 4. 標(biāo)號(hào)和GoTo語
40、句GoTo語句用于在程序執(zhí)行過程中實(shí)現(xiàn)無條件轉(zhuǎn)移。格式為:GoTo 標(biāo)號(hào) 5. 執(zhí)行語句執(zhí)行語句是程序的主體,程序功能靠執(zhí)行語句來實(shí)現(xiàn)。語句的執(zhí)行方式按流程可以分為順序結(jié)構(gòu)、條件判斷結(jié)構(gòu)和循環(huán)結(jié)構(gòu)三種。(1) If條件語句在VBA代碼中使用If條件語句,可根據(jù)條件表達(dá)式的值來選擇程序執(zhí)行哪些語句。If條件語句的主要格式有:單分支、雙分支和多分支等。單分支結(jié)構(gòu)語句格式為:If Then End If 或 If Then End If功能:當(dāng)條件表達(dá)式為真時(shí),執(zhí)行Then后面的語句塊或語句,否則不做任何操作。說明:語句塊可以是一條或多條語句。在使用右邊的單行簡單格式時(shí),Then 后只能是一條語句,
41、或者是多條語句用冒號(hào)分隔,但必須與If 語句在一行上。雙分支結(jié)構(gòu)語句格式為:If Then ElseEnd If或 If Then Else End If功能:當(dāng)條件表達(dá)式為真時(shí),執(zhí)行Then后面的語句塊1或語句1,否則執(zhí)行Else后面的語句塊2或語句2。(2)多分支Select Case語句當(dāng)條件選項(xiàng)較多時(shí),使用If語句嵌套來實(shí)現(xiàn),程序的結(jié)構(gòu)會(huì)變得很復(fù)雜,不利于程序的閱讀與調(diào)試,此時(shí),用Select Case語句會(huì)使程序結(jié)構(gòu)更清晰。Select Case語句格式為:Select Case 變量或表達(dá)式Case 表達(dá)式1Case 表達(dá)式2Case ElseEnd Select(3) 循環(huán)語句 循環(huán)結(jié)構(gòu)可以重復(fù)執(zhí)行一個(gè)或多個(gè)語句。也可以定義一個(gè)條件,使得循環(huán)語句的執(zhí)行變得有條件。 DoLoop循環(huán)語句語法格式為:Do While 條件表達(dá)式 Exit Do Loop 或 Do Until 條件表達(dá)式 Exit Do Loop功能:Do While循環(huán)語句:當(dāng)條件表達(dá)式結(jié)果為真時(shí),執(zhí)行循環(huán)體,直到條件表達(dá)式結(jié)果為假或執(zhí)行到Exit Do語句而退出循環(huán)體。Do Until循環(huán)語句:當(dāng)條件表達(dá)式結(jié)果為假時(shí),執(zhí)行循環(huán)體,直到條件表達(dá)式結(jié)果為真或執(zhí)行到Exit Do語句而退出循環(huán)體。 ForNext循環(huán)語句用于循環(huán)次數(shù)已知的循環(huán)操作。語句格式為:For 循環(huán)變
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 股東間股權(quán)轉(zhuǎn)讓協(xié)議
- 月嫂家政服務(wù)合同
- 廣告位租賃的合同
- 設(shè)備維護(hù)服務(wù)合同
- 停車車位租賃合同
- 模具鋼材采購合同
- 一兒一女夫妻離婚協(xié)議書
- 2025年日照貨運(yùn)從業(yè)資格證模擬考試駕考
- 2025年德州貨運(yùn)從業(yè)資格證模擬考試下載安裝
- 電梯管理方維修方及業(yè)主方三方合同(2篇)
- 14S501-1 球墨鑄鐵單層井蓋及踏步施工
- YB 4022-1991耐火泥漿荷重軟化溫度試驗(yàn)方法(示差-升溫法)
- 胸腔積液護(hù)理查房-范本模板
- 水土保持方案中沉沙池的布設(shè)技術(shù)
- 安全生產(chǎn)技術(shù)規(guī)范 第25部分:城鎮(zhèn)天然氣經(jīng)營企業(yè)DB50-T 867.25-2021
- 現(xiàn)代企業(yè)管理 (全套完整課件)
- 走進(jìn)本土項(xiàng)目化設(shè)計(jì)-讀《PBL項(xiàng)目化學(xué)習(xí)設(shè)計(jì)》有感
- 《網(wǎng)店運(yùn)營與管理》整本書電子教案全套教學(xué)教案
- 教師信息技術(shù)能力提升培訓(xùn)課件希沃的課件
- 高端公寓住宅項(xiàng)目營銷策劃方案(項(xiàng)目定位 發(fā)展建議)
- 執(zhí)業(yè)獸醫(yī)師聘用協(xié)議(合同)書
評(píng)論
0/150
提交評(píng)論