版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第 九 章模塊與VBA程序設(shè)計(jì)【本章主要掌握內(nèi)容】模塊的基本概念及其創(chuàng)建VBA中的數(shù)據(jù)類型常量、變量與數(shù)組VBA中的運(yùn)算符、表達(dá)式和函數(shù)VBA流程控制語句VBA的數(shù)據(jù)庫編程VBA(Visual Basic for Application)是Visual Basic語言在Office編程中的應(yīng)用。VBA就是用來創(chuàng)建Access模塊對象的編程語言。第 一 節(jié)模塊的基本概念模塊是以VBA語言為基礎(chǔ)編寫的,將一個或多個過程(子過程或函數(shù)過程)作為一個單元進(jìn)行保存的集合。模塊中的每個過程實(shí)現(xiàn)各自的特定功能。利用模塊可以將各種數(shù)據(jù)庫對象連接起來,構(gòu)成一個完整的系統(tǒng)。在Access中,模塊分為兩種類型: 類
2、模塊 標(biāo)準(zhǔn)模塊一、類模塊類模塊是依附于某一窗體或報(bào)表而存在的模塊。窗體和報(bào)表中含有對象,每個對象都有自己固有的事件過程,以響應(yīng)窗體或報(bào)表中的事件。為窗體或報(bào)表創(chuàng)建第一個事件過程時(shí),系統(tǒng)會自動創(chuàng)建與之關(guān)聯(lián)的窗體或報(bào)表模塊。在窗體或報(bào)表的設(shè)計(jì)視圖下,可以單擊工具欄中的【代碼】按鈕進(jìn)入代碼窗口。已經(jīng)具有事件過程的事件名稱用黑色粗體表示。窗體或報(bào)表中模塊的作用范圍僅局限于其所屬的窗體或報(bào)表的內(nèi)部,具有局部特征。二、標(biāo)準(zhǔn)模塊標(biāo)準(zhǔn)模塊是不與任何對象相關(guān)聯(lián)的通用過程,這些過程可在數(shù)據(jù)庫中的任何位置直接調(diào)用執(zhí)行。標(biāo)準(zhǔn)模塊一般用于存放公共過程(子過程和函數(shù)過程),與其它任何Access對象不相關(guān)聯(lián)。在Acces
3、s系統(tǒng)中,通過模塊對象創(chuàng)建代碼的過程就是標(biāo)準(zhǔn)模塊。在標(biāo)準(zhǔn)模塊中的全局變量或公共過程,其作用范圍在整個應(yīng)用程序里,具有全局特征。三、打開模塊的編輯窗口 模塊是在VBE(Visual Basic Editor)窗口中進(jìn)行創(chuàng)建和編輯的??梢酝ㄟ^以下方法打開標(biāo)準(zhǔn)模塊的VBE窗口:在【創(chuàng)建】選項(xiàng)卡的【宏與代碼】組中單擊【模塊】按鈕(創(chuàng)建新模塊)在【導(dǎo)航】窗格中選擇【模塊】類別,使用組合鍵Alit + F11(數(shù)據(jù)庫窗口與VBE窗口之間切換)在【導(dǎo)航】窗格中右擊某個模塊對象,在快捷菜單中選擇【設(shè)計(jì)視圖】命令(打開該模塊的代碼窗口)雙擊【導(dǎo)航】窗格中的某個模塊對象(打開該模塊的代碼窗口) 在打開窗體或報(bào)表的
4、設(shè)計(jì)視圖后,可以通過以下方法打開類模塊的VBE窗口:單擊【窗體設(shè)計(jì)工具】中的【設(shè)計(jì)】選項(xiàng)卡中的【查看代碼】按鈕右擊需要編輯代碼的控件,并在快捷菜單中選擇【事件生成器】命令第 二 節(jié)創(chuàng) 建 模 塊 模塊是以過程(或函數(shù))為單元組成的,一個模塊包含兩個部分:一個聲明區(qū)域 用于定義模塊中使用的變量等內(nèi)容。若干個子過程與函數(shù)過程 過程是由代碼組成的單元,包含一系列計(jì)算語句和執(zhí)行語句,用于完成特定的操作。 過程名不能與所在模塊的模塊名相同。模塊聲明區(qū)域子過程和函數(shù)定義區(qū)域過程有兩種類型: Sub過程(子過程) Function過程(函數(shù)過程)1、Sub過程 子過程以關(guān)鍵詞Sub開始,以End Sub結(jié)束
5、。語法格式: Public | Private Static Sub 子過程名 ( 形參列表 As 數(shù)據(jù)類型 ) 程序代碼 Exit Sub 程序代碼 End Sub說明:Public 過程能被所有模塊的所有其它過程調(diào)用。Private 過程只能被同一模塊的其它過程調(diào)用。Static 用于設(shè)置靜態(tài)變量(局部變量)。 如果沒有使用Public或Private指定,過程則是Public(默認(rèn)情況);如果沒有使用Static,則在調(diào)用之后不會保留局部變量的值。形參列表:即調(diào)用時(shí)接受傳遞給Sub過程的參數(shù)的變量列表。如果有多個變量,則多個變量之間用逗號隔開。如果Sub過程沒有參數(shù),過程名后也必須包含一
6、個空的圓括號。在形參表中可以用As來設(shè)置參數(shù)的數(shù)據(jù)類型,未加As時(shí),則參數(shù)為變體型數(shù)據(jù)。在過程執(zhí)行中一旦遇到Exit Sub語句,則結(jié)束過程的執(zhí)行??梢酝ㄟ^傳遞參數(shù)和使用參數(shù)來調(diào)用子過程,但子過程調(diào)用后不返回任何值?!纠?Public Sub xx ( m As String , n As Integer ) End Sub Public Sub yy ( ) End Sub 子過程的調(diào)用形式有兩種:語法格式一: Call 子過程名 ( 實(shí)參列表 ) 語法格式二: 子過程名 實(shí)參列表 說明:實(shí)參列表:在調(diào)用過程時(shí)用于傳遞給Sub過程的變量列表,存在多個變量時(shí),多個變量之間用逗號隔開。實(shí)參列表
7、和形參列表必須一一對應(yīng)。 用Call調(diào)用子過程是一個良好的程序設(shè)計(jì)習(xí)慣,因關(guān)鍵詞Call表明其后是過程名而不是變量名?!纠?】Public Sub xx( m As String , n As Integer ) Debug . Print m & nEnd SubPublic Sub yy( ) Call xx( ABC , 5 )End Sub運(yùn)行子過程yy,即在立即窗口中顯示:ABC52、Function過程 在VBA除系統(tǒng)提供的標(biāo)準(zhǔn)函數(shù)外,還可以由用戶自行定義函數(shù)過程(用戶自定義函數(shù))。 函數(shù)過程和子過程在功能上略有不同:主程序調(diào)用過程后是執(zhí)行了一個過程;主程序而調(diào)用函數(shù)后是得到了一個
8、結(jié)果。 函數(shù)過程是以Function開始,以End Function結(jié)束。語法格式: Public | Private Static Function 函數(shù)名 ( 形參列表 ) AS 數(shù)據(jù)類型 程序代碼 Exit Function 函數(shù)名 = 表達(dá)式 程序代碼 End Function說明:AS 數(shù)據(jù)類型:定義函數(shù)返回值的數(shù)據(jù)類型。如果未定義,則系統(tǒng)將自動賦給函數(shù)過程一個最合適的數(shù)據(jù)類型。函數(shù)名 = 表達(dá)式:函數(shù)體中對函數(shù)名進(jìn)行賦值的語句,使函數(shù)得到一個返回值。函數(shù)的定義中,必須至少含有一條給函數(shù)名的賦值語句。如果沒有此語句,將根據(jù)As語句定義的數(shù)據(jù)類型而返回0或空字符串或空值。在函數(shù)過程執(zhí)行
9、中一旦遇到Exit Function語句,則結(jié)束函數(shù)過程的執(zhí)行?!纠?】把0到9中數(shù)字轉(zhuǎn)換成大寫漢字 Function vtoc ( x As Integer ) As String Dim cResult As String Dim n As String cResult = n = 零壹貳叁肆伍陸柒捌玖 cResult=mid(n,x+1,1) vtoc = cResult End Function 函數(shù)過程的調(diào)用形式:語法格式: ( 實(shí)參列表 )說明:由于函數(shù)有返回值,因此調(diào)用時(shí)不能用Call命令,而是直接引用函數(shù)名并加括號。如果用Call命令調(diào)用函數(shù),VBA將放棄函數(shù)的返回值。函數(shù)過程
10、的返回值可以直接賦給某個變量?!纠?s = vtoc( 4 )【例3】編寫一個能夠以年、月、日來返回系統(tǒng)日期的函數(shù)過程Getdate。 Function Getdate( ) As String Getdate = Year( Date ) & 年 _ & Month( Date ) & 月 _ & Day( Date ) & 日 End Function 調(diào)用上述函數(shù),并將結(jié)果在立即窗口中顯示。 Sub Pdate( ) Debug.Print Getdate( ) End Sub第 三 節(jié)VBA程序設(shè)計(jì)基礎(chǔ)一、面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念 所謂面向?qū)ο罂梢赃@樣定義: 面向?qū)ο?= 類 +
11、對象 + 屬性的繼承 + 對象之間的通信 一個面向?qū)ο蟮膽?yīng)用系統(tǒng)中,每一個組成部分都是對象,所需實(shí)現(xiàn)的操作則通過建立對象與對象之間的通信來完成。1、對象客觀世界里的任何實(shí)體都可以被看作是對象。對象可以是具體的物,也可以指某些概念。在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,對象代表應(yīng)用程序中的元素,包括表、窗體、按鈕等。每個對象都具有自己的屬性、事件和方法;用戶就是通過屬性、事件和方法來處理對象的。2、對象的屬性及屬性值屬性是對象的特征,用來表示對象的狀態(tài)。不同類型的對象,其屬性會有所不同;同類別對象的不同實(shí)例,屬性的值也會有差異。既可以在創(chuàng)建對象時(shí)給對象設(shè)置屬性值,也可以在執(zhí)行程序時(shí)通過命令修改對象的屬性值。3
12、、事件和事件過程事件是對象可以識別的一個動作。為使對象在某一事件發(fā)生時(shí)能夠做出所需要的反應(yīng),必須針對這一事件編寫相應(yīng)的代碼來完成相應(yīng)的功能。如果已經(jīng)編寫了某個對象的事件代碼,那么當(dāng)此事件發(fā)生時(shí),這段事件代碼將被自動激活并開始執(zhí)行;如果事件沒有發(fā)生,則此段代碼永遠(yuǎn)不會被執(zhí)行。如果沒有為對象編寫事件代碼,那么即使事件發(fā)生了,也不會產(chǎn)生任何動作。4、方法方法是對象能夠執(zhí)行的一個動作,即當(dāng)對象接受了某個消息后所采取的一系列操作的描述。相同類的對象具有相同的方法,不同類的對象所具有的方法也有所不同。 每個對象都具有屬性,以及與之相關(guān)的事件和方法,面向?qū)ο蟮某绦蛟O(shè)計(jì)就是通過對象的屬性、事件和方法來處理對象
13、。對象屬性事件方法 可以在程序代碼中引用對象的屬性或調(diào)用對象方法。語法格式: 父對象名 ! 對象名.屬性名 父對象名 ! 對象名.方法名父對象與子對象之間用“ ! ”連接;對象與屬性(方法)之間用“ . ”連接。5、類類是面向?qū)ο蟪绦蛟O(shè)計(jì)中的核心。是對一類相同對象的集合,這些對象具有相同的性質(zhì)、相同種類的屬性以及方法。類是對象的抽象,而對象是類的具體實(shí)例。 有了類定義后,基于類就可以生成這類對象中任何一個對象。這些對象雖然采用相同的屬性來表示狀態(tài),但它們在屬性上的取值完全可以不同。這些對象一般有著不同的狀態(tài),且彼此間相對獨(dú)立。6、DoCmd對象 DoCmd是Access數(shù)據(jù)庫的一個特殊對象,它
14、是通過調(diào)用Access內(nèi)置的方法,在程序中實(shí)現(xiàn)某些特定的操作。語法格式: DoCmd.方法名 參數(shù) 說明: DoCmd對象的大多數(shù)方法都有參數(shù),有些是必需的,有些則是可選的。若缺省,將采用默認(rèn)的參數(shù)。(1)用DoCmd對象打開窗體語法格式: DoCmd.OpenForm 窗體名 功能:用默認(rèn)形式打開指定窗體(2)用DoCmd對象關(guān)閉窗體語法格式一: DoCmd.Close acForm , 窗體名 功能:關(guān)閉指定窗體語法格式二: DoCmd.Close功能:關(guān)閉當(dāng)前窗體(3)用DoCmd對象打開報(bào)表語法格式: DoCmd.OpenReport 報(bào)表名 , acViewPreview功能:用預(yù)覽
15、形式打開指定報(bào)表(4)用DoCmd對象關(guān)閉報(bào)表語法格式一: DoCmd.Close acReport , 窗體名 功能:關(guān)閉指定報(bào)表語法格式二: DoCmd.Close功能:關(guān)閉當(dāng)前報(bào)表(5)用DoCmd對象運(yùn)行宏語法格式: DoCmd.RunMacro 宏名功能:運(yùn)行指定宏(6)用DoCmd對象退出Access語法格式: DoCmd.Quit功能:關(guān)閉所有Access對象和Access本身(7)用DoCmd對象執(zhí)行宏語法格式: DoCmd.RunMacro 宏名 , 運(yùn)行次數(shù) , 數(shù)值表達(dá)式 功能:運(yùn)行指定宏說明:運(yùn)行次數(shù) 用于計(jì)算宏運(yùn)行的次數(shù)數(shù)值表達(dá)式 在每一次運(yùn)行宏時(shí)進(jìn)行計(jì)算,結(jié)果為Fa
16、lse時(shí),停止運(yùn)行宏。二、VBA編程環(huán)境:VBE VBE是編輯VBA代碼時(shí)使用的界面。在VBE編輯器中可以編寫VBA函數(shù)和過程。 使用Alt + F11可以實(shí)現(xiàn)數(shù)據(jù)庫窗口和VBE之間的切換。1、VBE窗口的組成 VBE使用多種窗口來顯示不同對象或是完成不同任務(wù)。VBE的窗口主要包括:標(biāo)準(zhǔn)工具欄工程窗口屬性窗口代碼窗口對象組合框事件組合框監(jiān)視窗口立即窗口本地窗口(1)標(biāo)準(zhǔn)工具欄Access視圖插入模塊運(yùn)行子過程/用戶窗口中斷運(yùn)行終止運(yùn)行/重新設(shè)計(jì)設(shè)計(jì)模式工程項(xiàng)目管理器屬性窗體對象瀏覽器(各按鈕的功能參見教材P260)(2)工程窗口(工程資源管理器) 在Access中所謂工程就是指一個數(shù)據(jù)庫應(yīng)用系
17、統(tǒng)。系統(tǒng)中所有的類對象和模塊對象都在工程窗口中顯示。 工程窗口以層次結(jié)構(gòu)列表的形式顯示當(dāng)前數(shù)據(jù)庫中的所有模塊文件。鼠標(biāo)雙擊其中之一,即打開其代碼窗口?!静榭创a】按鈕 打開相應(yīng)的代碼窗口【查看對象】按鈕 打開相應(yīng)的對象窗口【切換文件夾】按鈕 隱藏或顯示對象分類文件夾(3)屬性窗口 屬性窗口列出了選定對象的屬性,以便查看、修改這些屬性。若選取了多個控件,屬性窗口中列出的是所有控件的共同屬性。對象框 用于選擇對象屬性列表 用于顯示和修改對象的屬性。屬性列表可以按分類或按字母進(jìn)行排序。 直接在屬性窗口中設(shè)置對象的屬性,稱“靜態(tài)”設(shè)置;在代碼窗口中,用VBA代碼設(shè)置對象屬性稱“動態(tài)”設(shè)置。(4)代碼窗
18、口 代碼窗口用于顯示、編寫及修改VBA代碼。系統(tǒng)允許打開多個代碼窗口,以查看不同窗體或模塊中的代碼。對象下拉列表框 顯示對象名稱。用于查看或選擇其中的對象。過程/事件下拉列表框 顯示與所選對象相關(guān)的事件。可以根據(jù)需要選擇相應(yīng)的事件。自動提示信息框 根據(jù)已經(jīng)輸入的內(nèi)容作出相應(yīng)的提示。(5)立即窗口 立即窗口是用來進(jìn)行快速的表達(dá)式計(jì)算、簡單方法的操作及進(jìn)行程序測試的工作窗口。在立即窗口中可以輸入或者粘貼一行代碼并執(zhí)行該代碼(按Enter鍵),執(zhí)行結(jié)果將在立即窗口中顯示。語法格式: ? 在代碼窗口中編寫代碼時(shí),如果要在立即窗口中顯示變量或表達(dá)式的值,則使用Debug語句。語法格式: Debug.Pr
19、int 立即窗口中的代碼及運(yùn)行結(jié)果是不會被保存的。(6)監(jiān)視窗口 在調(diào)試VBA程序時(shí),可以利用監(jiān)視窗口顯示正在運(yùn)行過程定義的監(jiān)視表達(dá)式的值。(7)本地窗口 使用本地窗口可以自動顯示正在運(yùn)行過程中的所有變量聲明及變量值。 以上窗口均可以用鼠標(biāo)進(jìn)行拖拉操作或關(guān)閉操作;也可以通過【視圖】菜單使其顯示。2、進(jìn)入VBE編程環(huán)境 代碼窗口是設(shè)計(jì)人員的主要操作界面。雙擊工程窗口中的任何對象,都可以在代碼窗口中打開該對象的對應(yīng)模塊代碼。 進(jìn)入VBE編程環(huán)境的方法有多種,對于類模塊,其方法有:方法一打開窗體或報(bào)表的設(shè)計(jì)視圖,并選擇對象單擊【屬性】對話框中的【事件】選項(xiàng)卡選擇某個事件并設(shè)置屬性為“事件過程”單擊屬
20、性右側(cè)的“”按鈕 打開窗體或報(bào)表的設(shè)計(jì)視圖后若無【屬性】對話框,則可以由以下方法之一打開:單擊【窗體設(shè)計(jì)工具】中的【設(shè)計(jì)】選項(xiàng)卡中的【屬性表】按鈕組合鍵:Alt + Enter方法二打開窗體或報(bào)表的設(shè)計(jì)視圖,并選擇對象選擇屬性對話框中的【事件】選項(xiàng)卡直接單擊某個事件右側(cè)的“”按鈕在打開的對話框中選擇【代碼生成器】方法三打開窗體或報(bào)表的設(shè)計(jì)視圖單擊【窗體設(shè)計(jì)工具】中的【設(shè)計(jì)】選項(xiàng)卡中的【查看代碼】按鈕 對于標(biāo)準(zhǔn)模塊,其方法有:方法一 在【創(chuàng)建】選項(xiàng)卡的【宏與代碼】組中,單擊【模塊】按鈕(創(chuàng)建一個新的模塊)方法二 雙擊數(shù)據(jù)庫導(dǎo)航窗格中選擇需要打開的模塊對象(修改已經(jīng)存在的標(biāo)準(zhǔn)模塊)方法三 在【數(shù)據(jù)
21、庫工具】選項(xiàng)卡的【宏】組中,單擊【Visual Basic】按鈕(僅進(jìn)入VBE環(huán)境 。類似于使用組合鍵Alt + F11)3、VBA程序書寫原則(1)語句書寫規(guī)定通常一個語句寫一行語句較長分行寫時(shí),可用續(xù)行符“ _ ”將語句連續(xù)寫在下一行(續(xù)行符前需加一個空格)可以用冒號“ : ”將多條短語句寫在同一行中為顯示程序的流程結(jié)構(gòu),可以采用縮進(jìn)格式書寫程序。代碼設(shè)計(jì)時(shí),可按F1鍵顯示幫助信息。(2)注釋語句 為增加程序的可讀性,可在程序中設(shè)置注釋語句。注釋語句可以添加到程序模塊的任何位置,且不會被執(zhí)行。語法格式一: Rem (在其它語句之后出現(xiàn)時(shí) 要用冒號分隔)語法格式二: (可直接位于其它語句之
22、后)注釋語句默認(rèn)以綠色文本顯示。(3)語法檢查 在代碼窗口輸入語句時(shí),VBA會自動進(jìn)行語法檢查,即:當(dāng)輸入一行語句并按Enter鍵后,如果該語句存在語法錯誤,則此行代碼以紅色文本顯示,并顯示一條錯誤信息。必須找出語句中的錯誤并改正后才可以進(jìn)行下一步的操作。 注意語法檢查執(zhí)行的時(shí)機(jī)。三、數(shù)據(jù)類型VBA在數(shù)據(jù)類型和定義方式上均繼承了傳統(tǒng)的Basic語言的特點(diǎn)。Access數(shù)據(jù)庫在創(chuàng)建表時(shí)所使用的字段數(shù)據(jù)類型在VBA中都有對應(yīng)的類型(OLE對象型、備注型和自動編號數(shù)據(jù)類型除外) 。在聲明變量的數(shù)據(jù)類型時(shí),既可以使用數(shù)據(jù)類型名,也可以使用符號來定義。(詳見教材P262)1、字符型(String) 貨幣
23、型數(shù)據(jù)(Currency)字符型常量必須要用一對英文半角的雙引號括起來。貨幣型數(shù)據(jù)的整數(shù)部分最多可達(dá)15位,小數(shù)位數(shù)最多只能使用4位。2、布爾型數(shù)據(jù)(Boolean) 布爾型數(shù)據(jù)也稱邏輯型數(shù)據(jù),其數(shù)據(jù)值只有兩個:True和False。當(dāng)布爾型數(shù)據(jù)轉(zhuǎn)換為其它類型數(shù)據(jù)時(shí), True轉(zhuǎn)換為-1,F(xiàn)alse轉(zhuǎn)換為0。當(dāng)其它類型數(shù)據(jù)轉(zhuǎn)換為布爾型數(shù)據(jù)時(shí),0轉(zhuǎn)換為False,非零值轉(zhuǎn)換為True。3、日期/時(shí)間型數(shù)據(jù)(Date)日期/時(shí)間數(shù)據(jù)必須用一對“ # ”括起來任何可以識別的文本日期數(shù)據(jù)都可以賦給日期變量?!纠?949-10-0110-01-1949#01-10-1949Oct , 01 , 194
24、9#1949-10-01#10-01-1949#01-10-1949#1949-10-01#輸入后顯示的日期格式系統(tǒng)默認(rèn)為:mm / dd / yyyy以數(shù)字序列表示日期時(shí): 小數(shù)點(diǎn)左邊表示日期:1為1899年12月31日 小數(shù)點(diǎn)右邊表示時(shí)間:0為午夜0點(diǎn) 0.5為中午12點(diǎn) 負(fù)數(shù)表示1899年12月31日之前的日期【例】Sub aa( ) Dim d As Date d = 1.1 Debug . Print dEnd Sub1899-12-31 02:24:004、變體型數(shù)據(jù)(Variant)如果沒有指定變量的具體數(shù)據(jù)類型,則系統(tǒng)默認(rèn)該變量為變體型數(shù)據(jù)型。變體型是一種特殊的數(shù)據(jù)類型,除了定
25、長字符數(shù)據(jù)及用戶自定義類型外,可以包含任何種類的數(shù)據(jù),具體類型由最近所賦的值確定。變體型數(shù)據(jù)可以包含Empty、Error、Nothing及Null等特殊值??梢杂肰arType和TypeName函數(shù)來檢測Variant中的數(shù)據(jù)類型。5、對象型數(shù)據(jù)(Object)對象型數(shù)據(jù)用來表示圖形、OLE對象或其它對象。對象型數(shù)據(jù)占4個字節(jié)的存儲空間。對象型變量可引用應(yīng)用程序中的對象。6、用戶自定義數(shù)據(jù)類型用戶自定義數(shù)據(jù)類型是由用戶自行建立,由一個或多個VBA標(biāo)準(zhǔn)數(shù)據(jù)類型或其它用戶自定義數(shù)據(jù)類型組合而成的一種數(shù)據(jù)類型。用戶自定義數(shù)據(jù)類型在關(guān)鍵字Type End Type之間定義。語法格式: Type As
26、 As End Type【例】自定義一個新的類型MyType,該類型中包含3個元素,分別命名為:MyName(字符型)、MyBirthday(日期型)、MySex(邏輯型)。Type MyType MyName As String MyBirthday As Date MySex As BooleanEnd Type定義類型以后就可以象普通類型一樣定義變量Dim NewStu As MyType用戶自定義數(shù)據(jù)類型變量賦值時(shí),使用以下語法格式:語法格式: 變量名 . 元素名 = 變量值【例】Dim NewStu As MyTypeNewStu . MyName = 史建平NewStu . MyB
27、irthday = #1988-10-01#NewStu . MySex = True可以用關(guān)鍵字With End With簡化賦值中的重復(fù)部分?!纠緿im NewStu As MyTypeWith NewStu. MyName = 史建平. MyBirthday = #1988-10-01#. MySex = TrueEnd WithAccess與VBA數(shù)據(jù)類型的對比含義Access數(shù)據(jù)類型VBA數(shù)據(jù)類型字節(jié)型ByteByte短整型Short、SmallIntInteger長整型Integer、Int、LongLong單精度型Single、RealSingle雙精度型Double、Numb
28、erDouble字符型Char、Text、StringString貨幣型Currency、MoneyCurrency邏輯型Logical、YesNoBoolean日期型Date、TimeDate對象型OLEObject、GeneralObject變體類型不支持Variant四、常量、變量與數(shù)組常量 是在程序運(yùn)行過程中,其值不能被改變的量。變量 是用于存儲在程序運(yùn)行時(shí)其值可以發(fā)生變化的量。 每個變量都有其變量名,使用變量前可以指定其數(shù)據(jù)類型,也可以不指定其數(shù)據(jù)類型。數(shù)組 是由一組具有相同數(shù)據(jù)類型的變量(即數(shù)組元素)構(gòu)成的集合。1、常量 Access中的常量有3種類型:符號常量 用Const語句創(chuàng)
29、建,并且在模塊中使用的常量。內(nèi)部常量 是Access或引用庫的一部分。系統(tǒng)常量 True、False、Null、Yes、No、On和Off等。(1)符號常量 如果在代碼中要反復(fù)使用某個相同的值,或者代表一些具有特定意義的數(shù)字或字符串,可以使用符號常量。 符號常量用Const語句來創(chuàng)建,創(chuàng)建時(shí)給出常量的值。語法格式: Public | Private Const 符號常量名 As 數(shù)據(jù)類型 = 符號常量值【例】 Public Const PI As Single = 3.1415927 Const NationalDay As Date = #1949-10-1#在程序運(yùn)行過程中,符號常量只能作
30、讀取操作,不允許修改或?yàn)槠渲匦沦x值。不允許創(chuàng)建與內(nèi)部常量和系統(tǒng)常量同名的符號常量。如果用As選項(xiàng)定義了符號常量的數(shù)據(jù)類型,且所賦值的數(shù)據(jù)類型與定義的數(shù)據(jù)類型不相同,那么,系統(tǒng)自動將值的數(shù)據(jù)類型轉(zhuǎn)換為所定義的數(shù)據(jù)類型;如果不能轉(zhuǎn)換將顯示錯誤提示。符號常量有3個作用范圍級別:局部級別(過程級別)、私有級別和公共級別。符號常量一般以大寫字母命名,以便與變量區(qū)分(變量一般用小寫字母命名)。(2)內(nèi)部常量VBA提供了一些預(yù)定義的內(nèi)部符號常量,它們主要作為DoCmd命令語句中的參數(shù)。內(nèi)部常量以ac兩個前輟字母指明了定義該常量的對象庫,如:acForm、acCmdsaveAs等。通過對象瀏覽器可以查看所有可
31、用對象庫中的內(nèi)部常量。 【對象瀏覽器】的調(diào)用可以利用VBE界面【視圖】菜單命令或工具欄中按鈕實(shí)現(xiàn)。(3)系統(tǒng)常量系統(tǒng)定義的常量有七個:True、False、Null、Yes、No、On和Off。系統(tǒng)常量可以在所有應(yīng)用程序中直接使用。2、變量 變量名、變量的數(shù)據(jù)類型和變量的值是變量的三要素。變量由變量名標(biāo)識。(1)變量的命名規(guī)則變量名只能由字母、數(shù)字、漢字和下劃線組成,不能含有空格和除下劃線之外的其它字符,長度不能超過255個字符 。變量名必須以字母(包括漢字)開頭,且不區(qū)分字母的大小寫。變量名不能使用VBA的關(guān)鍵字,不能與VBA的過程、函數(shù)和方法名同名。同一作用域內(nèi)變量名必須唯一。 注意區(qū)分變
32、量的命名規(guī)則與字段名的命名規(guī)則(P63)。(2)變量的聲明方法 變量的聲明方式有兩種:隱式聲明和顯式聲明 。隱式聲明 隱式聲明是沒有使用dim、Public、Private和Static等關(guān)鍵字來定義變量,而是直接使用變量。 隱式聲明的變量若其后無類型說明符來指明其數(shù)據(jù)類型時(shí),默認(rèn)為變體數(shù)據(jù)類型。 隱式聲明的變量只在當(dāng)前過程中有效(即為局部變量)?!纠?x = ABC y = 123 顯式聲明 Dim語句語法格式:Dim 變量名1 As 數(shù)據(jù)類型 , _ 變量名2 As 數(shù)據(jù)類型 , 說明:如果不使用As選項(xiàng)來定義變量的數(shù)據(jù)類型,系統(tǒng)默認(rèn)該變量為Variant數(shù)據(jù)類型。 Dim語句一行中可以
33、聲明多個變量,各變量聲明之間用逗號分隔。 顯式聲明是指用Dim、Private、Public、Static語句來定義變量的數(shù)據(jù)類型?!纠?Dim a1 As Integer將a1定義為整型 Dim a2 As Double將a2定義為雙精度型 Dim a3 As String , a4 As Date將a3定義為字符型,a4為日期型 Dim mm為變體型變量 Dim x , y , z As Singlex、y為變體型變量z為單精度型變量類型說明符(隱式聲明) 使用類型說明符定義變量的數(shù)據(jù)類型時(shí),必須將其放在變量名的最后(各種類型說明符詳見教材P262)。 類型說明符定義變量屬于隱式聲明。【
34、例】 Var1% = 1234 Var2# = 123.45 Var3$ = abc“%:短整數(shù) #:雙精度數(shù)&:長整數(shù) $:字符串!:單精度 :貨幣 VBA在判斷一個變量的數(shù)據(jù)類型時(shí),按以下順序進(jìn)行:Dim語句 數(shù)據(jù)類型說明符。 沒有使用Dim語句或類型說明符聲明的變量,系統(tǒng)默認(rèn)其為變體數(shù)據(jù)型。 為了避免使用隱式聲明變量,可以在程序開始處使用Option Explicit語句來強(qiáng)制使用顯式聲明變量。在該方式下,如果變量沒有經(jīng)過顯示聲明或使用類型說明符,系統(tǒng)將提示錯誤。(3)變量的使用范圍 因變量定義的位置與方式的不同,變量的作用域也有所不同。局部變量(過程級別變量) 局部變量只能在定義它的過
35、程內(nèi)使用,在其它的過程中無法存取局部變量。私有變量(私有模塊級別變量) 私有變量只能在定義它的模塊及其子過程內(nèi)使用,而在其它模塊中無法使用。公共變量(公共模塊級別變量) 在任何模塊和過程中都可以訪問公共變量。公共變量需要在模塊的聲明區(qū)域用Public聲明。 公共變量和私有變量必須在模塊(或窗體)的聲明區(qū)域中聲明。語法格式: Public | Private 變量名 As 數(shù)據(jù)類型 功能: 定義全局變量或私有變量。說明:全局變量必須在模塊的聲明區(qū)域用Public定義。私有變量必須在模塊的聲明區(qū)域用Private或Dim定義。在過程中用Dim定義的一定是局部變量。局部變量私有變量全局變量聲明方式D
36、imStaticDimPrivatePublic聲明位置在子過程中在窗體/模塊的聲明區(qū)域在標(biāo)準(zhǔn)模塊的聲明區(qū)域能否被本模塊的其它過程存取不能能能能否被其它模塊的過程存取不能不能能 Static是在過程級別中使用,用于聲明變量并分配其存儲空間。在整個代碼運(yùn)行期間都能保留使用 Static 語句聲明的變量的值,且該變量與過程外的其它同名的變量無關(guān) 。3種變量的定義方法及其作用域3、數(shù)組數(shù)組是用相同名稱保存的一組有序的數(shù)據(jù)集合,一般情況下該集合中數(shù)據(jù)元素的數(shù)據(jù)類型是相同的。數(shù)組元素由數(shù)組名和數(shù)組下標(biāo)構(gòu)成,第一個數(shù)組元素的下標(biāo)稱為數(shù)組的下界,最后一個元素的下標(biāo)稱為數(shù)組的上界。(1)數(shù)組的聲明 VBA中不
37、允許隱式說明數(shù)組,即數(shù)組在使用前必須用Public、Private或Dim語句進(jìn)行聲明,說明數(shù)組的大小、數(shù)據(jù)類型及作用范圍。語法格式:Dim 數(shù)組名( 下標(biāo)下界 to 下標(biāo)上界 ) As 數(shù)據(jù)類型 Dim 數(shù)組名( 下標(biāo)下界 to 下標(biāo)上界 , ) As 數(shù)據(jù)類型 說明:如果聲明了數(shù)組的數(shù)據(jù)類型,則數(shù)組中的所有元素必須賦于相同的或可以轉(zhuǎn)換的數(shù)據(jù)類型。As選項(xiàng)缺省時(shí),數(shù)組中各元素為變體數(shù)據(jù)型。下標(biāo)下界的默認(rèn)值為0,如果設(shè)置下標(biāo)下界為非0值,則要使用to選項(xiàng)?!纠緿im aa( 5 ) As StringDim bb( 1 to 10 , 1 to 20 )Dim cc( 2 , 2 to 5
38、, 5 ) As Integer 該數(shù)組是一個3維數(shù)組: 第1維下標(biāo):0 2 第2維下標(biāo):2 5 第3維下標(biāo):0 5可以在模塊的通用聲明部分用Option Base來指定數(shù)組的默認(rèn)下標(biāo)下界。 Option Base 1 設(shè)置數(shù)組的下標(biāo)下界為1 Option Base 0(語句的默認(rèn)形式) 設(shè)置數(shù)組的下標(biāo)下界為默認(rèn)值(2)數(shù)組的類型 按照數(shù)組聲明的方式,可以將數(shù)組分為兩種類型:靜態(tài)(固定)數(shù)組和動態(tài)數(shù)組。靜態(tài)(固定)數(shù)組 靜態(tài)數(shù)組中的元素個數(shù)在聲明時(shí)被指定 靜態(tài)數(shù)組在程序運(yùn)行過程中不能改變數(shù)組元素的個數(shù)【例】Dim a1 ( 5 ) As IntegerDim a2 ( 1 to 5 )Dim
39、a3 ( 3 , 5 ) As Long動態(tài)數(shù)組 動態(tài)數(shù)組中的元素個數(shù)在聲明時(shí)不指定 動態(tài)數(shù)組在程序運(yùn)行中可以改變數(shù)組的元素個數(shù)動態(tài)數(shù)組定義步驟:用Dim語句聲明一個空維數(shù)組,即:不指定數(shù)組的大小 Dim b1( )使用數(shù)組時(shí)用ReDim語句來指定數(shù)組的大小 ReDim b1( 2 , 3 )說明:ReDim語句只能出現(xiàn)在過程中,可以改變數(shù)組的大小、上下界和數(shù)組的維數(shù)。使用ReDim重新聲明數(shù)組后,原有數(shù)組元素中的值將全部清除并取其默認(rèn)值。 注意教材P268的敘述!若要保留數(shù)組中元素原有的值,則需在ReDim語句中加Preserve選項(xiàng)?!纠?Dim a1( ) As String ReDi
40、m a1( 5 ) ReDim Preserve a1( UBound( a1) + 5 ) UBound(arrayname , dimension)函數(shù)的功能是:返回?cái)?shù)組指定維的最大可用下標(biāo)。【例】 Dim b1( 5 , 10 ) Debug.Print UBound( b1 , 1 ) Debug.Print UBound( b1 , 2 )510帶Preserve選項(xiàng)的ReDim語句可以改變數(shù)組中最后一維的上界,但不能改變這一維的下界,改變下界將導(dǎo)致錯誤。若改變后的數(shù)組比原來小,則多余數(shù)據(jù)將丟失。【例】【例】(3)數(shù)組的訪問 數(shù)組聲明后,數(shù)組中的每個元素都可以單獨(dú)使用,使用的方法與相
41、同數(shù)據(jù)類型的普通變量相同。語法格式: 數(shù)組名( 下標(biāo)值 )說明:下標(biāo)值是指定范圍內(nèi)(上下界之間)的一個整數(shù),其值不能超出這個范圍。如果是多維數(shù)組,則下標(biāo)應(yīng)是多個(不能多于數(shù)組維數(shù)),各整數(shù)間用逗號隔開?!纠?a1( 0 , 0 ) = ABC b1( 3 ) = 123Debug.Print b1( 3 ) + 100五、運(yùn)算符和表達(dá)式1、運(yùn)算符 運(yùn)算符是表示實(shí)現(xiàn)某種運(yùn)算的符號。根據(jù)不同的運(yùn)算,VBA中的運(yùn)算符可分為4種類型: 算術(shù)運(yùn)算符 字符串運(yùn)算符 關(guān)系運(yùn)算符 邏輯運(yùn)算符。P269(1)算術(shù)運(yùn)算符 算術(shù)運(yùn)算符用來執(zhí)行簡單的算術(shù)運(yùn)算。VBA提供了8種算術(shù)運(yùn)算符(詳見教材P269)。運(yùn)算符名
42、 稱優(yōu) 先 級說 明乘冪運(yùn)算1計(jì)算乘方和方根-取負(fù)運(yùn)算2*乘法運(yùn)算3/浮點(diǎn)除法3標(biāo)準(zhǔn)除法,結(jié)果為浮點(diǎn)數(shù)整數(shù)除法4整數(shù)除法,結(jié)果為整數(shù)Mod取模運(yùn)算5求余數(shù)+加法運(yùn)算6-減法運(yùn)算6 算術(shù)運(yùn)算符兩邊的操作數(shù)都應(yīng)該是數(shù)值型,如果是數(shù)字字符或邏輯型,則系統(tǒng)自動將其轉(zhuǎn)換成數(shù)值型后再進(jìn)行運(yùn)算。指數(shù)運(yùn)算() 求一個數(shù)的某次方。 在運(yùn)用乘方運(yùn)算符時(shí),只有當(dāng)指數(shù)為整數(shù)值時(shí),底數(shù)才可以為負(fù)數(shù)。【例】3 4 2 ( 1 / 2 )81 1.4142( - 2 ) 3 ( - 2 ) ( 1 / 2 )- 8出錯True 3Flase ( 1 / 2 )- 10整數(shù)除法() 對兩個操作數(shù)做除法運(yùn)算并返回一個整數(shù)。 整
43、數(shù)除法的操作數(shù)一般為整型,當(dāng)操作數(shù)是小數(shù)時(shí),首先被四舍五入為整型或長整型,然后再進(jìn)行整除運(yùn)算。 如果運(yùn)算結(jié)果是小數(shù),系統(tǒng)自動將其截?cái)酁檎突蜷L整數(shù),不再進(jìn)行四舍五入處理?!纠?1 / 33.666667 ( 浮點(diǎn)除法 )13.5 34 ( 整數(shù)除法,操作數(shù)先被四舍五入 )11 33 ( 整數(shù)除法,運(yùn)算結(jié)果不做四舍五入 ) 7 3 2 ( 字符串先轉(zhuǎn)換為數(shù)值型 )5 2 * 30 ( 乘法的運(yùn)算級別高于整除 )3.56 7 / 3.52 ( 浮點(diǎn)除法的級別高于整除 )取模運(yùn)算(Mod) 對兩個操作數(shù)做除法運(yùn)算并返回余數(shù)。 如果操作數(shù)有小數(shù)時(shí),系統(tǒng)自動將其四舍五入為整數(shù)后再進(jìn)行運(yùn)算。 結(jié)果的正負(fù)
44、號與被除數(shù)相同?!纠?1 Mod 3212 Mod 30- 11 Mod 3- 211 Mod - 3211.4 Mod 3211.56 Mod 6.20 算術(shù)運(yùn)算符兩邊的操作數(shù)都應(yīng)該是數(shù)值型,如果是數(shù)字字符、邏輯型,則系統(tǒng)自動將其轉(zhuǎn)換成數(shù)值型后再進(jìn)行運(yùn)算;如果是日期型可以加(減)一個整數(shù),表示后推(前推)若干天?!纠?23 + 2 True + 20125 19# 2012 - 01 - 01 # + 1 # 12 / 31 / 1899 # - 1# 2012 - 1 - 2 # 0:00:00# 2012 - 10 - 1 # - # 2012 - 10 - 2 #- 1# 1900
45、 - 1 - 1 # + # 1900 - 1 - 2 # # 1900 - 1 - 4 # (2)字符串運(yùn)算符 字符串運(yùn)算符就是將兩個字符串連接起來生成一個新的字符串。 字符串運(yùn)算符有兩個:& 運(yùn)算符、+ 運(yùn)算符 & 運(yùn)算符 用于強(qiáng)制兩個字符串的連接。由于符號&還是長整型定義符,在字符串變量使用運(yùn)算符&時(shí),變量與運(yùn)算符之間必須加一個空格。【例】 x& = 123 x & #1949-10-1#作為長整型定義符作為連接運(yùn)算符運(yùn)算符&兩邊的操作數(shù)可以是字符型、數(shù)值型或日期型。進(jìn)行連接操作前先將操作數(shù)的數(shù)據(jù)類型轉(zhuǎn)換為字符型,然后再進(jìn)行字符串的連接?!纠?123 & ABC aa = 123 aa
46、 & ABC aa&ABC 123ABC定義變量并賦值123ABC出錯 + 運(yùn)算符 用于連接兩個字符串,形成一個新的字符串。運(yùn)算符兩邊的操作數(shù)必須都是字符串。由于符號“ + ” 還是算術(shù)運(yùn)算符,因此: 如果兩邊的操作數(shù)都是數(shù)值型,則進(jìn)行普通的加法運(yùn)算。 如果一個是數(shù)值型,另一個為數(shù)字字符串,則系統(tǒng)自動將數(shù)字字符串轉(zhuǎn)化為數(shù)值,然后進(jìn)行加法運(yùn)算。 如果一個是數(shù)值型,另一個為非數(shù)字字符串,則出錯?!纠緼BC & 123 ABC + 123ABC123 ABC12312.5 & 24 12.5 + 2412.524 36.5A12.5 & 24 A12.5 + 24A12.524出錯123.5 &
47、# 2001-09-11 #123.52001-9-1112.5 & # 2011-10-01 #12.52011-10-1# 2011-09-01 # + 10# 9999-12-31 # + 12011-9-11 溢出運(yùn)算符 & 與 + 的比較日期所能表示的范圍: 100年1月1日至9999年12月31日注:年份如果是兩位數(shù) 0 29之間,系統(tǒng)解釋為2000 2029年30 99之間,系統(tǒng)解釋為1930 1999年 在VBA中,運(yùn)算符 + 既可用作加法運(yùn)算符,也可以用作字符串運(yùn)算符,但運(yùn)算符 & 專門作為字符串運(yùn)算符。因此在有些情況下,用 & 比用 + 可能更為安全。(3)關(guān)系運(yùn)算符 關(guān)系
48、運(yùn)算符用于對兩個表達(dá)式比較大小,比較的結(jié)果將是一個邏輯值,即:若關(guān)系成立,則為真(True);反之則為假(False)。 VBA提供了6種關(guān)系運(yùn)算符(見教材P271)。名 稱運(yùn)算符舉例說明 等于=abc=abd False 大于 大于等于 小于等于 小于 不等于=abcabd 45123 45 =#2011-1-1# abcd ABCD FalseTrueTrueFalseFalse在使用關(guān)系運(yùn)算符時(shí)應(yīng)注意以下原則:如果參與比較的兩個操作數(shù)都是數(shù)值型,則按它們的大小進(jìn)行比較。如果參與比較的兩個操作數(shù)都是字符型,則從左到右一一對應(yīng)比較。 字母不區(qū)分大小寫,且大于數(shù)字字符。 漢字字符按漢語拼音比較
49、大小,且大于西文字符。 字符的大小順序: 漢字字符 字母 ( 按字母順序且大小寫相同 ) 數(shù)字 空格 注意教材P271的敘述。 在VBA中,允許部分不同數(shù)據(jù)類型的量進(jìn)行比較,如: 數(shù)值型與邏輯型 數(shù)值型與日期型 日期型與邏輯型 日期型與數(shù)字字符 數(shù)值型與數(shù)字字符注: 均轉(zhuǎn)換為數(shù)值型后再進(jìn)行比較。(4)邏輯運(yùn)算符 邏輯運(yùn)算符用于對兩個邏輯量進(jìn)行邏輯運(yùn)算,其結(jié)果仍然是一個邏輯值。VBA的邏輯運(yùn)算主要為: AND(與運(yùn)算) OR(或運(yùn)算) NOT(非運(yùn)算)邏輯運(yùn)算符說 明Not當(dāng)Not連接的表達(dá)式為真時(shí),整個表達(dá)式的值為假And當(dāng)And連接的表達(dá)式均為真時(shí),整個表達(dá)式的值為真,否則為假Or當(dāng)Or連接
50、的表達(dá)式均為假時(shí),整個表達(dá)式的值為假,否則為真 各個邏輯運(yùn)算符的真值表XYNot XX And YX Or YTrue TrueTrue FalseFalse TrueFalse FalseFalse True True False False TrueTrue False TrueTrue False FalseP2712、表達(dá)式(1)表達(dá)式的組成表達(dá)式由字面值、常量、變量、運(yùn)算符、函數(shù)、標(biāo)識符、邏輯量和括號等按一定的規(guī)則組成。表達(dá)式通過運(yùn)算得出結(jié)果,運(yùn)算結(jié)果的數(shù)據(jù)類型由操作數(shù)的數(shù)據(jù)類型和運(yùn)算符共同決定。 在算術(shù)運(yùn)算表達(dá)式中,參與運(yùn)算的操作數(shù)可能具有不同的數(shù)據(jù)精度,VBA規(guī)定:運(yùn)算結(jié)果的數(shù)據(jù)
51、類型采用精度高的數(shù)據(jù)類型。(2)表達(dá)式的書寫規(guī)則要改變運(yùn)算符的運(yùn)算順序,只能使用圓括號且必須成對出現(xiàn);乘號不能省略;表達(dá)式從左至右書寫,字母無大小寫區(qū)分。注意:計(jì)算機(jī)表達(dá)式與數(shù)學(xué)不一樣(3)運(yùn)算優(yōu)先級 在一個運(yùn)算表達(dá)式中,如果含有多種不同類型的運(yùn)算符,則運(yùn)算進(jìn)行的先后順序由運(yùn)算符的優(yōu)先級決定。優(yōu)先級高 低高 低算術(shù)運(yùn)算符字符串運(yùn)算符關(guān)系運(yùn)算符邏輯運(yùn)算符指數(shù)運(yùn)算 優(yōu)先級相同優(yōu)先級相同Not取反 - And乘法和除法 * /Or整數(shù)除法 模運(yùn)算 Mod加法和減法 + - 圓括號的優(yōu)先級別最高,因此可以用圓括號改變表達(dá)式的運(yùn)算順序。P272【例】100 / 5 2412 / 5 * 24.812 5
52、 * 21-12 Mod 5 * 2-23 + 4 * 2 12 + 34False【例】15 False And A & 12 B 15 False And A & 12 B 15 False And A12 = 90 , 優(yōu)秀 , _IIf ( cj.cj 60 , 不及格 , 及格 ) )P282(2)Switch( )函數(shù)語法格式: Switch ( Expr1 , Value1 , Expr2 , Value2 , ) 功能:依次判斷各條件表達(dá)式的值,當(dāng)某一表達(dá)式的值為True時(shí),即輸出其后的值。說明:Expr1為條件表達(dá)式。Value1如果相關(guān)的條件表達(dá)式值為True時(shí),即輸出此部
53、分的值?!纠扛鶕?jù)輸入的成績判定等級。Switch ( cj.cj 60 , 不及格 , _cj.cj 90 , 及格 , _cj.cj = 100 , 優(yōu)秀 )(3)Choose( )函數(shù)語法格式: Choose ( Index , Choice1 , Choice2 , ) 功能:根據(jù)Index的值從其后的列表中選擇并返回一個值。說明:Index是數(shù)值表達(dá)式或字段,其值介于1和可選項(xiàng)目數(shù)之間。Choice為選項(xiàng)列表,函數(shù)即輸出與Index的值相對應(yīng)的選項(xiàng)值。只有當(dāng)Index的值介于1和可選的項(xiàng)目數(shù)之間,函數(shù)才會返回其后對應(yīng)的選項(xiàng)的值,否則返回?zé)o效值(Null)?!纠繉⑤斎氲膞的值(僅限于
54、1 9)轉(zhuǎn)換為相應(yīng)的英語單詞。Dim x As Integer x = InputBox ( 請輸入一個1至9的數(shù)字 ) Choose ( x , One , Two , Three , Four , _Five , Six , Seven , Eight , _Nine )(4)InputBox( )函數(shù)(輸入框)語法格式: InputBox ( Prompt , Title , Default , Xpos , Ypos , Helpfile , Context )功能: 在輸入框中顯示提示信息,等待用戶輸入正文或單擊按鈕,并返回文本框中輸入的字符串。返回值數(shù)據(jù)類型:字符型P290說明:P
55、rompt提示字符串,最大長度約為1024個字符。如果包含多行,那么可以在各行之間用回車符Chr ( 13 )、換行符Chr ( 10 )或者它們的組合Chr ( 13 ) & Chr ( 10 )來分隔。Title顯示在輸入框標(biāo)題欄中的字符串表達(dá)式。如果缺省,則標(biāo)題欄中顯示的是應(yīng)用程序名。Default顯示在文本框中的字符串表達(dá)式,如果缺省,則文本框?yàn)榭?。【例】InputBox ( What is your name ? )調(diào)用InputBox函數(shù)時(shí),如果中間若干個參數(shù)缺省,其對應(yīng)的分隔符逗號“ , ”不能缺省。如果用戶單擊“確定”按鈕或按下回車鍵,則函數(shù)返回文本框中的內(nèi)容;如果用戶單擊“取
56、消”按鈕,函數(shù)則返回一個空字符串。(5)MsgBox( )函數(shù)(消息框)語法格式: MsgBox ( Prompt , Buttons , Title , Helpfile , Context )功能: 在消息框中顯示信息,等待用戶單擊按鈕,并返回一個整值型數(shù)據(jù),告訴用戶單擊的是哪個按鈕。返回值數(shù)據(jù)類型:整型P292說明:Prompt顯示在消息框中的信息,最大長度大約為1024個字符。如果包含多個行,可以各行之間用回車符、換行符或是它們的組合分隔。Buttons是一個數(shù)值表達(dá)式的和,指定在消息框中顯示的按鈕數(shù)目及形式、使用的圖標(biāo)樣式、默認(rèn)按鈕是什么以及消息框的強(qiáng)制回應(yīng)等。如果缺省,則Butto
57、ns的默認(rèn)值為0。Buttons選項(xiàng)取值說明(顯示按鈕及圖標(biāo))常 量數(shù) 值說 明vbOKOnly0僅有確定按鈕vbOKCancel1確定和取消按鈕vbAboutRetryIgnoue2終止、重試和忽略vbYesNoCancel3是、否和取消按鈕vbYesNo4是、否按鈕vbRetryCancel5重試和取消按鈕vbCritical16顯示Critical Message圖標(biāo)vbQuestion32顯示W(wǎng)arning Query圖標(biāo)vbExclamation48顯示W(wǎng)arning Message圖標(biāo)vbInformation64顯示Information Message圖標(biāo)P292Buttons
58、選項(xiàng)取值說明(默認(rèn)按鈕)常 量數(shù) 值默 認(rèn) 按 鈕vbDefaultButton10第一個按鈕是默認(rèn)按鈕vbDefaultButton2256第二個按鈕是默認(rèn)按鈕vbDefaultButton3512第三個按鈕是默認(rèn)按鈕vbDefaultButton4768第四個按鈕是默認(rèn)按鈕【例】MsgBox ( Your name is Obama , 68 , Your Name )【例】MsgBox ( 程序運(yùn)行完畢! , 2 + 48 + 256 , 提示 )如何實(shí)現(xiàn)下圖所示的對話框? MsgBox( 程序已修改 & Chr(13) _ & 是否保存? , 3 + 32 , 提示 )返回值單擊的按鈕
59、返回值單擊的按鈕1確認(rèn)5忽略2取消6是3終止7否4重試MsgBox( )函數(shù)的返回值說明第 四 節(jié)VBA流程控制語句 VBA中的語句是能夠完成某項(xiàng)操作的一條完整命令,它可以包含關(guān)鍵字、函數(shù)、運(yùn)算符、變量、常量以及表達(dá)式等。 VBA的語句分為3種類型: 聲明語句 為變量、符號常量或程序命名,并且指定一個數(shù)據(jù)類型。 賦值語句 把一個值或表達(dá)式賦給一個變量。 執(zhí)行語句 完成某個動作。P277一、聲明語句 在VBA中,使用聲明語句去命名和定義過程、變量、數(shù)組以及符號常量。 當(dāng)聲明一個過程、變量或常量時(shí),也同時(shí)定義了它的作用范圍,而此范圍取決于聲明的位置以及所用的關(guān)鍵字。 過程中聲明的變量只在過程中可以
60、使用,而且在調(diào)用時(shí)會丟失其變量的值,除非將它聲明為Static。二、賦值語句 賦值語句是將一個表達(dá)式的值賦給變量或數(shù)組元素。語法格式: Let 變量名 | 數(shù)組元素 = 值或表達(dá)式功能:將指定的值或表達(dá)式的值賦給變量。說明: 通常情況下,Let都可以省略。 賦值語句中的“ = ”并不是數(shù)學(xué)中的等號,它表示:將等號右邊表達(dá)式的運(yùn)算結(jié)果賦予等號右邊的變量。【例】 Sub Question ( ) Dim YourName As String Dim a As Integer YourName = InputBox ( What is your name ? ) MsgBox Your name i
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國耐火材料行業(yè)商業(yè)模式創(chuàng)新戰(zhàn)略制定與實(shí)施研究報(bào)告
- 2025-2030年中國專業(yè)促銷服務(wù)行業(yè)開拓第二增長曲線戰(zhàn)略制定與實(shí)施研究報(bào)告
- 2025-2030年中國預(yù)應(yīng)力混凝土用鋼材行業(yè)并購重組擴(kuò)張戰(zhàn)略制定與實(shí)施研究報(bào)告
- 2025-2030年中國商用后廚設(shè)備服務(wù)行業(yè)商業(yè)模式創(chuàng)新戰(zhàn)略制定與實(shí)施研究報(bào)告
- 2025-2030年中國旅居康養(yǎng)行業(yè)商業(yè)模式創(chuàng)新戰(zhàn)略制定與實(shí)施研究報(bào)告
- 和黃醫(yī)藥出售非核心合資企業(yè)交易摘要 -戰(zhàn)略性出售上海和黃藥業(yè)45%股權(quán)聚焦抗體靶向偶聯(lián)藥物 (ATTC)平臺
- 河北省石家莊市2024屆部分名校高三上學(xué)期一調(diào)考試英語
- 粉煤灰陶粒項(xiàng)目可行性研究報(bào)告立項(xiàng)模板
- 來賓關(guān)于成立固體廢物處理利用公司可行性報(bào)告
- 廣東省深圳市2023-2024學(xué)年五年級上學(xué)期英語期末試卷
- 藥物分離純化-藥物分離純化技術(shù)的作用
- 《精益生產(chǎn)培訓(xùn)》課件
- GB/T 3518-2023鱗片石墨
- 22G101三維立體彩色圖集
- 2024高中歷史中外歷史綱要下冊重點(diǎn)知識點(diǎn)歸納總結(jié)(復(fù)習(xí)必背)
- MQL4命令中文詳解手冊
- 水平井施工方案及措施
- 資產(chǎn)評估常用數(shù)據(jù)與參數(shù)手冊
- 分子影像學(xué)概論培訓(xùn)課件
- 小學(xué)四年級數(shù)學(xué)上冊促銷問題
- 國內(nèi)外中學(xué)數(shù)學(xué)教學(xué)改革與發(fā)展
評論
0/150
提交評論