VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)_第1頁(yè)
VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)_第2頁(yè)
VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)_第3頁(yè)
VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)_第4頁(yè)
VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)_第5頁(yè)
已閱讀5頁(yè),還剩91頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)本章要點(diǎn):熟悉VBA編程環(huán)境掌握VBA語(yǔ)法掌握VBA的流程控制結(jié)構(gòu)VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.1 VBA編程環(huán)境認(rèn)識(shí)VBAVisual Basic for Application與VB開(kāi)發(fā)工具很相似,包括各種主要的語(yǔ)法結(jié)構(gòu)、函數(shù)命令等。與VB的主要區(qū)別是VBA主要面向Office辦公軟件開(kāi)發(fā)工具(增強(qiáng)Word、Excel等軟件的自動(dòng)化能力),提供了很多VB中沒(méi)有的函數(shù)和對(duì)象,這些對(duì)象都是針對(duì)Office應(yīng)用的。宏的每個(gè)基本操作在VBA中都有相應(yīng)的等效語(yǔ)句。VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.1 VBA編程環(huán)境VBA編程

2、環(huán)境:VBE窗口VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.1 VBA編程環(huán)境Access 2003數(shù)據(jù)庫(kù)中包含的程序模塊可以分為兩種類型:獨(dú)立程序模塊綁定型程序模塊VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.1 VBA編程環(huán)境綁定性程序模塊是指包含在窗體、報(bào)表、頁(yè)等數(shù)據(jù)庫(kù)基本對(duì)象之中的事件處理過(guò)程,這樣的程序模塊僅在所屬對(duì)象處于活動(dòng)狀態(tài)下有效。也稱類模塊。作用范圍局限在所屬的窗體和報(bào)表內(nèi)部,具有局部特性。VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.1 VBA編程環(huán)境綁定模塊代碼設(shè)計(jì)步驟:選中控件的對(duì)應(yīng)事件選事件過(guò)程:VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.1 VBA編程環(huán)境綁定模塊代碼設(shè)計(jì)步驟2:選中事件過(guò)程后

3、點(diǎn) 按鈕。VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.1 VBA編程環(huán)境編輯獨(dú)立的程序模塊獨(dú)立程序模塊是指Access2003數(shù)據(jù)庫(kù)中的“模塊”對(duì)象。這些模塊對(duì)象可以在數(shù)據(jù)庫(kù)中被任一個(gè)對(duì)象所調(diào)用。也稱為標(biāo)準(zhǔn)模塊。一般用于存放公共過(guò)程,不如其他任何Access對(duì)象相關(guān)聯(lián)。通常為整個(gè)應(yīng)用系統(tǒng)設(shè)置全局變量或通用過(guò)程,供其他窗體或報(bào)表等數(shù)據(jù)庫(kù)對(duì)象在類模塊中使用或調(diào)用。標(biāo)準(zhǔn)模塊中的公共變量和公共過(guò)程具有全局性,其作用范圍為整個(gè)應(yīng)用系統(tǒng)。VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.1 VBA編程環(huán)境標(biāo)準(zhǔn)模塊的創(chuàng)建步驟:1.選擇”模塊”對(duì)象,點(diǎn)“新建”VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.1 VBA編程環(huán)境標(biāo)準(zhǔn)模塊的創(chuàng)

4、建步驟:2.標(biāo)準(zhǔn)模塊界面VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.1 VBA編程環(huán)境兩種模塊:VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.1 VBA編程環(huán)境VBE窗口的組成VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.1 VBA編程環(huán)境主要按鈕介紹:視圖切換:從VBE視圖切換到Access數(shù)據(jù)庫(kù)對(duì)象視圖。插入模塊:用于插入新模塊對(duì)象,并置新模塊對(duì)象為操作目標(biāo)。運(yùn)行:執(zhí)行模塊程序。中斷:中止正在運(yùn)行的程序,進(jìn)入設(shè)計(jì)模式。重新設(shè)置:中止程序設(shè)計(jì)模式:在設(shè)計(jì)模式和非設(shè)計(jì)模式之間切換。VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.1 VBA編程環(huán)境主要按鈕的功能:工程資源管理器:選中當(dāng)前程序模塊。VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)

5、構(gòu)10.1 VBA編程環(huán)境屬性窗口:VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.1 VBA編程環(huán)境對(duì)象瀏覽器:VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.1 VBA編程環(huán)境創(chuàng)建模塊添加過(guò)程VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.2 模塊基礎(chǔ)Sub過(guò)程Public|Private Static Sub 子過(guò)程(形參) As 數(shù)據(jù)類型子過(guò)程語(yǔ)句Exit SubEnd SubPublic可以使該過(guò)程能被所有模塊的所有其他過(guò)程調(diào)用。Private可以使該過(guò)程只能被同一模塊的其他過(guò)程調(diào)用。在一個(gè)過(guò)程中也可以調(diào)用其他子過(guò)程或打開(kāi)窗體等VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.2 模塊基礎(chǔ)子過(guò)程的定義:Public Sub

6、ccc()DoCmd.OpenForm LoginEnd Sub子過(guò)程的調(diào)用:Call 子過(guò)程(實(shí)參)或者子過(guò)程(實(shí)參)Call ccc()Ccc()VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.2 模塊基礎(chǔ)Function函數(shù)Public|Private Static Function 函數(shù)過(guò)程名(形參)AS 數(shù)據(jù)類型函數(shù)過(guò)程語(yǔ)句函數(shù)過(guò)程名表達(dá)式Exit FunctionEnd Function和Sub過(guò)程很類似,但通常都具有返回值。Static定義靜態(tài)函數(shù),函數(shù)中定義的值一直保存。As 數(shù)據(jù)類型,定義函數(shù)返回值類型。VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.2 模塊基礎(chǔ)函數(shù)定義Private Func

7、tion ddd(r As Double) As Integer Dim pi As Double ddd = pi * r * rEnd FunctionVBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.2 模塊基礎(chǔ)窗體按鈕事件中調(diào)用模塊過(guò)程或函數(shù):用表達(dá)式生成器選擇VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.2 模塊基礎(chǔ)表達(dá)式生成器選擇標(biāo)準(zhǔn)模塊函數(shù)方法:VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.3 VBA面向?qū)ο缶幊袒A(chǔ)屬性與方法的引用方式:對(duì)象.屬性名,對(duì)象.方法名這里的對(duì)象一般采用:父對(duì)象類名!子對(duì)象名對(duì)于窗體上的控件可以用:me.xx 方式來(lái)引用,me代表當(dāng)前窗體。例如訪問(wèn)窗體上標(biāo)簽:Form_模塊應(yīng)用!

8、Lb1.Caption“你好啊”Me.lb1.caption“你好啊”標(biāo)準(zhǔn)模塊只能用:父對(duì)象類名!子對(duì)象名,而窗體模塊兩種形式都可以使用,推薦使用me.形式。VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.3 VBA面向?qū)ο缶幊袒A(chǔ)訪問(wèn)窗體文本框:訪問(wèn)或設(shè)置文本框中的字符串讀:msgbox()賦值:“你好啊”設(shè)置或者訪問(wèn)文本框被選中內(nèi)容Me.Text3.SelStart = 2Me.Text3.SelLength = 2MsgBox (Me.Text3.SelText)VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.3 VBA面向?qū)ο缶幊袒A(chǔ)設(shè)置文本框的輸入掩碼:Me.Text3.InputMask = Pass

9、word“設(shè)置文本框的可用性:鎖定控件,即只讀:Me.Text3.Locked = True禁用控件:Me.Text3.Enabled = true設(shè)置文本框焦點(diǎn):DoCmd.GoToControl (Text3)VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.3 VBA面向?qū)ο缶幊袒A(chǔ)訪問(wèn)切換控件(Toggle)程序判斷是否按下讀/賦值:值為:true(1),false(0)該控件較少被應(yīng)用到VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.3 VBA面向?qū)ο缶幊袒A(chǔ)單選控件(Option)程序判斷選中與否讀/賦值:me.Option1.value=true值為:true(1),false(0)復(fù)選框(Check

10、)程序判斷選中與否讀/賦值:值為:true(1),false(0)VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.3 VBA面向?qū)ο缶幊袒A(chǔ)組合框(Combo)程序訪問(wèn)選中的內(nèi)容、選中的序號(hào)、遍歷整個(gè)下拉列表,以及增加和刪除內(nèi)容。重要屬性:MsgBox (Me.Combo13.ListIndex),返回組合框被選項(xiàng)的序號(hào),從1開(kāi)始;沒(méi)有被選擇的初值為1。MsgBox (Me.Combo13.Value),返回組合框被選項(xiàng)的值,必須有內(nèi)容被選擇后才能使用。MsgBox (Me.Combo13.ListCount),返回組合框中選項(xiàng)數(shù)量,可以用它實(shí)現(xiàn)對(duì)組合框數(shù)據(jù)的遍歷。VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.

11、3 VBA面向?qū)ο缶幊袒A(chǔ)組合框下拉列表值集合:me bo13.ItemData(i),返回i序號(hào)位置列表項(xiàng)值。組合框特色屬性:手動(dòng)輸入的文本:,可以結(jié)合按鍵事件,將手動(dòng)輸入的內(nèi)容增加到組合框中。這個(gè)屬性是列表框所沒(méi)有的。組合框重要方法:Me.Combo13.AddItem (“ccc”),對(duì)組合框增加新下拉項(xiàng),參數(shù)是下拉項(xiàng)的值,即顯示出的字符串。Me.Combo13.RemoveItem (3),刪除組合框中指定序號(hào)位置的下拉項(xiàng)。VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.3 VBA面向?qū)ο缶幊袒A(chǔ)列表框(List)除了外觀形式外,常用屬性方法與組合框大體類似。特色屬性:多重選擇屬性:,值是0,1

12、,2,但是運(yùn)行只讀屬性,只能在運(yùn)行之前設(shè)置。判斷列表項(xiàng)是否被選中屬性:Me.List18.Selected(i),返回對(duì)應(yīng)序號(hào)的列表值是否被選中。VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.3 VBA面向?qū)ο缶幊袒A(chǔ)圖片框(image)一般選擇鏈接形式顯示圖片,圖片顯示用縮放。動(dòng)態(tài)更改圖片:Me.Image22.Picture = “E:教學(xué)資源1.jpg”,要給出圖片的路徑。VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.3 VBA面向?qū)ο缶幊袒A(chǔ)分頁(yè)控件(選項(xiàng)卡控件)重要屬性:Pages屬性,主要通過(guò)它指定新當(dāng)前頁(yè),修改頁(yè)的標(biāo)題、隱藏和顯示指定頁(yè)。Me.xxk.Pages.Item(2).SetFocus

13、Me.xxk.Pages.Item(1).Caption = ccMe.xxk.Pages.Item(0).Visible = FalseVBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.3 VBA面向?qū)ο缶幊袒A(chǔ)Access應(yīng)用程序內(nèi)置對(duì)象Application對(duì)象,包含大量的屬性、方法和子對(duì)象,部分全局性操作通過(guò)它完成。調(diào)用時(shí)先輸入“Application.”即可顯示其包含的各個(gè)子內(nèi)容。Docmd對(duì)象,是Application的一個(gè)子對(duì)象。主要功能是通過(guò)調(diào)用Access內(nèi)置的方法,在VBA中實(shí)現(xiàn)特定的操作。調(diào)用時(shí)先輸入“Docmd.”即可以選用其下屬子屬性和方法。這兩個(gè)對(duì)象的常用方法部分可以參考教材1

14、25頁(yè)起的內(nèi)容。該對(duì)象后續(xù)內(nèi)容將大量應(yīng)用。VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程基礎(chǔ)VBA程序書寫規(guī)范不區(qū)分大小寫,但是標(biāo)點(diǎn)符號(hào)、括號(hào)必須是半角英文格式。一個(gè)變量或者函數(shù)名第一次定義或者使用后,其后程序?qū)⒆詣?dòng)依照第一次定義(或使用)除格式顯示。語(yǔ)句書寫,一般一句一行,如果一行寫不下,可以在要續(xù)行的行尾用續(xù)行符(空格+”_”),然后在下一行續(xù)寫語(yǔ)句代碼。注釋語(yǔ)句:用Rem開(kāi)頭或者” “開(kāi)頭一行表示注釋。VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程基礎(chǔ)中的基本數(shù)據(jù)類型字節(jié)型,關(guān)鍵字Byte,占1個(gè)字節(jié),在0255內(nèi)取值。主要用于存儲(chǔ)一些小型整數(shù)。Dim i As ByteDi

15、m x, y, z As Bytei=100X=I沒(méi)有表示符號(hào)VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程基礎(chǔ)邏輯型,關(guān)鍵字Boolean,占2字節(jié),取True,F(xiàn)alse。0為false,非0為True,如-1。主要用于存儲(chǔ)一些邏輯運(yùn)算結(jié)果Dim x as booleanX=trueX=0X=1000X=-199常量沒(méi)有特殊表示符號(hào)VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程基礎(chǔ)整型,關(guān)鍵字Integer,占2字節(jié),取3276832767之間。最常用的整型。Dim I as integeri=100i=1+1其常量用表示,如99。VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VB

16、A編程基礎(chǔ)長(zhǎng)整型,關(guān)鍵字Long,占4字節(jié),取值范圍在正負(fù)20億之間取值。主要用于存儲(chǔ)特別大的整型數(shù)值。Dim x as longX=19999其常量用&表示,如99&等。VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程基礎(chǔ)單精度型,關(guān)鍵字Single,占4字節(jié),在正負(fù)10-45之間取值。Dim salary as singleSalary=3000保存小數(shù)其常量用!表示,如!VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程基礎(chǔ)雙精度數(shù),關(guān)鍵字Double,占8個(gè)字節(jié),比單精度數(shù)更大的表達(dá)能力。Dim distance as DoubleDistance=300000最常用的浮點(diǎn)數(shù)表示

17、類型??梢约嫒菟衅渌麛?shù)值類型。其常量用表示,如VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程基礎(chǔ)貨幣型關(guān)鍵字:Currency,占8字節(jié),15位整數(shù),4位有效小數(shù)。Dim money as Currency其常量標(biāo)志為,如199。VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程基礎(chǔ)日期型(包括時(shí)間,實(shí)際是日期時(shí)間類型)關(guān)鍵字Data,占8字節(jié)Dim today as DateToday=Now 得到當(dāng)前日期和時(shí)間Today=Date 得到當(dāng)前日期TodayTime 得到當(dāng)前時(shí)間日期常量必須用#括起來(lái),如#10-11-2006#VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程基礎(chǔ)

18、對(duì)象型關(guān)鍵字:Object,占4個(gè)字節(jié),可以指向任何對(duì)象。一般不生成這種通用對(duì)象類型,而是根據(jù)需要生成專用的對(duì)象。VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程基礎(chǔ)字符型關(guān)鍵字:String,最多可以存放64K字符。常量表示字符$,如“hello!”$字符和字符串一樣表示方式,如”A“,”AB”,只有一個(gè)字符的字符串就可以作為字符。這點(diǎn)和C+不同。長(zhǎng)度為0的字符串為空串。VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程基礎(chǔ)變長(zhǎng)類型類型關(guān)鍵字:Varient,可以存儲(chǔ)任何類型。默認(rèn)情況下,沒(méi)有定義數(shù)據(jù)類型的變量都屬于Varient類型。函數(shù)沒(méi)有定義返回值類型時(shí),默認(rèn)也是Varient類

19、型。VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程基礎(chǔ)用戶自定義類型如結(jié)構(gòu)Private|Public Type 數(shù)據(jù)類型名元素1 As 數(shù)據(jù)類型元素2 As 數(shù)據(jù)類型End Type然后Dim x as 自定義類型名X.元素1.VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程基礎(chǔ)變量、常量、數(shù)組VBA中使用變量可以不需要說(shuō)明就直接使用。A100也可間接顯式定義A100,是整型的標(biāo)志,所以A為整型。最常用就是dim語(yǔ)句定義。VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程基礎(chǔ)變量、常量、數(shù)組值常量100,100,True等等。常值變量Const PI固有常量系統(tǒng)已經(jīng)定義的環(huán)境常量

20、VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程基礎(chǔ)數(shù)組VBA中不允許隱式說(shuō)明數(shù)組,必須先定義后使用。Dim x(10) as integer,普通1維數(shù)組Dim y(-2 to 3) as integer,下標(biāo)2開(kāi)始的數(shù)組Dim z(3,5) as integer,2維數(shù)組Dim w() as integer ,動(dòng)態(tài)1維數(shù)組。動(dòng)態(tài)數(shù)組可以反復(fù)使用Redim重新確定大小。如:Redim w(10),重新定義時(shí)可以用Preserve標(biāo)志保存原有值。Redim Preserver W(20),這樣前面10個(gè)值得以保留,否則原有數(shù)據(jù)全部丟失。Preserve不能改變維數(shù)。默認(rèn)情況下數(shù)組下標(biāo)從0開(kāi)

21、始,上標(biāo)n1。VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程基礎(chǔ)數(shù)據(jù)庫(kù)對(duì)象變量可以定義變量代表對(duì)應(yīng)數(shù)據(jù)庫(kù)對(duì)象上各種控件Dim myform as controlSet myform=Forms!Form_登錄!txtUsername(VB或VBA中Set的作用就是讓變量指定對(duì)象)VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程基礎(chǔ)運(yùn)算符與表達(dá)式一、算術(shù)運(yùn)算符運(yùn)算符名稱優(yōu)先級(jí)表達(dá)式例子指數(shù)運(yùn)算1XY-取負(fù)數(shù)2X/浮點(diǎn)除法3X/Y整除4XYMod求余數(shù)5X MOD Y其他還有(加)、-(減)、*(乘)VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程基礎(chǔ)字符運(yùn)算符,字符串連接符號(hào),將兩

22、個(gè)字符串連接成一個(gè)新字符串。&,將不同數(shù)據(jù)類型連接到字符串上。例如:“Access”2003“”Access“ & 2003“2+3” & “=“ & (2+3)VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程基礎(chǔ)關(guān)系運(yùn)算符運(yùn)算符運(yùn)算含義表達(dá)式例子結(jié)果Is對(duì)象引用比較A is nothingLike字符串匹配”ac“ like “*c”trueBetweenAnd介于某個(gè)范圍之間Between 10 and 90、=、=、=、VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程基礎(chǔ)邏輯運(yùn)算符Not,邏輯非,原來(lái)假結(jié)果為真。And,邏輯與,兩個(gè)結(jié)果都為真結(jié)果為真。Or,邏輯或,兩個(gè)之一為真結(jié)

23、果為真。Xor,異或,兩個(gè)表達(dá)式不相同結(jié)果時(shí)真。Eqv,等價(jià),兩個(gè)表達(dá)式相同結(jié)果時(shí),結(jié)果真。Imp,蘊(yùn)涵,當(dāng)?shù)谝粋€(gè)表達(dá)式為真,且第二個(gè)表達(dá)式為假,則值為假,否則為真。VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程基礎(chǔ)系統(tǒng)內(nèi)置函數(shù)內(nèi)置函數(shù)按功能可以分為:數(shù)學(xué)函數(shù)、字符函數(shù)、日期函數(shù)和格式輸出函數(shù)。數(shù)學(xué)函數(shù)Abs(數(shù)學(xué)表達(dá)式),返回?cái)?shù)值表達(dá)式的絕對(duì)值。Fix(數(shù)值表達(dá)式),返回?cái)?shù)值表達(dá)式的整數(shù)部分,若參數(shù)為負(fù)值,返回大于參數(shù)值的第一個(gè)負(fù)數(shù)。Int(數(shù)值表達(dá)式),返回?cái)?shù)值表達(dá)式的整數(shù)部分,若參數(shù)為負(fù)數(shù),返回小于等于參數(shù)值的第一個(gè)負(fù)數(shù)。Exp(數(shù)值表達(dá)式),求數(shù)值表達(dá)式為底的指數(shù)函數(shù)。VBA程序

24、設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程基礎(chǔ)數(shù)學(xué)函數(shù)Log(數(shù)值表達(dá)式),以e為底的自然對(duì)數(shù)。Sqr(數(shù)值表達(dá)式),計(jì)算數(shù)值表達(dá)式的平方根。Sgn(數(shù)值表達(dá)式),返回一個(gè)Variant(Integer),指出參數(shù)的正負(fù)號(hào)。Round(數(shù)值表達(dá)式),對(duì)操作數(shù)四舍五入取整。Rnd(產(chǎn)生隨機(jī)數(shù)),產(chǎn)生01之間的數(shù)。VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程基礎(chǔ)轉(zhuǎn)換函數(shù)Asc(字符表達(dá)式),返回字符的Ascii碼。Chr(數(shù)值),Ascii值轉(zhuǎn)換成對(duì)應(yīng)字符。Lcase(字符串表達(dá)式),全部轉(zhuǎn)換為小寫。Ucase(字符串表達(dá)式),全部轉(zhuǎn)換為大寫。Str(數(shù)值表達(dá)式),將數(shù)值表達(dá)式轉(zhuǎn)換為字符串

25、。Val(字符串表達(dá)式),將數(shù)字字符串轉(zhuǎn)為數(shù)值型數(shù)據(jù)DateValue(字符串表達(dá)式),將字符串轉(zhuǎn)換為日期Hex(數(shù)值表達(dá)式),十進(jìn)制轉(zhuǎn)化成十六進(jìn)制。Space(數(shù)值表達(dá)式),返回指定長(zhǎng)度空格字符串。VBA中還有一些C開(kāi)頭的類型轉(zhuǎn)換函數(shù),Cint,Csng,CstrVBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程基礎(chǔ)字符串函數(shù)Instr(start,str1,str2,compare),字符串檢索函數(shù),檢索字符串Str2在字符串Str1中最早出現(xiàn)的位置,返回一整數(shù)。Start為數(shù)值式,可選參數(shù)。Compare是比較方式:0作二進(jìn)制比較,1作不區(qū)分大小寫的文本比較,2作基于數(shù)據(jù)庫(kù)中包含信息的

26、比較。如果Str1串長(zhǎng)度為0或Str2檢索不到,返回0;如果Str2串長(zhǎng)為0,返回Start的值。VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程基礎(chǔ)Left(字符串表達(dá)式或變量,N),從字符串左邊截取N個(gè)字符。如果N為0,返回長(zhǎng)度為零長(zhǎng)度字符串;如果N大于或等于字符串長(zhǎng)度,返回整個(gè)字符串。Right(字符串表達(dá)式或變量,N),從字符串右邊起截取N個(gè)字符。Mid(字符串表達(dá)式,N1,N2),從字符串左邊第N1個(gè)字符起截取N2個(gè)字符。VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程基礎(chǔ)Ltrim(字符串表達(dá)式或變量),刪除字符串的開(kāi)始字符。Rtrim(字符串表達(dá)式或變量),刪除字符串的尾

27、部空格字符。Trim(字符串表達(dá)式或變量),刪除字符串的開(kāi)始和尾部空格。VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程基礎(chǔ)Len(字符串表達(dá)式或變量),返回字符串的長(zhǎng)度。這里采用Unicode編碼處理方式,因此返回的是字符的數(shù)量。如“你好123!”返回6。對(duì)于數(shù)組變量,返回長(zhǎng)度是定義長(zhǎng)度。LenB(字符串表達(dá)式或變量),返回字符串所占字節(jié)數(shù)。一般是2倍Len結(jié)果VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程基礎(chǔ)日期/時(shí)間函數(shù)Date()或Date,返回當(dāng)前系統(tǒng)日期Time()或Time,返回當(dāng)前系統(tǒng)時(shí)間Now,返回當(dāng)前系統(tǒng)的日期和時(shí)間Year/Month/Day/Weekday(日

28、期表達(dá)式)Hour/Minute/Second(時(shí)間表達(dá)式)VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程基礎(chǔ)日期時(shí)間函數(shù)DateAdd(間隔目標(biāo),間隔值,日期表達(dá)式)DateDiff(間隔目標(biāo),日期1,日期2)DatePart(間隔目標(biāo),日期表達(dá)式)間隔目標(biāo):“yyyy”表示年,“q”季度,“m”月,“y”一年的天數(shù),“d”天,“w”一周的天數(shù),“ww”周,“h”小時(shí),“n”分鐘,“s”秒。DateSerial(表達(dá)式1,表達(dá)式2,表達(dá)式3),組合成一個(gè)日期。VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程基礎(chǔ)格式輸出函數(shù)Format(表達(dá)式,格式符)主要完成對(duì)數(shù)值、日期、字符串表

29、達(dá)式按特定的格式輸出。VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程基礎(chǔ)其他常用函數(shù)InputBox函數(shù)格式:InputBox(提示文字,標(biāo)題,默認(rèn)值)作用:出現(xiàn)一個(gè)輸入對(duì)話框,能獲得用戶的輸入信息。VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程基礎(chǔ)Msgbox格式:msgbox(提示文字,按鈕圖標(biāo),標(biāo)題)其中按鈕和圖標(biāo)參考教材263頁(yè)。作用:給用戶彈出一個(gè)對(duì)話框,進(jìn)行信息提示,能讓用戶對(duì)某些事件進(jìn)行判斷處理,能記錄用戶點(diǎn)擊的對(duì)話框按鈕。按鈕返回值參考263頁(yè)表格。它是VBA中最常用的系統(tǒng)函數(shù),系統(tǒng)中大量提示信息都是通過(guò)msgbox實(shí)現(xiàn)。VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 V

30、BA編程基礎(chǔ)IIF函數(shù)格式:IIF(條件表達(dá)式,表達(dá)式1,表達(dá)式2)作用:類似C+中?:運(yùn)算符,更具條件,在表達(dá)式1和表達(dá)式2中選擇一個(gè)作為返回值。條件為真返回前者,價(jià)返回后者。是IF。Else的簡(jiǎn)寫函數(shù)表現(xiàn)。VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程基礎(chǔ)Switch函數(shù)格式:Switch(條件1,表達(dá)式1,條件2,表達(dá)式2,.)作用:該函數(shù)用于多條件選擇,是Select多分支結(jié)構(gòu)的函數(shù)表現(xiàn)。從左向右判斷,直到一個(gè)條件成立為止,返回對(duì)應(yīng)條件后的表達(dá)式。如果所有條件都不成立,返回null,空值VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程基礎(chǔ)Choose()函數(shù)格式:Choose

31、(數(shù)值表達(dá)式,表達(dá)式1,表達(dá)式2,)作用:類似Switch函數(shù),不過(guò)這里沒(méi)有條件。數(shù)值表達(dá)式值充當(dāng)一個(gè)條件,如果它界于1,2間,返回表達(dá)式1,界于2,3間返回表達(dá)式2,依此類推。VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程基礎(chǔ)Nz()函數(shù)格式:Nz(表達(dá)式或字段樹(shù)型值,規(guī)定值)作用:如果表達(dá)式值為Null,則返回0、“”或者一個(gè)自定義的返回值。很有用的函數(shù),特別在數(shù)值運(yùn)算中。字符串運(yùn)算中,可以用“”拼接來(lái)消除null,Null & “”=“”相關(guān)函數(shù):IsNull(表達(dá)式)VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程基礎(chǔ)DCount()函數(shù)格式:DCount(表達(dá)式,記錄集合,

32、條件式)表達(dá)式:用戶標(biāo)識(shí)要統(tǒng)計(jì)其記錄數(shù)的字段。記錄集合:字符串表達(dá)式,可以是表的名稱或查詢的名稱條件式:用于限制DCount函數(shù)的數(shù)據(jù)范圍,類似Sql語(yǔ)句中的Where條件。作用:返回指定記錄集合中的記錄數(shù)。Me.Text1=Dcount(“xh”,”學(xué)生”,”xb=男”)可以在宏、VBA、查詢表達(dá)式或計(jì)算控件中應(yīng)用。VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程基礎(chǔ)DoAvg()用于計(jì)算指定記錄集合中某個(gè)字段列數(shù)據(jù)的平均值。Dsum()函數(shù)用于匯總指定記錄集合中某個(gè)字段列數(shù)據(jù)。Dlookup()函數(shù)從指定記錄集合檢索特定字段的值。非常有用的函數(shù),比如登陸驗(yàn)證等等場(chǎng)合。注意:以上3個(gè)函數(shù)

33、格式上類似DCount函數(shù),但在記錄集合沒(méi)有記錄或者沒(méi)有符合條件的記錄時(shí),返回Null。VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程基礎(chǔ)案例:登陸驗(yàn)證pwd1 = DLookup(口令, UserInfo, 用戶名= & UID & )If IsNull(PWD) ThenMsgBox (沒(méi)有這個(gè)用戶)ElseIf PWD = pwd1 ThenMsgBox 恭喜你登陸成功!ElseMsgBox 口令不正確End IfEnd IfVBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程基礎(chǔ)常用數(shù)據(jù)格式判斷函數(shù)isArray(變量),判斷變量是否為一個(gè)數(shù)組。IsDate (表達(dá)式),判斷變量

34、是否可以轉(zhuǎn)換為日期型。IsEmpty (變量),判斷變量是否是為空值。IsError (表達(dá)式),判斷表達(dá)式是否為一個(gè)錯(cuò)誤。IsNumeric (表達(dá)式),判斷表達(dá)式是否為數(shù)值。IsNull (表達(dá)式),判斷表達(dá)式是否為一個(gè)無(wú)效值null。IsObject (標(biāo)志符),判斷標(biāo)識(shí)符是否表示對(duì)象變量。VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程基礎(chǔ)程序流程控制單分支結(jié)構(gòu)多分支結(jié)構(gòu)For循環(huán)Do循環(huán)Do while循環(huán)VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程基礎(chǔ)單分支結(jié)構(gòu):IF語(yǔ)句在VBA中if語(yǔ)句有多種書寫形式,要求同學(xué)統(tǒng)一用標(biāo)準(zhǔn)格式:If 條件 then條件成立執(zhí)行的語(yǔ)句En

35、d if如果要同時(shí)處理?xiàng)l件不成立語(yǔ)句,可以加Else分支If 條件 thenElseEnd ifVBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程基礎(chǔ)If語(yǔ)句的每個(gè)執(zhí)行部分即可以是簡(jiǎn)單語(yǔ)句序列,也可以是其他流程控制結(jié)構(gòu),如果是if語(yǔ)句,就是if嵌套。If 條件1 thenIf 條件2 thenElseEnd ifElseIf 條件3 thenElseEnd ifEnd ifVBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程基礎(chǔ)If語(yǔ)句的靈活應(yīng)用:案例3個(gè)數(shù)中選擇最大值嵌套應(yīng)用平行應(yīng)用結(jié)論:盡量使用平行應(yīng)用,適當(dāng)使用簡(jiǎn)單嵌套,避免復(fù)雜嵌套。VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程

36、基礎(chǔ)多分支結(jié)構(gòu):Select Case語(yǔ)句使用Select Case分支結(jié)構(gòu)可以避免使用if語(yǔ)句復(fù)雜嵌套,提高程序的可讀性。格式:Select Case 變量或者表達(dá)式Case 表達(dá)式1語(yǔ)句塊1Case 表達(dá)式2語(yǔ)句塊2Case else語(yǔ)句塊n1End SelectVBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程基礎(chǔ)Select case 分支結(jié)構(gòu)說(shuō)明變量或表達(dá)式,可以是數(shù)值型或字符串型。Case 表達(dá)式與 Select Case 變量或表達(dá)式的類型必須相同。Case表達(dá)式可以是下列幾種格式:?jiǎn)我粩?shù)值或一行并列數(shù)值(用,隔開(kāi))用關(guān)鍵字to分割開(kāi)的兩個(gè)數(shù)值或表達(dá)式之間的范圍。用is關(guān)系運(yùn)算

37、符表達(dá)式可以是上面3個(gè)的復(fù)合使用VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程基礎(chǔ)For循環(huán),一般用于固定循環(huán)次數(shù)的循環(huán)場(chǎng)合格式:For 循環(huán)變量=初值 to 終值 step 步長(zhǎng)語(yǔ)句塊exit forNext 默認(rèn)下Step1,如果希望是其他內(nèi)容,就修改這個(gè)步長(zhǎng)其他方面類似C+,exit for 是中途結(jié)束循環(huán)。VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程基礎(chǔ)Doloop循環(huán)格式:Do語(yǔ)句塊Exit doloop特點(diǎn)是至少運(yùn)行一次的循環(huán),默認(rèn)下是無(wú)限循環(huán),需要使用exit do 結(jié)束循環(huán)??梢栽黾覹hile或者until組成有條件循環(huán)。兩者差異是while條件是開(kāi)始條件,unt

38、il 條件是結(jié)束條件。VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程基礎(chǔ)有條件do循環(huán)Do 語(yǔ)句塊exit doLoop while 條件表達(dá)式(until 條件表達(dá)式)這種循環(huán)也是至少執(zhí)行一次的循環(huán),一直到條件不成立或者中途exit do 退出為止。VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程基礎(chǔ)While或until條件也可以前置,實(shí)現(xiàn)先判斷在循環(huán)。Do while 條件表達(dá)式(until 條件表達(dá)式)語(yǔ)句塊exit doLoop通常使用do循環(huán)都是應(yīng)用這種類型循環(huán)。VBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.4 VBA編程基礎(chǔ)Until應(yīng)用sum = 0i = 1Do Until i 100sum = sum + ii = i + 1LoopWhile應(yīng)用sum = 0i = 1Do Until i = 100sum = sum + ii = i + 1LoopVBA程序設(shè)計(jì)基礎(chǔ)和流程控制結(jié)構(gòu)10.5 過(guò)程調(diào)用與參數(shù)傳遞函數(shù)調(diào)用與調(diào)用標(biāo)準(zhǔn)函數(shù)格式相同:函數(shù)名(實(shí)參表)過(guò)程調(diào)用Call 過(guò)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論