版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)》第7章 宏及VBA編程《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)目錄7.1 宏7.2 VBA程序結(jié)構(gòu)
7.3 VBA程序中的運(yùn)算量、函數(shù)、語句
7.4 VBA程序流程控制7.5 過程及過程參數(shù)7.6 窗體、控件事件編程7.7 數(shù)據(jù)庫編程《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)7.1 宏宏(Macro)是由一個(gè)或多個(gè)操作組成的集合,其中的每個(gè)操作都能實(shí)現(xiàn)特定的功能,例如打開某個(gè)窗體或打印某個(gè)報(bào)表等。宏操作一般也叫宏命令。Access為開發(fā)人員提供了一些預(yù)定義的宏命令,這些宏命令可以直接在宏中使用。7.1.1宏的類型宏可以被分成3種基本類型:簡單宏、宏組、條件宏。簡單宏由若干基本操作組成,這些操作依次執(zhí)行。宏組是由若干個(gè)宏組成的集合,其中的每個(gè)宏都可以獨(dú)立運(yùn)行,相互之間沒有必然的聯(lián)系。宏組更象是一個(gè)對(duì)宏進(jìn)行分類管理的管理器,通過它可以把一些功能類似的宏組織到一起?!队?jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)簡單宏在執(zhí)行時(shí)不進(jìn)行任何條件判斷,其中的所有操作總是依次被執(zhí)行一遍,然后結(jié)束。如果宏的某些操作可以依據(jù)特定條件執(zhí)行,當(dāng)條件成立時(shí)執(zhí)行這些操作,條件不成立時(shí)不執(zhí)行這些操作,這樣的宏就叫做條件宏。條件是一個(gè)計(jì)算結(jié)果為True/False的邏輯表達(dá)式,其中可以包含字段和窗體控件的值。條件宏會(huì)依據(jù)條件結(jié)果決定執(zhí)行路徑。7.1.2常用宏命令A(yù)ccess提供了豐富的宏命令,常用的宏命令如表7-1所示,需要熟記其中的宏命令。宏命令一般也稱為宏操作,可以直接在宏中使用(調(diào)用)?!队?jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)7.1.3建立與運(yùn)行宏可以在宏設(shè)計(jì)器(窗口)中設(shè)計(jì)宏,打開宏設(shè)計(jì)器的方法如下:(1)在數(shù)據(jù)庫操作界面選擇“宏”對(duì)象。(2)單擊“新建”按鈕或選擇“插入”→“宏”命令,即可打開宏設(shè)計(jì)器窗口,如左下圖所示,將光標(biāo)置于“操作”列時(shí),相應(yīng)單元格變?yōu)橄吕?,可以從中選擇需要的操作命令,如果操作有參數(shù),在“操作參數(shù)”區(qū)域即自動(dòng)列出相應(yīng)參數(shù),如右下圖所示?!队?jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)可以插入和刪除操作行。插入行的方法如下:將光標(biāo)置于待插入行位置,然后選擇“插入”→“行”命令或單擊“插入行”按鈕。右擊待插入行位置,在彈出的快捷菜單中選擇“插入行”命令。執(zhí)行上述任一操作均可在當(dāng)前行之前插入一個(gè)空白行。刪除行的方法如下:將光標(biāo)置于待刪除行位置,然后選擇“編輯”→“刪除行”命令或單擊“刪除行”按鈕。右擊待刪除行位置,在彈出的快捷菜單中選擇“刪除行”命令。執(zhí)行上述任一操作均可刪除相應(yīng)的行。《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)1.建立簡單宏簡單宏沒有參數(shù),也沒有條件,如beep、FindNext、StopMacro等操作均沒有參數(shù)。例如,如下圖所示的宏將先發(fā)出嘟嘟聲,然后終止宏操作。在運(yùn)行宏之前需要先保存宏,單擊“保存”工具欄按鈕,或選擇“文件”→“保存”命令,或單擊設(shè)計(jì)器窗口關(guān)閉按鈕并在顯示的保存確認(rèn)對(duì)話框中選擇“是”,均可打開“另存為”對(duì)話框?!队?jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)2.建立帶參數(shù)的宏許多宏操作都具有參數(shù),設(shè)計(jì)時(shí)需要指定相應(yīng)的參數(shù),以O(shè)penForm操作為例,其參數(shù)如下圖所示?!按绑w名稱”參數(shù)用于指定要打開的窗體,可以直接輸入窗體名,也可以單擊下拉按鈕從下拉表中選擇窗體名?!队?jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)“視圖”用于指定打開方式,可以從下拉表中選擇“窗體”、“設(shè)計(jì)”、“打印預(yù)覽”、“數(shù)據(jù)表”、“數(shù)據(jù)透視表”或“數(shù)據(jù)透視圖”?!昂Y選名稱”用于指定記錄篩選條件,該篩選條件可以是一個(gè)查詢或保存為查詢的篩選條件?!癢here條件”用于設(shè)置SQLWhere條件(不包含Where本身),任何符合SQLWhere條件的表達(dá)式均可?!皵?shù)據(jù)模式”用于指定數(shù)據(jù)編輯方式,可以從下拉表中選擇“增加”、“編輯”或“只讀”,選擇“只讀”模式時(shí)不能添加或修改數(shù)據(jù)。“窗口模式”用于設(shè)置窗體打開模式,可以從下拉表中選擇“普通”、“隱藏”、“圖標(biāo)”或“對(duì)話框”?!队?jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)假定按左下圖所示的參數(shù)建立一個(gè)名為“編輯學(xué)生表”的宏(Where條件為:Year([tStudent]![出生日期])<1993),其運(yùn)行效果如右下圖所示,只有1993年以前出生的學(xué)生才能編輯,其他學(xué)生記錄不能被編輯?!队?jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)宏參數(shù)中可以包含窗體、報(bào)表中的控件值或控件屬性值、表的字段等。假定一個(gè)名為Exa的窗體上有一個(gè)文本框控件Text1,引用該控件值的方法如下:Forms![Exa]![Text1]上述表示方法的含義是窗體集合(Forms)中的Exa窗體上的Text1控件的值。表的字段的引用方法形如:[表名]![字段名]報(bào)表上的控件值的引用方法與窗體類似,把Forms換成Reports即可?!纠?-1】設(shè)計(jì)一個(gè)按指定出生年份編輯對(duì)應(yīng)學(xué)生信息的窗體?!队?jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)設(shè)計(jì)步驟如下:(1)從學(xué)生表編輯窗體復(fù)制/粘貼生成一個(gè)新窗體“學(xué)生表篩選編輯”。(2)在學(xué)生表篩選編輯窗體上添加一個(gè)文本框控件“出生年度”,設(shè)置其格式屬性為“常規(guī)數(shù)字”,小數(shù)位數(shù)屬性設(shè)置為0。(3)在學(xué)生表篩選編輯窗體上添加一個(gè)命令按鈕“篩選”,設(shè)置其標(biāo)題為“篩選”。(4)設(shè)計(jì)一個(gè)名為“出生年度篩選”的宏,宏操作為ApplyFilter,Where條件為“Year([出生日期])=[Forms]![學(xué)生表篩選編輯]![出生年度]”。(5)打開學(xué)生表篩選編輯窗體,設(shè)置命令按鈕“篩選”的“單擊”事件過程為“出生年度篩選”宏?!队?jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)(6)運(yùn)行學(xué)生表篩選編輯窗體,輸入出生年度,單擊“篩選”按鈕即可編輯出生年度為指定值的學(xué)生信息,如圖所示?!队?jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)3.建立條件宏宏可以有運(yùn)行條件,這就是條件宏。條件宏只在條件滿足時(shí)才執(zhí)行。在宏設(shè)計(jì)器窗口處于活動(dòng)狀態(tài)下選擇“視圖”→“條件”命令或單擊“條件”工具欄按鈕,或右擊宏設(shè)計(jì)器窗口標(biāo)題欄并在彈出的快捷菜單中選擇“條件”命令,即可在設(shè)計(jì)器窗口“操作”列之前增加一個(gè)條件列。例如,為“出生年度篩選”宏增加一個(gè)條件:當(dāng)輸入值大于1950時(shí)才進(jìn)行篩選,如圖所示?!队?jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)增加了條件后,再次運(yùn)行學(xué)生表篩選編輯窗體,只有當(dāng)輸入的出生年度為1950年之后時(shí),單擊“篩選”按鈕才實(shí)際執(zhí)行篩選操作,否則不執(zhí)行篩選操作。4.建立宏組可以把多個(gè)宏組織到一起形成宏組,其設(shè)計(jì)方法如下。(1)打開宏設(shè)計(jì)器。(2)在宏設(shè)計(jì)器中增加“宏名”列。在宏設(shè)計(jì)器窗口處于活動(dòng)狀態(tài)下選擇“視圖”→“宏名”命令或單擊“宏名”工具欄按鈕,或右擊宏設(shè)計(jì)器窗口標(biāo)題欄并在彈出的快捷菜單中選擇“宏名”菜單,即可在設(shè)計(jì)器窗口“操作”列之前(如果有“條件”列,則在“條件”列之前)增加一個(gè)宏名列?!队?jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)(3)設(shè)計(jì)宏組中的每個(gè)宏。宏組中每個(gè)宏定義首行定義宏名,其他行不能定義宏名,一個(gè)宏從宏名定義行開始,到下一個(gè)宏名定義行(如果有)的前一行結(jié)束。下圖結(jié)出的是一個(gè)名為“宏組舉例”的宏組,其中包含M1和M2兩個(gè)宏?!队?jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)運(yùn)行調(diào)用宏組中的宏的方法是在宏名之前加宏組名前綴,例如,“宏組舉例”中定義的兩個(gè)宏的調(diào)用方法如下:宏組舉例.M1宏組舉例.M25.AutoExec自動(dòng)執(zhí)行宏可以建立一個(gè)宏名為AutoExec(字母大小寫不限)的宏,在打開數(shù)據(jù)庫時(shí),將首先打開啟動(dòng)窗體(如果在“啟動(dòng)”對(duì)話框中設(shè)置了啟動(dòng)窗體),然后會(huì)立即執(zhí)行AutoExec宏。可以不設(shè)置啟動(dòng)窗體,而是利用Autoexec宏打開應(yīng)用程序的初始窗體。一個(gè)數(shù)據(jù)庫中只能建立一個(gè)Autoexec宏?!队?jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)6.運(yùn)行測試宏在宏設(shè)計(jì)器窗口活動(dòng)狀態(tài)下,選擇“運(yùn)行”→“運(yùn)行”命令或單擊“運(yùn)行”按鈕,即可運(yùn)行當(dāng)前正在設(shè)計(jì)的宏或宏組中的第一個(gè)宏??梢詥尾秸{(diào)試宏,操作步驟如下:(1)打開或激活宏設(shè)計(jì)器窗口,假定打開“宏組舉例”。(2)選擇“運(yùn)行”→“單步”命令或單擊“單步”按鈕,切換選中單步(“單步”工具欄按鈕反相顯示)。(3)選擇“運(yùn)行”→“運(yùn)行”命令或單擊“運(yùn)行”按鈕,即打開“單步執(zhí)行宏”對(duì)話框,單擊“單步執(zhí)行”按鈕執(zhí)行當(dāng)前操作,然后繼續(xù)顯示下一個(gè)操作,單擊“停止”按鈕終止運(yùn)行,單擊“繼續(xù)”按鈕執(zhí)行當(dāng)前操作并繼續(xù)顯示下一個(gè)操作?!队?jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)7.2VBA程序結(jié)構(gòu)宏只能實(shí)現(xiàn)一些簡單的處理功能,對(duì)于復(fù)雜的處理而言,很難通過宏來加以解決,這就需要利用VBA(VisualBasicforApplication)應(yīng)用程序來解決。VBA程序是一個(gè)符合VBA語法要求的語句的有限序列,其中的每個(gè)語句都有明確的操作功能并能被Access理解和執(zhí)行。程序中語句序列一般也叫程序代碼或代碼。VBA程序一般被分成不同的功能單位,叫做過程。過程可以單獨(dú)被觸發(fā)執(zhí)行。Access中可以有3類VBA程序:一是對(duì)象事件過程,二是獨(dú)立子過程,三是獨(dú)立函數(shù)過程。事件過程屬于對(duì)象的組成部分,它在對(duì)象事件發(fā)生時(shí)被觸《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)發(fā)執(zhí)行一次。獨(dú)立子過程和獨(dú)立函數(shù)過程只能在模塊中定義并可在其他程序代碼中直接調(diào)用執(zhí)行。7.2.1對(duì)象事件過程在面向?qū)ο蟪绦蛟O(shè)計(jì)中,對(duì)象是程序的基本組成單位,程序設(shè)計(jì)過程就是每一個(gè)對(duì)象的設(shè)計(jì)過程。對(duì)象包含屬性、事件和方法。屬性用于定義對(duì)象的特征,每類對(duì)象都有許多屬性,這些屬性又可以分類進(jìn)行設(shè)計(jì),例如,窗體及窗體控件的屬性窗口中就把屬性分為“格式”、“數(shù)據(jù)”、“其他”等類別。方法是對(duì)象可以執(zhí)行的預(yù)定義操作,每類對(duì)象都有一系列方法可以調(diào)用執(zhí)行,在Access對(duì)象設(shè)計(jì)中,一般不需要用戶調(diào)用方法,但在設(shè)計(jì)VBA代碼時(shí),則可能需要調(diào)用對(duì)象方法以實(shí)現(xiàn)某種處理操作?!队?jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)事件是對(duì)象可以響應(yīng)的操作,每類對(duì)象都預(yù)定義了一系列事件。以命令按鈕的“單擊”事件為例,運(yùn)行窗體時(shí)如果單擊某一命令按鈕,就觸發(fā)了相應(yīng)按鈕的單擊事件,這時(shí)就會(huì)執(zhí)行為該事件指定的操作,這個(gè)操作可以是一個(gè)宏,也可以是一個(gè)事件過程(VBA過程)。事件代碼以PrivateSub開始,以EndSub結(jié)束。編輯對(duì)象的某一事件過程的操作方法有兩種,第一種操作方法如下:(1)打開對(duì)象的屬性窗口,選擇“事件”選項(xiàng)卡。(2)將光標(biāo)置于指定事件的編輯框,這時(shí),編輯框變?yōu)橄吕斜恚瑥南吕斜碇羞x擇“[事件過程]”。《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)(3)單擊編輯框右側(cè)的瀏覽按鈕,如左下圖所示,即可打開VisualBasic編輯器及事件過程代碼編輯窗口,如右下圖所示。第二種操作方法如下:(1)右擊相應(yīng)控件,從彈出的快捷菜單中選擇“事件生成器”命令。如果已經(jīng)生成過事件代碼則會(huì)打開事件代碼編輯窗口;《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)如果尚未生成事件代碼,系統(tǒng)會(huì)打開“選擇生成器”對(duì)話框,如圖所示。(2)單擊選中對(duì)話框列表中“代碼生成器”,單擊“確定”按鈕,即可打開VisualBasic編輯器及事件過程代碼編輯窗口。(3)在代碼編輯窗口中可以通過對(duì)象選擇下拉列表選擇合適的對(duì)象,通過事件下拉列表選擇待編輯代碼的事件?!队?jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)打開事件代碼編輯窗口并確認(rèn)對(duì)象及事件無誤后,就可以輸入對(duì)應(yīng)的程序代碼,輸入完成后,關(guān)閉窗口即可。對(duì)象事件過程是包含在對(duì)象之內(nèi)的,是對(duì)象的組成部分。如果希望程序代碼可以獨(dú)立存在并為多個(gè)對(duì)象所使用,就需要設(shè)計(jì)獨(dú)立模塊和獨(dú)立過程。7.2.2模塊與獨(dú)立過程獨(dú)立過程包括獨(dú)立子過程和獨(dú)立函數(shù)過程,均保存在模塊對(duì)象中。一個(gè)模塊可以保存多個(gè)獨(dú)立子過程和獨(dú)立函數(shù)過程。1.模塊模塊分為標(biāo)準(zhǔn)模塊(簡稱模塊)和類模塊兩種,本書不介《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)紹類模塊。模塊(標(biāo)準(zhǔn)模塊,下同)是VBA過程、聲明、語句的集合,這些過程、聲明、語句作為一個(gè)模塊對(duì)象存儲(chǔ)在一起。模塊的首部是選項(xiàng)設(shè)置及變量說明區(qū),在此區(qū)域可以設(shè)置模塊參數(shù)和定義模塊變量、符號(hào)常量。在選項(xiàng)設(shè)置及變量說明區(qū)之后是過程代碼區(qū),在此區(qū)域可以定義一個(gè)或多個(gè)獨(dú)立子過程或獨(dú)立函數(shù)過程。過程之間不能有任何其他語句存在。要設(shè)計(jì)VBA模塊,首先要進(jìn)入VBA開發(fā)環(huán)境,即VB編輯器。打開VB編輯器的方法有以下幾種:選擇“工具”→“宏”→“VisualBasic編輯器”命令或按Alt+F11《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)鍵,均可打開VisualBasic編輯器,如圖所示。右擊數(shù)據(jù)庫操作界面并在彈出的快捷菜單中選擇“VisualBasic編輯器”命令同樣可以打開VisualBasic編輯器。選擇“插入”→“模塊”命令,或選擇數(shù)據(jù)庫操作界面中“模塊”,然后單擊“新建”工具欄按鈕,可以在打開VisualBasic編《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)輯器的同時(shí)打開新建模塊代碼編輯窗口,如圖所示。選擇數(shù)據(jù)庫操作界面中的“模塊”對(duì)象,雙擊已有的模塊或單擊選中已有模塊,然后單擊“設(shè)計(jì)”工具欄按鈕,均可在打開VisualBasic編輯器的同時(shí)打開相應(yīng)模塊代碼編輯窗口。在VisualBasic編輯器中可以同時(shí)打開多個(gè)模塊代碼設(shè)計(jì)《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)窗口。常用的編輯器操作如下:選擇編輯器“插入”→“模塊”命令或選擇編輯器“插入模塊”按鈕,可以插入一個(gè)新模塊并打開相應(yīng)的代碼編輯窗口。選擇編輯器“插入”→“過程”命令或選擇編輯器“插入過程”按鈕,系統(tǒng)先打開一個(gè)“添加過程”對(duì)話框,如圖所示。輸入過程名稱并選擇過程類型及其作用范圍,然后單擊“確定”按鈕,即在當(dāng)前活動(dòng)的模塊代碼編輯窗口中插入一個(gè)新的過程框架?!队?jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)選擇“文件”→“保存”命令或單擊“保存”按鈕,可以保存所有模塊??梢躁P(guān)閉任一模塊代碼編輯窗口,這時(shí)并不保存模塊代碼??梢栽谀K中定義獨(dú)立子過程和獨(dú)立函數(shù)過程。2.獨(dú)立子過程獨(dú)立子過程可以完成某種處理請(qǐng)求,執(zhí)行完成后,返回到調(diào)用語句的下一條語句繼續(xù)執(zhí)行。依據(jù)過程的作用范圍不同,獨(dú)立子過程可以分為公共過程和私有過程兩種。公共的獨(dú)立子過程框架形如:PublicSubqqq()EndSub《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)私有的獨(dú)立子過程框架形如:PrivateSubwww()EndSubqqq、www為過程名,實(shí)際定義過程時(shí)過程名會(huì)有所變化。一個(gè)模塊中的過程名不能重復(fù)。在框架的首尾語句行之間添加自己的設(shè)計(jì)代碼即可。獨(dú)立子過程調(diào)用是在代碼中直接把子過程名作為程序行即可。例如,調(diào)用www子過程只須把www作為一條語句即可。有參數(shù)的過程定義及其調(diào)用將在節(jié)介紹。3.獨(dú)立函數(shù)過程獨(dú)立函數(shù)過程可以完成特定的計(jì)算處理并把計(jì)算結(jié)果返《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)回給調(diào)用程序。獨(dú)立函數(shù)過程同樣可以分為公共過程和私有過程兩種,公共函數(shù)過程框架形如:PublicFunctioneee()EndFunction私有函數(shù)過程框架形如:PrivateFunctionfff()EndSub與子過程一樣,eee、fff為過程名且不能與模塊內(nèi)的其他過程名重復(fù)。在框架的首尾語句行之間添加自己的設(shè)計(jì)代碼即可?!队?jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)獨(dú)立函數(shù)過程可以在表達(dá)式中調(diào)用,調(diào)用形式是函數(shù)名后加括號(hào)。有參數(shù)的函數(shù)過程定義及其調(diào)用將在節(jié)介紹。4.運(yùn)行測試獨(dú)立子過程可以運(yùn)行測試獨(dú)立子過程。將光標(biāo)置于待運(yùn)行子過程語句行,然后選擇“運(yùn)行”→“運(yùn)行子過程/用戶窗體”命令或單擊“運(yùn)行子過程/用戶窗體”按鈕,即可運(yùn)行相應(yīng)的子過程。7.3VBA程序中的運(yùn)算量、函數(shù)、語句無論是事件過程還是獨(dú)立過程都需要設(shè)計(jì)者編寫實(shí)際的程序代碼以完成預(yù)定要求。程序是語句的有限序列,語句又是如何構(gòu)成的呢?語句中一般包含語句定義符,表達(dá)式等,表達(dá)式中的運(yùn)算量可以是常量、變量、對(duì)象屬性、函數(shù)等?!队?jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)在前面的章節(jié)中已經(jīng)介紹了數(shù)據(jù)類型、常量、表達(dá)式等概念,本節(jié)不再重復(fù)介紹。7.3.1常量、變量說明與變量、對(duì)象屬性賦值常量一般有兩種形式,一種形式就是使用常量本身,另一種形式是使用符號(hào)常量。符號(hào)常量需要先定義、后使用。變量是在程序中定義的,在程序運(yùn)行期間取值可以被改變的運(yùn)算量。和符號(hào)常量一樣,變量也需要先定義、后使用。符號(hào)常量和變量都有確定的數(shù)據(jù)類型,定義時(shí)既需要指定是什么,也要指定數(shù)據(jù)類型。一般把定義常量/變量叫做常量/變量說明,相應(yīng)的語句叫做常量/變量說明語句?!队?jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)1.常量、變量說明符號(hào)常量說明語句的語法格式如下:[Public|Private]Const<常量名>As<數(shù)據(jù)類型定義符>=<常量值>[,<常量名>As<數(shù)據(jù)類型定義符>=<常量值>……]變量說明語句的語法格式如下:{Dim|Public|Private}<變量名>[As<數(shù)據(jù)類型定義符>][,<變量名>[As<數(shù)據(jù)類型定義符>]……]Public、Private說明符只能用在模塊首部的說明語句中,不能在過程內(nèi)部使用。Dim既可以在模塊首部使用,也可以在過程中使用。在模塊首部選項(xiàng)設(shè)置及變量說明區(qū)用Private或Dim說明《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)的變量屬于私有變量,可以在整個(gè)模塊內(nèi)使用,簡稱模塊變量。如果希望某些模塊變量可以在其他模塊中使用,把Private或Dim換成Public即可,用Public說明的變量一般也叫全局變量。在過程內(nèi)部說明的變量只能在該過程內(nèi)部使用,一般叫做局部變量。Private、Public說明常量的作用范圍與說明變量相同。常量名、變量名命名規(guī)則如下:第一個(gè)字符必須是英文字母或漢字。不能在名稱中使用算術(shù)運(yùn)算符(+,-,*,/,\,^)及空格、句點(diǎn)(.)、驚嘆號(hào)(!)、或@、&、$,#等字符。名稱的長度不能超過255個(gè)字符,一般以10個(gè)字符以內(nèi)為宜。《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)名稱不能與VBA語句定義關(guān)鍵字(如Sub、Dim、Function等)相同,同一過程內(nèi)的名稱不能相同。常量、變量說明中的數(shù)據(jù)類型定義符一般是一個(gè)英文單詞(如表7-2所示,定長字符串須帶一個(gè)整數(shù)參數(shù))。Boolean 邏輯型String 變長字符串型String*<整數(shù)> 定長字符串型Date 日期型Currency 貨幣型Byte 字節(jié)型Integer 整型《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)Long 長整型Single 單精度型Double 雙精度型Variant 變體型常量說明有以下3種可能的形式(以單常量說明為例):(1)PublicConst<常量名>As<數(shù)據(jù)類型定義符>=<常量值>,說明全局常量。(2)PrivateConst<常量名>As<數(shù)據(jù)類型定義符>=<常量值>,說明私有常量。(3)Const<常量名>As<數(shù)據(jù)類型定義符>=<常量值>,說明私有常量。《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)【例7-2】下列常量說明是否合法。(1)PublicConstqqqAsInteger=200(2)ConstA1AsDouble=2.234(3)PrivateConstA2#AsLong=3456(4)ConsttyAsbooLeaN=False(5)ConstscAsString*4="123456789"【解答】(1)說明一個(gè)整型公共常量qqq,其取值為200。(2)說明一個(gè)私有雙精度型常量A1,其取值為2.234。(3)說明不合法,常量名包含非法字符#號(hào)?!队?jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)(4)說明一個(gè)私有邏輯型變量ty,其初值為False。關(guān)鍵字輸入時(shí)大小寫無關(guān),本題booLeaN是正確的。(5)說明一個(gè)定長字符串常量sc,其值為字符串"1234"。雖然字符串初值為"123456789",但因是定長字符串,所以只取其前4個(gè)字符。在VBA代碼中可以使用一些預(yù)定義常量,這些常量由系統(tǒng)定義且均以vb開頭。程序中可以直接使用這些常量(常數(shù))。除了符號(hào)常量之外,還可以直接在表達(dá)式中使用常數(shù),為區(qū)別這些常數(shù)的準(zhǔn)確數(shù)據(jù)類型,一般在常數(shù)后面加類型說明符后綴。例如,1234@表示貨幣常數(shù)1234,45.56#表示雙精度常數(shù)45.56?!队?jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)變量說明有以下幾種基本形式(以單變量說明為例):(1)Dim<變量名>As<數(shù)據(jù)類型定義符>,說明指定類型的私有變量或局部變量。(2)Public<變量名>As<數(shù)據(jù)類型定義符>,說明指定類型的公共變量。(3)Private<變量名>As<數(shù)據(jù)類型定義符>,說明指定類型的私有變量。(4)Dim<變量名>,說明Variant型私有變量或局部變量。(5)Public<變量名>,說明Variant型公共變量。(6)Private<變量名>,說明Variant型私有變量。使用(4)~(6)格式說明時(shí),變量名之后可以加類型說明符。《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)加類型說明符時(shí)表示說明指定類型的變量(使用變量時(shí)可以帶或不帶類型說明符),不加類型說明符時(shí)表示說明一個(gè)Variant類型的變量。Variant類型的變量可以賦任何類型的值?!纠?-3】分析下列變量說明。(1)Dimss#(2)PublicwwwAsLong(3)Privateqqq,eeeAsString(4)Dimtt(5)pUbliCu1AsDouble(6)Privatey-1AsVariant(7)Dima1Asdate《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)(8)DimtsAsString*20【解答】(1)說明一個(gè)私有或局部雙精度型變量ss,(使用時(shí)用ss或ss#表示均可)。(2)說明一個(gè)長整型公共變量www。(3)說明兩個(gè)私有變量。第一個(gè)變量qqq沒有類型說明,是Variant型的,第二個(gè)變量eee為字符串型的。(4)說明一個(gè)私有或局部變量tt,因tt沒有類型說明符,因此是Variant型的。(5)Public符合語法要求,說明一個(gè)雙精度型公共變量u1。(6)變量名中包含減號(hào),不合語法要求,說明無效?!队?jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)(7)date符合語法要求,說明一個(gè)私有或局部日期/時(shí)間型變量a1。(8)說明一個(gè)長度為20的定長字符串變量。變量也可以不說明,而是通過賦值語句自動(dòng)建立。這是一種不規(guī)范的變量使用方法,建議不要使用。2.數(shù)組說明數(shù)組是同類型變量的有序集合,其中的每個(gè)變量都叫做數(shù)組元素。數(shù)組元素之間通過下標(biāo)加以區(qū)分,下標(biāo)一般是一個(gè)大于或等于0的連續(xù)整型數(shù)字,相當(dāng)于數(shù)組元素在數(shù)組中的位置序號(hào)。數(shù)組必須先說明,后使用?!队?jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)有兩種數(shù)組說明方法,相應(yīng)說明語句的典型語法格式如下:{Dim|Public|Private}<數(shù)組名>(<下標(biāo)1上界>[,<下標(biāo)2上界>])[As<數(shù)據(jù)類型定義符>]{Dim|Public|Private}<數(shù)組名>(<下標(biāo)1下界>To<下標(biāo)1上界>[,<下標(biāo)2下界>To<下標(biāo)2上界>])[As<數(shù)據(jù)類型定義符>]Dim、Public、Private作用同前。數(shù)組名是數(shù)組的標(biāo)識(shí),其命名規(guī)則與變量名相同。 第一種說明方法只給出下標(biāo)上界,下標(biāo)下界通過OptionBase語句指定,其語法格式為:OptionBase{0|1}OptionBase語句只能在模塊首部選項(xiàng)設(shè)置及變量說明區(qū)中使用一次,用于設(shè)置模塊內(nèi)所有數(shù)組說明中未說明的數(shù)組下標(biāo)下界。OptionBase0表示下標(biāo)下界為0,OptionBase1表示《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)下標(biāo)下界為1。只有一個(gè)下標(biāo)時(shí),相應(yīng)的數(shù)組是一維數(shù)組,有兩個(gè)下標(biāo)的數(shù)組是二維數(shù)組。第二種說明方法指定每一個(gè)下標(biāo)的下界和上界,與OptionBase設(shè)置無關(guān)。習(xí)慣上把第一個(gè)下標(biāo)稱為行,第二個(gè)下標(biāo)稱為列?!纠?-4】分析下面程序段中說明的數(shù)組情況(假定模塊首部執(zhí)行了OptionBase0)。DimAA(20,12)AsInteger,BB(2)AsLongPublicCC(1To2,5To6)AsByte【解答】AA數(shù)組是一個(gè)二維整型數(shù)組,有21行、13列,共有273個(gè)數(shù)組元素:AA(0,0),AA(0,1),…,AA(20,11),AA(20,12)?!队?jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)BB數(shù)組是一個(gè)一維長整型數(shù)組,共有3個(gè)數(shù)組元素:BB(0),BB(1),BB(2)。CC數(shù)組是一個(gè)二維字節(jié)型數(shù)組,有二行、二列,共有4個(gè)數(shù)組元素:CC(1,5),CC(1,6),CC(2,5),CC(2,6)。3.變量賦值賦值語句用于對(duì)變量(包括數(shù)組元素)賦值,其語法格式如下:
<變量名>=<表達(dá)式>賦值語句首先求解表達(dá)式并將計(jì)算結(jié)果值賦給指定的變量。賦值語句中表達(dá)式的類型應(yīng)與變量的類型一致,否則可能導(dǎo)致語法錯(cuò)誤或數(shù)據(jù)錯(cuò)誤。表達(dá)式中出現(xiàn)的所有變量必須已經(jīng)說明和賦值,否則可能產(chǎn)生錯(cuò)誤?!队?jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)賦值語句中的變量一般應(yīng)該在賦值語句之前已經(jīng)說明。如果變量尚未說明,則會(huì)依據(jù)表達(dá)式類型自動(dòng)建立一個(gè)對(duì)應(yīng)類型的私有變量。規(guī)范的做法是先說明變量,之后再給該變量賦值。變量可以多次被賦值,變量的當(dāng)前值是最近一次賦值的結(jié)果。4.對(duì)象引用與對(duì)象屬性賦值可以在VBA代碼中操作Access對(duì)象,例如,窗體、報(bào)表等對(duì)象及其控件均可通過VBA操作。引用窗體及窗體控件的常用方法如下:
Forms!<窗體名>!<控件名>,例如,F(xiàn)orms!MyForm!Text1表示引用MyForm窗體上控件Text1的值(當(dāng)前輸入/顯示的Value屬性值)。《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)對(duì)象名(窗體名、控件名)加方括號(hào),例如Forms!MyForm!Text1也可以表示為Forms![MyForm]![Text1]或[Forms]![MyForm]![Text1]。引用窗體屬性的常用方法如下:
Forms!<窗體名>.<屬性名>,例如,F(xiàn)orms!MyForm.Caption表示引用MyForm窗體的標(biāo)題屬性。對(duì)象名加方括號(hào),例如,F(xiàn)orms![MyForm].Caption或[Forms]![MyForm].Caption與Forms!MyForm.Caption是等價(jià)的。引用窗體控件屬性的常用方法如下:
Forms!<窗體名>!<控件名>.<屬性名>,例如,F(xiàn)orms!MyForm!Text1.Locked表示引用MyForm窗體上控件Text1的Locked屬性?!队?jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)對(duì)象名(窗體名、控件名)加方括號(hào),例如Forms!MyForm!Text1.Locked也可以表示為Forms![MyForm]![Text1].Locked或[Forms]![MyForm]![Text1].Locked。上述方法同樣適用于報(bào)表,把Forms換成Reports、窗體名換成報(bào)表名即可。可以在VBA代碼中對(duì)窗體、報(bào)表屬性或窗體、報(bào)表控件屬性賦值。下列代碼是相應(yīng)的例子,說明在注釋中給出。Forms![MyForm].Caption="加法測試" '修改MyForm窗體標(biāo)題Forms!MyForm!Text2=Null '給Text2賦空值Forms!MyForm!Text1.Locked=True '鎖定文本框Text1
在當(dāng)前窗體代碼模塊(對(duì)象事件過程代碼模塊)內(nèi)引用控件《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)時(shí),可以采取下列更為簡單的方式:
Me!<控件名>.<屬性名>,例如,Me!Text1.Locked表示引用當(dāng)前窗體上控件Text1的Locked屬性。
<控件名>.<屬性名>,例如,Text1.Locked表示引用當(dāng)前窗體上控件Text1的Locked屬性??丶臃嚼ㄌ?hào),例如Text1.Locked也可以表示為[Text1].Locked。窗體、報(bào)表、控件屬性在VBA代碼中引用時(shí)必須使用其原始屬性名,不能用屬性的中文名稱。常用屬性的原始屬性名如表7-3所示,應(yīng)熟記其中的屬性名?!队?jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)5.窗體/報(bào)表節(jié)對(duì)象引用可以引用窗體節(jié)對(duì)象以設(shè)置窗體節(jié)屬性。窗體節(jié)屬性的引用方式如下:
Forms!<窗體名>.Section(索引值)。索引值可以使用數(shù)值或符號(hào)常量,0(acDetail)表示主體節(jié),1(acHeader)表示窗體/報(bào)表頁眉節(jié),2(acFooter)表示窗體/報(bào)表頁腳節(jié),3(acPageHeader)表示窗體/報(bào)表頁面頁眉節(jié),4(acPageFooter)表示窗體/報(bào)表頁面頁腳節(jié)。當(dāng)前窗體/報(bào)表可以使用Me指代。7.3.2內(nèi)部函數(shù)內(nèi)部函數(shù)是VB預(yù)定義的函數(shù),可以在表達(dá)式中直接調(diào)用。常用的內(nèi)部函數(shù)已在節(jié)表4-2、表4-3中介紹過了,另外,《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)有兩個(gè)重要的函數(shù)需要特別說明,一個(gè)是輸入函數(shù)InputBox,另一個(gè)是輸出函數(shù)MsgBox。InputBox函數(shù)用于返回輸入的字符串?dāng)?shù)據(jù),其典型語法格式如下:InputBox(<提示>[,<標(biāo)題>][,<默認(rèn)值>][,<x坐標(biāo)>][,<y坐標(biāo)>])InputBox函數(shù)顯示一個(gè)對(duì)話框,“標(biāo)題”字符串為對(duì)話框標(biāo)題,“提示”字符串為對(duì)話框內(nèi)顯示的提示信息,對(duì)話框中顯示一個(gè)輸入編輯框用于接收輸入的字符串,“默認(rèn)值”字符串為輸入框中預(yù)置的輸入內(nèi)容,x,y坐標(biāo)分別用于指定對(duì)話框左邊界距屏幕左邊沿的距離和對(duì)話框上邊界距屏幕上邊沿的距離,坐標(biāo)計(jì)量單位為VB計(jì)量單位。省略x,y坐標(biāo)時(shí)將居中顯示對(duì)話框。例如,下列語句執(zhí)行時(shí)將居中顯示如下頁圖所示的對(duì)話《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)框,輸入數(shù)據(jù)并單擊“確定”按鈕后,關(guān)閉對(duì)話框并把輸入的字符串返回,然后賦給變量sss。sss=InputBox("請(qǐng)輸入一個(gè)數(shù)字:","輸入數(shù)據(jù)","1")InputBox函數(shù)只能輸入字符串?dāng)?shù)據(jù),如果要輸入其他類型的數(shù)據(jù),需要用類型轉(zhuǎn)換函數(shù)進(jìn)行類型轉(zhuǎn)換。例如,假定aaa為整型變量,需要用Val函數(shù)把InputBox函數(shù)輸入結(jié)果轉(zhuǎn)《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)換為數(shù)值型數(shù)據(jù)才能賦給aaa:aaa=Val(InputBox("請(qǐng)輸入一個(gè)數(shù)字:","輸入數(shù)據(jù)","1"))MsgBox函數(shù)用于顯示一個(gè)提示信息框并返回用戶響應(yīng)結(jié)果,其典型語法格式如下:MsgBox(<提示信息>[,<按鈕設(shè)置值>[,<標(biāo)題>]])“提示信息”字符串為對(duì)話框顯示的信息。“標(biāo)題”字符串指定對(duì)話框標(biāo)題?!鞍粹o設(shè)置值”為一整數(shù),用于設(shè)置對(duì)話框顯示按鈕、圖標(biāo)等參數(shù),該值由按鈕類型與數(shù)目、圖標(biāo)樣式、缺省設(shè)置、模式參數(shù)等四類數(shù)據(jù)中各取一個(gè)(或0個(gè))相加得到。如表7-4所示為4類參數(shù)值說明。用戶響應(yīng)對(duì)話框操作并關(guān)閉對(duì)話框后,函數(shù)返回用戶單擊的按鈕參數(shù),如表7-5所示。《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)在使用按鈕設(shè)置值參數(shù)時(shí),可以使用表達(dá)式依次把各設(shè)置參數(shù)相加,這樣既簡單又直觀,例如,下列語句:ww=MsgBox("請(qǐng)選擇操作按鈕",3+64+256+0)語句中3表示顯示“是”、“否”、“取消”按鈕,64表示顯示藍(lán)色信息符號(hào)圖標(biāo),256表示第二個(gè)按鈕(“否”按鈕)為默認(rèn)按鈕,0表示對(duì)話框掛起應(yīng)用程序直至對(duì)話框關(guān)閉。執(zhí)行時(shí)顯示的對(duì)話框如圖所示。單擊按鈕關(guān)閉對(duì)話框后,返回值被賦給ww變量,根據(jù)該變量的值即可知道用戶單擊的是哪個(gè)按鈕?!队?jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)7.3.3常用語句及對(duì)象程序是語句的有限序列,語句是一行一行依次排列的,一般每行一個(gè)語句??梢栽谝恍休斎攵鄺l語句,這時(shí)各語句之間要用英文冒號(hào)(:)分隔開來。當(dāng)語句行較長時(shí),可以多行書寫,除最后一行外,前面各行末尾需要使用下劃線(_)續(xù)行符(續(xù)行符之前至少要留一個(gè)空格,不能與語句內(nèi)容連著書寫)。不能在表達(dá)式或?qū)ο竺虚g位置續(xù)行。程序中的常用語句可以分為如下幾類:注釋語句。說明語句。如變量說明、數(shù)組說明、選項(xiàng)說明等。變量賦值語句。流程控制語句?!队?jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)輸入輸出語句。
DoCmd對(duì)象及其他對(duì)象方法調(diào)用。1.注釋注釋語句用于在程序中添加注釋說明。注釋語句并不影響程序的運(yùn)行,但對(duì)程序設(shè)計(jì)及維護(hù)卻非常重要,程序中應(yīng)有適當(dāng)?shù)淖⑨屨f明。注釋語句有兩種基本形式,一種是用Rem引導(dǎo)注釋文本,另一種是用英文單引號(hào)引導(dǎo)注釋文本。用Rem引導(dǎo)注釋時(shí),Rem與注釋文本之間至少要留一個(gè)空格,使用單引號(hào)無此限制。用Rem引導(dǎo)的注釋是一個(gè)獨(dú)立的語句,不能添加在其他語句之后,用單引號(hào)引導(dǎo)的注釋既可以單獨(dú)作為一個(gè)注釋語句,也可以添加到其他語句行的末尾。續(xù)行符之后不能添加用單引號(hào)引導(dǎo)的注釋?!队?jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)【例7-5】分析下列程序段中的語句(假定模塊首部執(zhí)行了OptionBase1)。Rem說明變量及數(shù)組DimsssAsString'說明變量sss'多語句行,各語句之間用冒號(hào)分隔Dimaa(2,2)AsLong:Dimqq@'說明數(shù)組、變量【解答】本段程序包含4個(gè)語句行。第一行是一個(gè)注釋語句;第二行是一個(gè)變量說明語句,語句末尾有單引號(hào)引導(dǎo)的注釋說明;第三行是一條用單引號(hào)引導(dǎo)的注釋語句;第四行是一個(gè)多語句行,第一條語句說明一個(gè)2行2列的長整型數(shù)組aa,第二條語句說明一個(gè)貨幣型變量qq,語句行末尾為單引號(hào)引導(dǎo)的注釋。2.說明語句常量、變量說明語句和變量賦值語句前面已經(jīng)介紹過,不《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)再贅述。說明語句一般放在程序的首部,變量賦值語句用于實(shí)現(xiàn)程序的運(yùn)算處理。前面介紹了數(shù)組下標(biāo)選項(xiàng)說明語句OptionBase語句,還有另一個(gè)十分重要的選項(xiàng)說明語句OptionCompare,其語法格式如下:OptionCompare{Binary|Text|Database}OptionCompare語句用于設(shè)置字符串比較方法,和OptionBase一樣只能在模塊首部使用,其作用范圍是整個(gè)模塊。OptionCompareBinary設(shè)置的比較方式是對(duì)字符二進(jìn)制編碼進(jìn)行比較,區(qū)分字母大小寫。OptionCompareText設(shè)置的比較方式按字符比較,不區(qū)分字母大小寫。《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)OptionCompareDatabase設(shè)置則依據(jù)Access選項(xiàng)設(shè)置進(jìn)行字符串比較。3.輸入輸出可以用InputBox函數(shù)實(shí)現(xiàn)數(shù)據(jù)輸入,也可以用窗體控件實(shí)現(xiàn)數(shù)據(jù)輸入。可以用MsgBox函數(shù)實(shí)現(xiàn)數(shù)據(jù)輸出,也可以用窗體控件或Debug對(duì)象實(shí)現(xiàn)數(shù)據(jù)輸出。Debug對(duì)象的Print方法可以在立即窗口輸出結(jié)果,Debug對(duì)象的Print方法語法格式如下:Debug.Print<輸出表達(dá)式列表>語句執(zhí)行時(shí)依次輸出表達(dá)式列表中的每個(gè)表達(dá)式的值。輸出表達(dá)式列表中的輸出表達(dá)式可以用逗號(hào)或分號(hào)分隔。用逗號(hào)分隔時(shí),下一表達(dá)式的值移動(dòng)到當(dāng)前行的下一個(gè)Tab位置輸出,用分號(hào)分隔時(shí),下一表達(dá)式的輸出位置在上一個(gè)表達(dá)式值《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)之后留一個(gè)空格之后的位置處(字符串、數(shù)字0不輸出符號(hào)位,非0數(shù)字輸出一個(gè)符號(hào)位,+號(hào)用一個(gè)空格符代替)。文本框是最常用的數(shù)據(jù)輸入、輸出控件。【例7-6】VBA程序中可以用Debug對(duì)象的Print方法輸出數(shù)據(jù),輸出結(jié)果在“立即”窗口顯示。PublicSubqqq()DimiAsInteger
Fori=1To10Debug.PrintiNextEndSub《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)運(yùn)行時(shí),立即窗口顯示一列數(shù)據(jù),依次為1,2,3,4,5,6,7,8,9,10。打開立即窗口的方法如下:在VisualBasic編輯器窗口選擇“視圖”→“立即窗口”命令?;蛟赩isualBasic編輯器窗口活動(dòng)狀態(tài)下按Ctrl+G快捷鍵。4.DoCmd對(duì)象
DoCmd對(duì)象是VBA代碼中可以直接引用的對(duì)象,一般在VBA代碼中調(diào)用DoCmd對(duì)象的方法實(shí)現(xiàn)特定的操作(在節(jié)中給出的自動(dòng)生成的代碼中出現(xiàn)過該對(duì)象的Close方法調(diào)用)。DoCmd對(duì)象的常用方法如表7-6所示?!队?jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)【例7-7】下列過程執(zhí)行時(shí)將首先向tScore表插入一條新記錄,然后打開“加法測試”窗體。PublicSubOpFormSub() DoCmd.RunSQL"InsertintotScorevalues('2011020110','c5',90)" DoCmd.OpenForm"加法測試"EndSub7.4VBA程序流程控制程序執(zhí)行時(shí)一般是按語句的先后順序依次執(zhí)行的,有時(shí)可能需要改變這種執(zhí)行順序,通過流程控制語句可以實(shí)現(xiàn)這樣的處理要求。典型的流程控制結(jié)構(gòu)包括選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。選擇結(jié)構(gòu)用于程序分支控制,循環(huán)結(jié)構(gòu)用于控制程序反復(fù)執(zhí)行一個(gè)程序段?!队?jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)7.4.1選擇結(jié)構(gòu)控制選擇結(jié)構(gòu)可以依據(jù)條件選擇程序的執(zhí)行路線。VBA有兩種選擇控制語句,一是If條件分支語句,二是SelectCase多分支語句。1.If條件分支語句If語句的典型語法結(jié)構(gòu)有四種,第一種格式為:If<條件>Then<語句>語句執(zhí)行時(shí),判斷條件(邏輯表達(dá)式)是否成立(為“真”),如果成立則執(zhí)行Then后面的語句,然后執(zhí)行下一條語句。如果條件不成立,則不執(zhí)行Then后面的語句而是直接執(zhí)行下一條語句?!队?jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)第二種格式為:If<條件>Then <語句序列>EndIf語句執(zhí)行的特點(diǎn)與第一種格式相同。執(zhí)行時(shí)首先判斷條件,如果成立則執(zhí)行語句序列,然后執(zhí)行EndIf之后的語句。如果條件不成立則直接執(zhí)行EndIf之后的語句。第三種格式為:If<條件>Then <語句序列1>Else <語句序列2>EndIf《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)語句執(zhí)行時(shí)首先判斷條件,如果成立則執(zhí)行語句序列1,否則執(zhí)行語句序列2,執(zhí)行完語句序列1或語句序列2后繼續(xù)執(zhí)行EndIf之后的語句。第一種和第二種格式可以選擇執(zhí)行或不執(zhí)行(跳過)一個(gè)語句或語句序列,第三種格式則依據(jù)條件選擇執(zhí)行兩個(gè)不同的語句序列。第四種格式為:If<條件1>Then <語句序列1>ElseIf<條件2>Then <語句序列2>...ElseIf<條件n-1>Then <語句序列n-1>Else <語句序列n>EndIf《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)語句依次判斷條件,如果當(dāng)前條件(條件i)不成立,則跳過語句序列i并繼續(xù)判斷下一個(gè)條件。如果條件i成立,則執(zhí)行語句序列i,然后繼續(xù)執(zhí)行EndIf之后的語句,如果所有條件都不成立,則執(zhí)行語句序列n。執(zhí)行完某一分支語句序列之后,繼續(xù)執(zhí)行EndIf后面的語句?!纠?-8】If語句應(yīng)用舉例。本例通過InputBox函數(shù)輸入一個(gè)數(shù)字字符串并將其轉(zhuǎn)換為數(shù)值,然后判斷該數(shù)值并顯示消息框。DimaaAsIntegeraa=Val(InputBox("請(qǐng)輸入一個(gè)數(shù)字:","輸入數(shù)據(jù)","1"))Ifaa>0ThenMsgBox("輸入一個(gè)正數(shù)")ElseIfaa=0ThenMsgBox("輸入零")ElseMsgBox("輸入一個(gè)負(fù)數(shù)")EndIf《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)2.SelectCase多分支語句當(dāng)條件判斷較多時(shí),使用If語句會(huì)出現(xiàn)ElseIf過多的情況。一方面,語句比較繁瑣,另一方面也不便于程序分析??梢允褂肧electCase語句解決這樣的問題,其語法格式如下:SelectCase<測試表達(dá)式> [Case<表達(dá)式列表1> [<語句序列1>] ... [Case<表達(dá)式列表n> [<語句序列n>]]] [CaseElse [<語句序列n+1>]]EndSelect《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)語句中的測試表達(dá)式可以是數(shù)值表達(dá)式或字符串表達(dá)式,執(zhí)行前,該表達(dá)式必須是可以求值的。Case<表達(dá)式列表>及CaseElse是可選的。表達(dá)式列表中可以包含下列形式的表達(dá)式(數(shù)值型或字符型):
<表達(dá)式>,執(zhí)行時(shí)值是確定的,當(dāng)測試表達(dá)式的值等于表達(dá)式的值時(shí)滿足測試條件。
<表達(dá)式1>TO<表達(dá)式2>,用于指定值的范圍且表達(dá)式1<表達(dá)式2,當(dāng)測試表達(dá)式的值>=表達(dá)式1,同時(shí)測試表達(dá)式的值<=表達(dá)式2的時(shí)候滿足測試條件。
Is<比較運(yùn)算符><表達(dá)式>,用于比較測試表達(dá)式的值和給定表達(dá)式的值之間是否滿足給定的比較關(guān)系,是則滿足測試條件?!队?jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)語句執(zhí)行時(shí),首先計(jì)算測試表達(dá)式的值,然后依次判斷各Case條件是否滿足(表達(dá)式列表中任一表達(dá)式滿足測試條件即可),如果某一Case條件滿足則執(zhí)行對(duì)應(yīng)的語句序列,然后繼續(xù)執(zhí)行EndSelect之后的語句。當(dāng)所有Case條件都不滿足時(shí),如果語句中沒有CaseElse,則執(zhí)行EndSelect之后的語句,否則執(zhí)行CaseElse對(duì)應(yīng)的語句序列,然后繼續(xù)執(zhí)行EndSelect之后的語句?!纠?-9】SelectCase語句應(yīng)用舉例(對(duì)應(yīng)于【例7-8】的SelectCase語句)。DimaaAsIntegeraa=Val(InputBox("請(qǐng)輸入一個(gè)數(shù)字:","輸入數(shù)據(jù)","1"))SelectCaseaaCaseIs>0MsgBox("輸入一個(gè)正數(shù)")《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)
Case0MsgBox("輸入零")CaseElseMsgBox("輸入一個(gè)負(fù)數(shù)")EndSelect【例7-10】字符判斷(假定模塊首部設(shè)置了OptionCompareBinary)。DimC1AsStringC1=InputBox("請(qǐng)輸入一個(gè)字符:","輸入數(shù)據(jù)","")IfLen(Trim(C1))=0ThenC1=Space(1) '沒輸入字符則賦給aa一個(gè)空格IfLen(C1)>1ThenC1=Left(C1,1) '輸入多個(gè)字符則取首字符SelectCaseC1Case""MsgBox("輸入空格符")《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)Case"0"To"9"MsgBox("輸入數(shù)字")Case"A","B"To"Y",Is="Z"MsgBox("輸入大寫字母")Case"a"To"z"MsgBox("輸入小寫字母")CaseElseMsgBox("輸入其他字符")EndSelect7.4.2循環(huán)結(jié)構(gòu)控制1.循環(huán)的基本念有時(shí),讓一段程序反復(fù)執(zhí)行若干次可以實(shí)現(xiàn)某種特殊的處理要求。以下例7-11是一個(gè)用If語句和GoTo語句實(shí)現(xiàn)循環(huán)結(jié)構(gòu)的例子?!队?jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)【例7-11】計(jì)算1+3+5+…+199。
DimnAsInteger,sAsLongn=1s=0L:s=s+2*n-1n=n+1Ifn<=100ThenGoToL:MsgBox(Str(s))上述程序中L:為行標(biāo)號(hào),GoToL:語句為轉(zhuǎn)移語句,程序執(zhí)行到If語句時(shí),判斷n的值,當(dāng)n<=100時(shí)將轉(zhuǎn)移到L:處繼續(xù)執(zhí)行。這樣,下列兩條語句在n=1,2,3,…,100時(shí)依次執(zhí)行一次:
s=s+2*n-1n=n+1《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)各次執(zhí)行時(shí),n、s的變化情況如表7-7所示。前述兩個(gè)語句反復(fù)執(zhí)行了100次,每次執(zhí)行后n增1,而s的值則是1+3+5+…的前n項(xiàng)和。s每次執(zhí)行時(shí)都在上一次執(zhí)行的基礎(chǔ)上增加一項(xiàng)。這種能讓一段程序反復(fù)執(zhí)行多次的程序結(jié)構(gòu)叫做循環(huán)。被反復(fù)執(zhí)行的程序段叫做循環(huán)體。實(shí)際上,一般不通過GoTo語句實(shí)現(xiàn)循環(huán),結(jié)構(gòu)化程序設(shè)計(jì)思想要求設(shè)計(jì)者盡可能避免使用GoTo語句。現(xiàn)代程序設(shè)計(jì)語言都提供了專門的用于實(shí)現(xiàn)循環(huán)控制的語句。VBA中常用的循環(huán)語句有3種,分別是For…Next循環(huán),While…Wend循環(huán)和Do…Loop循環(huán)。2.For…Next循環(huán)For…Next循環(huán)是一種循環(huán)次數(shù)可以預(yù)先確定的循環(huán),其《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)語法結(jié)構(gòu)如下:For<計(jì)數(shù)變量>=<初值>To<終值>[Step<增量>] [<循環(huán)體語句序列1>] [ExitFor] [<循環(huán)體語句序列2>]Next[<計(jì)數(shù)變量>]計(jì)數(shù)變量是一個(gè)簡單數(shù)值變量;初值是一個(gè)數(shù)值,是計(jì)數(shù)變量開始計(jì)數(shù)時(shí)的初始值;終值是計(jì)數(shù)變量計(jì)數(shù)結(jié)束時(shí)的值,計(jì)數(shù)值超出該值時(shí)循環(huán)終止;增量是可選的,為每次循環(huán)時(shí)計(jì)數(shù)變量的增加值,省略時(shí)為1;循環(huán)體語句序列1及循環(huán)體語句序列2都屬于循環(huán)體;ExitFor也包含在循環(huán)體之內(nèi),執(zhí)行到該語句時(shí)自動(dòng)結(jié)束循環(huán);For、Next是循環(huán)控制語句,F(xiàn)or為開始、Next為結(jié)束,Next后可以跟隨計(jì)數(shù)變量以區(qū)分該Next語句是哪個(gè)循環(huán)的結(jié)束語句?!队?jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)For循環(huán)的執(zhí)行過程是:首先給循環(huán)計(jì)數(shù)變量賦初值,如果未超出終值,則執(zhí)行一次循環(huán)體,執(zhí)行到Next語句時(shí),循環(huán)計(jì)數(shù)變量按增量遞增,然后繼續(xù)判斷是否超出終值,未超出則繼續(xù)執(zhí)行循環(huán)體,超出則結(jié)束循環(huán)。執(zhí)行循環(huán)體時(shí)如遇到ExitFor語句,則立即結(jié)束循環(huán)。循環(huán)結(jié)束后,繼續(xù)執(zhí)行Next語句后的語句?!纠?-12】用For…Next循環(huán)實(shí)現(xiàn)【例7-11】。DimnAsInteger,sAsLongs=0 '變量s清零Forn=1To100 s=s+2*n-1NextMsgBox(Str(s)) '輸出s結(jié)果《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)使用For…Next循環(huán)時(shí)須注意以下幾點(diǎn):增量可以是正數(shù)或負(fù)數(shù)。增量為正數(shù)時(shí),計(jì)數(shù)值>終值為超出終值;增量為負(fù)數(shù)時(shí),計(jì)數(shù)值<終值為超出終值。增量一般是整數(shù),也可以是小數(shù)。增量是小數(shù)時(shí),計(jì)數(shù)變量必須是單精度或雙精度的。循環(huán)次數(shù)是確定的,為(終值–初值)/增量+1。循環(huán)可以嵌套,但不能交叉(對(duì)所有循環(huán)都適用),嵌套時(shí),一般把外重循環(huán)叫做外循環(huán),內(nèi)重循環(huán)叫做內(nèi)循環(huán)。【例7-13】分析下列For…Next循環(huán)。(1)DimiAsSingle《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)Fori=1To10Step0.8MsgBox(Str(i))Next(2)DimiAsSingleForn=1To2Fori=0To-9Step-1.5MsgBox(Str(i))NextFori=0To10Step-1.5MsgBox(Str(i))NextNextn(3)DimiAsSingle《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)Forn=1To2Fori=0To-9Step-1.5MsgBox(Str(i))NextFori=0To10Step-1.5MsgBox(Str(i))NextnNexti【解答】(1)循環(huán)結(jié)構(gòu)正確。i從1循環(huán)到10,增量為0.8,i依次取1,1.8,2.6,3.4,4.2,5,5.8,6.6,7.4,8.2,9,9.8,共循環(huán)12次,當(dāng)計(jì)數(shù)變量變?yōu)?0.6時(shí)超出終值(10),結(jié)束循環(huán)。(2)屬于嵌套循環(huán),在外循環(huán)(n循環(huán))內(nèi)嵌套兩個(gè)并列循環(huán)。n循環(huán)執(zhí)行兩次。n循環(huán)每次執(zhí)行時(shí),第一個(gè)i循環(huán)依次從0、《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)-1.5、-3、-4.5、-6、-7.5、-9共執(zhí)行7次循環(huán),第二個(gè)i循環(huán)結(jié)束循環(huán)條件是i小于終值,i賦初值后即滿足條件,所以一次都沒執(zhí)行。(3)屬于嵌套循環(huán),因存在交叉(n循環(huán)和第二個(gè)i循環(huán)),所以屬于錯(cuò)誤嵌套,根本不能執(zhí)行。3.While…Wend循環(huán)While…Wend循環(huán)是一種循環(huán)次數(shù)不確定的循環(huán),其語法結(jié)構(gòu)如下:While<條件> [<循環(huán)體語句序列>]WendWhile…Wend循環(huán)執(zhí)行時(shí)首先判斷循環(huán)條件,如果條件成《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)立(條件表達(dá)式結(jié)果為“真”)則執(zhí)行一次循環(huán)體語句序列,然后繼續(xù)判斷條件。如此反復(fù)循環(huán)直到條件不成立時(shí)結(jié)束循環(huán),繼續(xù)執(zhí)行Wend之后的語句。【例7-14】用While…Wend循環(huán)實(shí)現(xiàn)【例7-11】。DimnAsInteger,sAsLongs=0n=1Whilen<=100s=s+2*n-1n=n+1WendMsgBox(Str(s))While…Wend循環(huán)的循環(huán)體應(yīng)能影響循環(huán)條件的取值,否則循環(huán)就永遠(yuǎn)不會(huì)結(jié)束,這種情況叫做死循環(huán)。《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)4.Do…Loop循環(huán)與While…Wend循環(huán)一樣Do…Loop循環(huán)也是一種循環(huán)次數(shù)不能預(yù)先確定的循環(huán),它有兩種格式,第一種語法格式如下:Do[{While|Until}<條件>] [<循環(huán)體語句序列1>] [ExitDo] [<循環(huán)體語句序列2>]Loop第二種語法格式如下:Do [<循環(huán)體語句序列1>] [ExitDo] [<循環(huán)體語句序列2>]Loop[{While|Until}<條件>]《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)兩種格式的循環(huán)都可以省略條件,這時(shí),除非循環(huán)體能夠執(zhí)行到ExitDo語句,否則即是死循環(huán)。執(zhí)行到ExitDo語句時(shí),立即結(jié)束循環(huán),繼續(xù)執(zhí)行Loop語句之后的語句。第一種格式首先判定條件,第二種格式先執(zhí)行循環(huán)體,然后判定條件。如果是While<條件>,則當(dāng)條件成立(為“真”)時(shí)繼續(xù)執(zhí)行循環(huán)體,條件不成立時(shí)結(jié)束循環(huán)。如果是Until<條件>,則當(dāng)條件不成立時(shí)繼續(xù)下一次循環(huán),條件成立時(shí)結(jié)束循環(huán)。結(jié)束循環(huán)后,繼續(xù)執(zhí)行Loop語句之后的語句?!纠?-15】用Do…Loop循環(huán)實(shí)現(xiàn)【例7-11】。格式1:DimnAsInteger,sAsLongs=0n=1《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)DoWhilen<=100 s=s+2*n-1 n=n+1LoopMsgBox(Str(s))格式2(僅循環(huán)部分,其他部分與格式1相同):Do s=s+2*n-1 n=n+1LoopWhilen<=100格式3(僅循環(huán)部分,其他部分與格式1相同):DoUntiln>100 s=s+2*n-1 n=n+1Loop《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)格式4(僅循環(huán)部分,其他部分與格式1相同):Do s=s+2*n-1 n=n+1LoopUntiln>1007.5過程及過程參數(shù)過程、尤其是函數(shù)過程一般都需要有參數(shù)。調(diào)用過程時(shí)通過參數(shù)控制過程的執(zhí)行結(jié)果。一般把過程定義的參數(shù)叫做形式參數(shù),簡稱形參,而把調(diào)用時(shí)提供的參數(shù)叫實(shí)際參數(shù),簡稱實(shí)參。實(shí)參與形參對(duì)應(yīng)結(jié)合,叫做參數(shù)傳遞。7.5.1獨(dú)立子過程及參數(shù)傳遞在節(jié)介紹了最簡單的獨(dú)立子過程的結(jié)構(gòu)及調(diào)用方式,實(shí)際定義獨(dú)立子過程時(shí)可以修改定義框架。《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)1.獨(dú)立子過程定義典型的獨(dú)立子過程定義形如:[Private|Public]Sub<子過程名>([<形參列表>]) [語句序列1] [ExitSub] [語句序列2]EndSub選擇Private時(shí),過程只能在該過程所在的模塊內(nèi)調(diào)用,其他模塊中的程序代碼不能調(diào)用。選擇Public時(shí),過程可以被所有模塊中的代碼調(diào)用。Sub是子過程標(biāo)志關(guān)鍵字。子過程名是子過程的標(biāo)識(shí),須符合變量命名規(guī)范。子過程名后面的括號(hào)是必須的。形參列表是可選的,是用逗號(hào)分隔的形式參數(shù)說明列表?!队?jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)典型的形式參數(shù)說明格式如下:[ByVal|ByRef]<形參名>[()][As<數(shù)據(jù)類型>]ByVal表示參數(shù)傳遞方式為值傳遞,即調(diào)用時(shí)只把實(shí)參的結(jié)果值傳遞給形參,過程返回時(shí)實(shí)參結(jié)果不受任何影響。值傳遞的實(shí)參可以是常量、變量或表達(dá)式。ByRef表示參數(shù)傳遞方式為地址傳遞,調(diào)用時(shí)把實(shí)參的地址傳遞給形參,過程返回時(shí)實(shí)參結(jié)果為對(duì)應(yīng)形參的賦值結(jié)果。地址傳遞的實(shí)參必須是變量。形參為數(shù)組時(shí),傳遞方式必須是地址傳遞。默認(rèn)的參數(shù)傳遞方式為地址傳遞。形參名為過程中使用的參數(shù)名稱,須符合變量的命名規(guī)則。如果形參是一個(gè)數(shù)組,則應(yīng)在形參名之后加括號(hào)(數(shù)組參數(shù)前不能選擇ByVal)?!队?jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)數(shù)據(jù)類型是可選的。指定數(shù)據(jù)類型時(shí),對(duì)應(yīng)形參為指定數(shù)據(jù)類型,省略數(shù)據(jù)類型時(shí),對(duì)應(yīng)形參是Variant類型的。介于Sub和EndSub之間的語句序列叫做過程體??梢酝ㄟ^ExitSub語句立即退出獨(dú)立子過程,該語句不需要任何參數(shù)。過程執(zhí)行時(shí)依次執(zhí)行過程體語句,執(zhí)行完最后一條語句或遇到ExitSub語句時(shí)結(jié)束過程執(zhí)行并返回調(diào)用程序。一般而言,當(dāng)獨(dú)立子過程不需要返回計(jì)算結(jié)果時(shí),參數(shù)傳遞方式應(yīng)選擇值傳遞。如果需要返回計(jì)算結(jié)果,則應(yīng)通過地址傳遞參數(shù)取得這些計(jì)算結(jié)果。地址傳遞參數(shù)的實(shí)參在返回時(shí)保存著過程形參的賦值結(jié)果?!纠?-16】分析下列過程參數(shù)定義的參數(shù)傳遞方式及參數(shù)類型。(1)PrivateSubMyExa1(ByVala1AsInteger,b1()AsInteger,ByRefc1)《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全) ……EndSub(2)PrivateSubMyExa2(a2AsInteger,ByValb2()AsInteger,c2) ……EndSub【解答】(1)定義獨(dú)立子過程MyExa1并帶有3個(gè)形式參數(shù)a1、b1、c1。a1為值傳遞整型參數(shù);b1為地址傳遞整型數(shù)組;c1為地址傳遞Variant型參數(shù)。(2)定義獨(dú)立子過程MyExa2并帶有3個(gè)形式參數(shù)a2、b2、c2。a2定義合法,為地址傳遞整型參數(shù);b2為數(shù)組參數(shù),因數(shù)組不能定義為值傳遞,所以定義非法;c2定義合法,為地址傳遞Variant型參數(shù)。《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)2.獨(dú)立子過程的調(diào)用節(jié)中已介紹過無參數(shù)獨(dú)立子過程的調(diào)用方法,有參數(shù)獨(dú)立子過程的調(diào)用格式有如下兩種:Call<過程名>[(實(shí)參列表)]<過程名>[<實(shí)參列表>]實(shí)參列表中的參數(shù)個(gè)數(shù)、順序、類型必須與形參列表的形參對(duì)應(yīng)一致,實(shí)參按形參指定的傳遞方式把參數(shù)傳遞給形參。對(duì)應(yīng)于地址傳遞形參的實(shí)參必須是變量或數(shù)組,對(duì)應(yīng)值傳遞形參的實(shí)參可以是變量(包括數(shù)組元素)、常量或表達(dá)式。使用Call調(diào)用時(shí),實(shí)參列表必須用括號(hào)括起來且應(yīng)直接接續(xù)在過程名之后。不使用Call時(shí),實(shí)參列表不能加括號(hào)且與過程名之間必須留有空格。《計(jì)算機(jī)基礎(chǔ)與Access數(shù)據(jù)庫程序設(shè)計(jì)7》ppt課件(全)【例7-17】過程nn用于計(jì)算n階乘,過程qqq實(shí)際調(diào)用nn計(jì)算12!和11!。PrivateSubnn(ByValnAsInteger,sAsLong)'計(jì)算n階乘,結(jié)果通過參數(shù)s返回DimkAsIntegers=1Rem只有當(dāng)n在0-12之間時(shí)才能夠計(jì)算Ifn>=0Andn<13ThenFork=1Ton
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年蔬菜供銷合同
- 2024酒吧轉(zhuǎn)讓合同協(xié)議書范本
- 2024出版合同期限范文
- 2024小產(chǎn)權(quán)房屋買賣合同協(xié)議書格式版
- 廣東省茂名市七年級(jí)上學(xué)期語文期中試卷3套【附答案】
- 建筑行業(yè)合同模板匯編
- 電視劇特效制作委托合同
- 項(xiàng)目投資合作方案
- 2024技術(shù)信息與資料保密協(xié)議
- 民間借貸居間協(xié)議書參考
- 道德與法治八上八上8.2《堅(jiān)持國家利益至上》教學(xué)設(shè)計(jì)
- 2024年全國各地中考試題分類匯編:作文題目
- GB/T 42455.2-2024智慧城市建筑及居住區(qū)第2部分:智慧社區(qū)評(píng)價(jià)
- 2024年認(rèn)證行業(yè)法律法規(guī)及認(rèn)證基礎(chǔ)知識(shí)
- 2024廣西專業(yè)技術(shù)人員繼續(xù)教育公需科目參考答案(97分)
- YYT 0653-2017 血液分析儀行業(yè)標(biāo)準(zhǔn)
- 刑事受害人授權(quán)委托書范本
- 《文明上網(wǎng)健康成長》的主題班會(huì)
- 框架結(jié)構(gòu)冬季施工方案
- 既有玻璃幕墻安全性鑒定技術(shù)規(guī)程
- 小學(xué)漢語拼音字母表卡片自制(四線格版)Word編輯
評(píng)論
0/150
提交評(píng)論