《Access-2002數據庫應用實訓教程》第10章:Access-VBA程序設計_第1頁
《Access-2002數據庫應用實訓教程》第10章:Access-VBA程序設計_第2頁
《Access-2002數據庫應用實訓教程》第10章:Access-VBA程序設計_第3頁
《Access-2002數據庫應用實訓教程》第10章:Access-VBA程序設計_第4頁
《Access-2002數據庫應用實訓教程》第10章:Access-VBA程序設計_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第10章AccessVBA程序設計10.1模塊的創(chuàng)建10.2VBA編程10.1模塊的創(chuàng)建

模塊是將VBA(VisualBasicforApplications)聲明和過程作為一個單元進行保存的集合。模塊基本上是由聲明、語句和過程組成的,它們作為一個已命名的單元存儲在一起,對VBA代碼進行組織,并完成特定的任務。

Access有兩種類型的模塊:標準模塊和對象類模塊。不論哪種模塊中的每一個過程都可以是一個Function過程或一個Sub過程,如下圖10.1所示。兩個列表中,是“對象”框,是“過程”框(即“事件”框),當選擇了任一個對象后,右邊的“事件”也會隨之切換,因為不同類型的對象,也有不同的事件,選擇任一事件后,即可顯示該事件程序的內容,且光標會停留在程序的第一行,可以立即開始編寫程序。圖10.1代碼編輯窗口“對象”框“過程”框聲明過程“過程視圖”按鈕“完整的模塊視圖”按鈕

注意:在“事件”中,凡顯示為粗體的,即表示該事件已內含程序。模塊和程序不同:模塊只有兩個任務,一個是保存程序,另一個是聲明可以在多個程序中使用的變量或常量,模塊本身不可以被運行。而程序也稱為“運行程序”,一個模塊中含有若干個程序,所以程序是最基本的運行單位。創(chuàng)建模塊,要在VBA編程環(huán)境VBE(VisualBasicEditor)中進行。當我們選中一個需要編寫代碼的控件,并準備為其對應的某一事件的響應方法編寫VBA代碼時,就應該啟動VBE,在此編輯環(huán)境中進行VBA代碼編輯操作。如圖10.2所示為VBE窗口:創(chuàng)建模塊的方法有幾種,如下:1.在“數據庫”窗口的對象欄中單擊“模塊”,然后單擊工具欄上的“新建”按鈕打開VBE編輯器,為數據庫創(chuàng)建新的模塊對象。2.在Access菜單中單擊“插入”→“模塊”來創(chuàng)建標準模塊。3.如果在已打開的VBE編輯器中,則可以在工具欄中單擊“插入模塊”按鈕“”,或者單擊VBE菜單中“插入”→“模塊”來創(chuàng)建新的標準模塊。讀者可以任選一種適合自己的方法來創(chuàng)建模塊。除了自己新建模塊外,還可以將宏轉換為模塊,在數據庫窗口中選擇需要轉換的宏,選擇“工具”菜單中“宏”子菜單中的“將宏轉換為VisualBasic代碼”命令,系統會彈出“轉換宏”對話框,如圖10.3所示,轉換后的宏被保存為標準模塊。圖10.2VBE編輯窗口圖10.3轉換宏對話框10.1.1創(chuàng)建窗體和報表類模塊窗體和報表模塊都是對象類模塊,而且它們都依附于某一窗體或報表而存在。窗體和報表中含有事件過程,通過事件過程來控制窗體或報表的行為,以及它們對用戶操作的響應。操作一窗體類模塊創(chuàng)建的操作步驟如下:1.在數據庫窗口“對象”列表中的“窗體”對象有中選擇要操作的窗體名,此例選擇“系統控制窗體”,如圖10.4所示;2.然后從“視圖”菜單中選擇“代碼”命令或單擊視圖中工具欄上的(代碼)圖標,進入VBE編輯窗口,如圖10.5所示;3.從模塊代碼窗口中的“對象”列表框中選擇要操作的對象名稱,為“進貨錄入”控件的名稱“command3”;

4.選擇對象后,從模塊代碼窗口中的“過程事件”列表框中選擇相關聯的過程名,此處選擇“Click”

事件,如圖10.6所示;

圖10.4選擇“系統控制窗體”圖10.5VBE編輯窗口“空白代碼窗口”圖10.6選擇“對象”和“事件”代碼窗口5.在代碼窗口中出現的標準過程格式中添加要實現的代碼。代碼如下:PrivateSubCommand3_Click()OnErrorGoToErr_Command3_ClickDimstDocNameAsStringDimstLinkCriteriaAsStringstDocName="商品進貨數據錄入"DoCmd.OpenForm

stDocName,,,stLinkCriteriaExit_Command3_Click:ExitSubErr_Command3_Click:

MsgBoxErr.DescriptionResumeExit_Command3_ClickEndSub6.根據需要重復選擇對象和過程的操作,直至完成,如圖10.7所示;對于“系統控制窗體”中有七個命令按鈕,將對應有七個事件的過程。注意:這七個事件的過程代碼同第(5)步,只是在粗體代碼stDocName=“商品進貨數據錄入”中引號之中的窗體名稱要做相應更改。圖10.7完成全部事件代碼的窗口創(chuàng)建完窗體類模塊以后,可以回到如圖10.8所示的“系統控制窗體”窗體視圖來單擊各個按鈕,查看是否運行。操作二報表類模塊創(chuàng)建的步驟如下:此例為“商品庫存情況”的報表運行時,根據庫存量來顯示或隱藏一個提示消息。當商品“庫存量”小于10時,將有一個標簽在打印此節(jié)時顯示消息“庫存量不足,請速進貨!”,當商品“庫存量”大于10時,此標簽將被隱藏。1.從數據庫窗口“對象”列表中的“報表”對象中選擇要操作的報表名,如圖10.9所示;2.然后從“視圖”菜單中選擇“代碼”命令或單擊視圖中工具欄上的(代碼)圖標,進入VBE編輯窗口,從模塊代碼窗口中“對象”列表框中選擇要操作的對象名稱。此處選擇“主體”對象;3.選擇對象后,從模塊代碼窗口中的“過程事件”列表框中選擇相關的過程名。選擇Format事件。如圖10.10所示;4.在代碼窗口中出現的標準過程格式中添加要實現的代碼,如圖10.11所示;

5.報表預覽效果如下圖10.12所示。此報表中包含一個名為“l(fā)abel24”的標簽和主體節(jié);圖10.8“系統控制窗體”圖10.9選擇報表“商品庫存情況”報表圖10.10選擇“對象”和“事件”圖10.11添加代碼窗口圖10.12報表預覽效果10.1.2編寫函數和子過程在普通類模塊中可以自定義過程或函數,可以創(chuàng)建自定義的對象。1.函數與子過程的定義在一個不包含過程和函數的模塊中聲明公共變量和常量,此公共變量和常量可以在任何模塊中的任何函數和過程中使用。函數定義的語法結構如下:

Function函數名([參數])AS數據類型函數代碼

EndFunction

子過程定義的語法結構如下:

Sub子過程名()子程序代碼

Endsub可以在函數和子過程定義時使用Public、Private或Static前綴來聲明子過程和函數的作用范圍。

Private前綴表示為私有的子過程和函數,只能在定義它們的模塊中使用,Public前綴代表公共的子過程和函數可能被任何其他模塊調用,當模塊中子過程和函數沒有使用Private進行聲明,則系統默認為Public(公共)子過程和函數。2.創(chuàng)建函數與子過程子過程和函數是指那些不與特定的對象或事件綁定的過程。(1)在代碼模塊中創(chuàng)建子過程和函數操作步驟如下:A.在“數據庫”窗口的對象欄中單擊“模塊”。B.單擊工具欄的“新建”按鈕創(chuàng)建新的模塊,或者選擇一個現有的模塊并單擊“設計”按鈕,打開VBE窗口。C.選擇“插入”“過程”命令,或單擊工具欄上的“插入模塊”按鈕的下拉列表三角形,然后選擇下拉菜單中的“過程”命令,打開“添加過程”對話框,如圖10.13所示。

圖10.13添加過程對話框D.鍵入過程或函數名,此例過程名為“NewSub”。E.選擇過程的類型??梢赃x擇新建過程類型為“子程序”、“函數”或者“屬性”。F.要使用新建過程適用于整個適用程序,應將范圍選為“公共的”;如果要限定過程于當前模塊,應該將范圍選為“私有的”。G.選擇是否需要將過程中所有變量聲明為靜態(tài)變量。H.單擊“確定”按鈕,確認根據所做選擇創(chuàng)建一個新過程。上述步驟完成后,如果我們在對話框中選擇創(chuàng)建一個靜態(tài)的公共子程序,單擊“確定”按鈕后,VBE自動在代碼中加入如下語句:PublicStaticSubNewSub()Endsub

光標停留在兩條語句的中間,等待用戶編加過程代碼。此例為計算1到10的偶數之和。添加代碼如圖10.14所示。圖10.14編寫子過程代碼窗口創(chuàng)建函數過程方法同上,創(chuàng)建好的函數如下圖10.14所示。此例函數為判斷第幾季度。圖10.15編寫函數代碼窗口10.1.3將宏轉換成模塊宏本身就是程序,只不過是一種控制方法簡單的程序而已。那么可以將宏轉換為對應的VBA程序,Access數據庫管理系統為此提供了兩種方式,將宏轉換成模塊。方法一:在“超市信息管理系統”數據庫設計視圖的宏對象集合中選中“系統控制窗體宏組”對象,在窗口菜單上單擊“文件”→“另存為”,即出現如圖10.16所示的“另存為”對話框,將對象命名為“系統控制窗體宏組的副本”,再將保存類型定義為“模塊”,單擊對話框上的“確定”按鈕完成了將宏對象轉換為VBA程序模塊的操作。

回到數據庫窗口,單擊“模塊”對象按鈕,在“模塊”對象集合中會找到“被轉換的宏—系統控制窗體宏組”這樣的模塊,如圖10.17所示。方法二:在數據庫設計視圖宏對象集合中選中“系統控制窗體宏組”,在窗口菜單欄上依次單擊“工具”→“宏”→“將宏轉換為VisualBasic代碼”命令,隨即彈出“轉換宏”對話框,如圖10.18所示。根據需要在這個對話框中完成兩個選項的選定操作后,單擊“轉換”按鈕可將宏對象“系統控制窗體宏組”轉換成為一個名為“系統控制窗體宏組的副本”的模塊對象。圖10.16宏另存為模塊對話框10.17轉換完成的模塊對象集合圖10.18轉換宏對話框10.1.4VBA代碼的測試VBA代碼的調試由VBE提供調試工具,可以測試代碼,查找編寫錯誤??梢栽赩BE編輯器窗口中,打開將要進行調試的模塊,單擊“調試”菜單項,可看到調試子菜單項,如圖所示,根據子菜單上的命令可以進行調試。調試時,分為兩個步驟:斷點設置和單步跟蹤。1.斷點設置

Access提供的大部分調試工具,都必須在程序處于掛起狀態(tài)才能有效,這時就需要暫停VisualBasic程序代碼。如果要使VisualBasic掛起代碼,可以設置斷點設置斷點的方式有兩種:在“VisualBasic代碼編輯器”的代碼窗口中,將光標移到要設置斷點的行。單擊調試工具欄上的“切換斷點”按鈕“”。

(2)在“VisualBasic代碼編輯器”的代碼窗口中,用鼠標單擊要設置斷點行的左側邊緣部分。如果要清除斷點,可以將光標移到設置斷點的代碼行,然后在調試工具欄上單擊“切換斷點”按鈕。Access在運行到包含斷點的代碼行時,暫停代碼的執(zhí)行,進入中斷模式。設置斷點會加粗和突出顯示該行。如果要繼續(xù)運行代碼,可以單擊調試工具欄上的“運行子過程/用戶窗體”按鈕“”。2.單步跟蹤在程序代碼掛起后,便可以逐步執(zhí)行VisualBasic代碼,幫助識別發(fā)生錯誤的位置,并且可以查看是否每一行代碼都產生了預期的結果。用于代碼調試的方式有3種:(1)逐語句執(zhí)行要單步執(zhí)行每一行代碼,包括被調用的過程中的代碼,可以單擊調試工具欄上的“逐語句”按鈕“”。(2)逐過程執(zhí)行要單步執(zhí)行每一行代碼,但是將任何被調用的過程作為一個單位執(zhí)行,可以單擊調試工具欄上的“逐過程”按鈕“”。(3)跳出執(zhí)行要運行當前過程中的剩余代碼,可以單擊調試工具欄上的“跳出”按鈕“”,當執(zhí)行完這個過程,程序返回到調用該過程的過程后,“跳出”命令執(zhí)行完畢。VBA程序設計有幾種控制結構:選擇控制結構、循環(huán)控制結構。選擇控制結構有條件結構和選擇結構兩種。(1)條件結構:只要執(zhí)行一個語句,則可以使用條件結構。語法如下:if條件表達式then語句1[else語句2](2)選擇結構:在多個語句塊中有選擇地執(zhí)行其中的一個。語法如下:

Selectcase表達式

case表達式值列表1

語句1case表達式值列表2

語句2……[caseelse語句n]Endselect10.2.1程序設計當一個表達式與幾個不同的值比較時,可以使用選擇結構語句。例:根據某年某月來判斷該月有多少天?圖10.19分支結構窗體在窗體上三個文本框控件(年份、月份、天數),需要輸入年份數和月份數值后回車,或單擊“天數”文本框,結果將顯示在“天數”文本框內。將代碼填加到文本框的“單擊”事件中。PrivateSub天數_GotFocus()num=月份.ValueSelectCasenumCase1,3,5,7,8,10,12

天數.Value=31Case4,6,9,11

天數.Value=30CaseElseIf(年份.ValueMod4=0)And(年份.ValueMod100<>0)Or(年份.ValueMod400=0)Then

天數.Value=29Else

天數.Value=28EndIfEndSelectEndSub

2.循環(huán)控制語句VBA提供兩種循環(huán)結構,即DO循環(huán)、FOR循環(huán)。(1)DO循環(huán):用于重復執(zhí)行一個語句塊,重復次數不定。A)DOWHILE結構,語法如下:DOWHILE條件表達式循環(huán)語句塊

LOOP只要表達式為真,循環(huán)就一直執(zhí)行,直到表達式為假時結束循環(huán)。B)DOUNTIL結構,語法如下:DOUNTIL條件表達式循環(huán)語句塊

LOOP

如果表達式為假,執(zhí)行循環(huán)語句塊,只要表達式為真時結束循環(huán)。(2)FOR循環(huán)結構:當不知道循環(huán)次數時,最好用DO循環(huán),但如果知道執(zhí)行的次數,則最好還是用FOR循環(huán)。語法如下:FOR循環(huán)控制變量=循環(huán)初始值表達式to循環(huán)終值表達式[STEP步長數]循環(huán)語句塊NEXT[循環(huán)控制變量]例:求階乘。OptionCompareDatabasePublicsPrivateSub結果_GotFocus()DimintIAsIntegers=1ForintI=1To數字.Values=s*intINext結果.Value=sEndSub

上例程序可在窗體中顯示其結果,如圖10.20所示。圖10.20階乘窗體在窗體中的“輸入數值的階乘”文本框(數字)中輸入需要計算乘的數值后回車,或單擊下面的文本框(結果),結果顯示在“結果”文本框中。10.2.2對窗體中控件對象編程一、對標簽或文本框編程標簽和文本框都可以用來顯示文本,但是,標簽只能用于顯示文字,不能進行編輯,而文本框既可以顯示文本,也可以輸入文本。1.文本框或標簽都有自己的基本屬性,來控制文本框或標簽的格式、特征和位置。包含以下幾個部分的屬性:(1)外觀屬性包含:BackColor

、ForeColor

、BorderStyle屬性(2)位置屬性包含:Height、Left、Top、Width屬性(3)行為屬性包含:Enabled、IMEMode、Locked、ScrollBars

TabIndex

、TabStop、Visible屬性。(4)雜項包含:Name、HelpContextId、Text屬性(5)字體屬性包含一些與文本框中字體相關的屬性:

FontBold、FontItalic

、FontName、FontSize

、FontUnderline、

FontWeight

、Format屬性。2.文本框控件又有自己的基本事件和方法(1)數據響應類型事件包含:AfterUpdate

、BeforeUpdate、Change事件(2)鼠標動作類事件包含:Click、DblClick、MouseDown、MouseUp、

MouseMove、MouseMove事件(3)焦點類事件包含:Enter、Exit、Gotfocus、LostFocus事件(4)鍵盤響應類事件包含:KeyUp

、KeyPress事件3.標簽控件事件和方法

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論