版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第8章
模塊
本章內容提要第1講模塊與VBA基礎知識
1第2講VBA程序設計2第3講面向對象程序設計及VBA程序調試3第一講模塊與VBA基礎知識
本講主要教學內容12模塊與VBA的基本知識VBA程序設計基礎小結3學習目標1
了解模塊與VBA的基本概念以及模塊的類型特點。2
掌握模塊的組成結構格式及創建方法。3
掌握VBA書寫規則及常量、變量數組的基本知識。重點與難點
模塊的概念與組成、模塊的創建、VBA基礎知識是本講的重點。模塊的概念與組成是本講的難點。引言模塊是用Access所提供的VBA(VisualBasicforApplication)語言編寫的程序段。模塊有兩種基本類型:類模塊和標準模塊。模塊中的每一個過程都可以是一個函數過程或一個子程序。模塊可以與報表、窗體等對象結合使用,以建立完整的應用程序。本講將學習模塊有關的基礎知識。
8.1模塊與VBA
1、模塊(Module):是Access系統中的一個重要對象,它是以VBA(VisualBasicforApplication)語言為基礎編寫的,以函數過程(Function)或子過程(Sub)為單元的集合方式存儲的VBA程序。模塊具有很強的通用性,窗體、報表等對象都可以調用模塊內部的過程。
8.1.1模塊簡介在Access中,模塊分為類模塊和標準模塊兩種類型。模塊基本上是由聲明、語句和過程組成的集合,它們作為一個已命名的單元存儲在一起,對VBA代碼進行組織。
2、類模塊
:包括窗體模塊和報表模塊,它們從屬于各自的窗體或報表。窗體模塊:
模塊中包含在指定的窗體或其控件上事件發生時觸發的事件過程的代碼。報表模塊:
模塊中包含由在指定報表或其控件上發生的事件觸發的事件過程的代碼。作用范圍限于所屬窗體或報表內部,生命期也隨窗體或報表的打開而開始、關閉而結束。類模塊可以調用標準模塊中定義好的過程。
8.1模塊與VBA
3、標準模塊:標準模塊包含的是通用過程和常用過程,這些通用過程不與任何對象相關聯,常用過程可以在數據庫中的任何位置運行。標準模塊中的公共變量和公共過程具有全局特性。作用范圍在整個應用程序。生命期伴著應用程序運行而開始、關閉而結束。
8.1模塊與VBA
8.1模塊與VBA
模塊以VBA語言為基礎,由聲明和過程兩部分組成。過程是構成模塊的基本單元,過程是VBA程序代碼的容器,是程序中的若干邏輯部件,可分為Sub子過程和Function函數過程。8.1.2模塊組成
1、Sub子過程
:子過程是由Sub和EndSub語句包含起來的VBA語句其格式如下:[Private|Public|Friend]Sub子過程名(參數列表)
<子過程語句>ExitSub<子過程語句>EndSub
該過程的調用方法是在該子過程之外用CALL顯示調用,調用的具體方法為:
Callmysub(參數1,參數2,…)
。也可以直接引用過程名來調用該子過程。
8.1模塊與VBA
2、函數過程
:函數過程是由Function和EndFunction語句包含起來的VBA語句,其格式如下:[Private|Public][Static]Function函數名(參數行)[As數據類型]<函數語句>ExitFunction<函數語句>EndFunction
函數過程不能使用Call來調用執行,而是直接引用函數過程名,如x=myFuntion(參數)將獲得函數的值。
8.1模塊與VBA
8.1模塊與VBA
8.1.3模塊創建
1、創建新模塊方法一:打開數據庫,單擊數據庫窗口左邊對象列表中的“模塊”選項;然后單擊工具欄上的“新建按鈕”;打開如右所示的“VisualBasic編輯器”,該視圖中顯示了模塊設計視圖且創建了空白標準模塊。(1)創建標準模塊方法二:單擊“VisualBasic編輯器”菜單欄中“插入”按鈕;在彈出的下拉列表中選擇“模塊”選項,會出現一個空白的標準模塊。
8.1模塊與VBA
方法:雙擊工程窗口中的窗體名稱;然后在彈出的新建模塊代碼窗口中為各函數輸入代碼即可,如圖8.2所示。(2)創建類模塊——類模塊分為與窗體報表相關的類模塊和與窗體報表不相關的類模塊。
創建與窗體或報表相關的類模塊的過程如下:
8.1模塊與VBA
方法:單擊“數據庫”窗口或“VisualBasic編輯器”的菜單欄上“插入”菜單;在彈出的下拉列表中選擇“類模塊”,即可在“VisualBasic編輯器”中看到一個空白的類模塊;用戶僅需將所需的聲明或過程添加到類模塊設計視圖中保存即可。創建與窗體或報表相關的類模塊的過程如下:
8.1模塊與VBA
8.1.3模塊創建
2、將宏轉換為VBA代碼方法:⑴選擇數據庫窗口中的宏對象;⑵單擊菜單欄上的“工具”按鈕,在彈出的下拉列表中選擇“宏”命令,然后選擇“將宏轉換為VisualBasic代碼”;⑶在彈出的“轉換宏”對話框中,選擇所需項,單擊“轉換”按鈕即可。宏實質上也是由VBA代碼構成,只是這些代碼是Access自動生成的。宏有兩種,一種是窗體或報表上的宏,另一種是全局宏。將窗體或報表上的宏轉換為VBA代碼的方法如下:
8.1模塊與VBA
方法:⑴在“數據庫”窗口中,單擊左側對象列表中的“宏”對象按鈕,在宏對象列表框中選擇要轉換的宏名;⑵執行菜單命令“文件”→“另存為”,然后在“另存為”對話框中輸入保存的文件名,在“保存類型”中選擇“模塊”,結束單擊“確定”;⑶在彈出的“轉換宏”對話框中,選擇所需選項,單擊“轉換”按鈕。將窗體或報表上的宏轉換為VBA代碼的方法如下:
8.2VBA程序設計基礎
1、VBA的特點
:VBA(VisualBasicforapplication)是Access的開發語言,其語法與VisualBasic編程語言相互兼融,通過它可以像編寫VB語言一樣來編寫VBA程序。8.2.1VBA簡介⑶事件驅動。
Access事件是指操作Access的某個數據對象時發生的特定動作,該動作是對象可以識別的。⑵面向對象。VBA就是一種面向對象的程序設計語言,對象是VisualBasic程序設計語言的核心。⑴操作簡單。Access為VBA提供了一個典型的Winows風格的集成開發環境——VBE。
8.2VBA程序設計基礎
2、VBE界面
:VBE窗口包括窗口菜單、標準工具欄、工程窗口、屬性窗口和代碼窗口5部分,如圖所示。
8.2VBA程序設計基礎
3、VBA語句書規則:VBA語句書寫規則屬于軟件工程的代碼規范問題。代碼規范的目的在于編寫規格一致的代碼,提高代碼的可讀性,使其易于修改和交流。⑵注意行的長度。通常一個語句寫在一行,但一行最多允許255個字符,建議一行代碼的最大長度不要超過80個字符;在VBA中,可以使用續行符“-”將長的代碼行分為數行。⑴合理縮進。一般來說,代碼的縮進應該為4個空格。一個過程的語句要比過程名稱縮進4個空格,在循環,判斷語句、With語句之后也要同樣縮進。例如:IfstrText=""ThenNoZeroLengthString=NullElse
8.2VBA程序設計基礎
⑶使用空行。空行沒有必須遵守的規則,其使用的目的就是要顯示程序的邏輯關系。如一個模塊內部的過程之間要使用空行隔開,模塊的變量定義和過程之間也應該空1行。⑸注意大小寫。VBA源程序不分大小寫,英文字母的大小寫是等價的(字符串除外)。為了提高程序的可讀性,VBA編譯器對不同的程序部分都有默認的書寫規則,例如,關鍵字默認首字母大寫,其他字母小寫。⑷書寫注釋。在VBA程序中,注釋可以通過使用Rem語句或用“'”號實現。例如:Rem聲明兩個變量DimMyStr1,MyStr2AsStringMyStr1="Hello":RemMyStr1賦值為"Hello"MyStr2="World"'MyStr2MyStr1賦值為"World"
8.2VBA程序設計基礎
1、數據類型
:VBA支持多種數據類型對數據進行操作。書上表8-2列出VBA程序中主要的數據類型,以及它們的存儲要求和取值范圍。其標準數據類型如下:8.2.2VBA基礎知識類型類型符字段類型字節默認值Byte(單字節型)
無1
0Integer(整型)%字節/整數/是否2
0Long(長整型)&
長整型/自動編號4
0Single(單精度型)
!單精度數4
0Double(雙精度型)#雙精度數8
0Currency(貨幣型)
@貨幣8
0String(字符型)$文本
n*1
“”Boolean(布爾型)
無是/否2
FalseDate(日期型)無日期/時間8
0Variant(變體型)無任何按需分配
EmptyObject(對象型)無4
⑴標準數據類型要點:Boolean數據類型:值只能是True或是False。當轉換其他的數值類型為Boolean值時,0會轉成False,而其他的值則變成True。當轉換Boolean值為其他的數據類型時,False成為0,而True成為-1。Date數據類型:日期須以數字符號(#)擴起來,例如,#2008-3-23#Variant數據類型:所有沒被顯式聲明(用如Dim、Private、Public或Static等語句)為其他類型變量的數據類型。除了定長String數據及用戶定義類型外,可以包含任何種類的數據。Variant也可以包含Empty、Error、Nothing及Null等特殊值。Object數據類型:利用Set語句,聲明為Object的變量可以賦值為任何對象的引用。
8.2VBA程序設計基礎
⑵數據類型-自定義類型在模塊級別中使用,用于定義包含一個或多個元素的用戶自定義的數據類型。基本語法:
[Private|Public]Type類型名
元素名
As數據類型
[元素名
As數據類型
]……
EndType例:定義學生類型數據PublicTypeStudentsNameAsString*8AgeAsIntegerEndType
聲明變量:
DimStudentAsStudents
引用數據:
Student.Name=”張三”
Student.Age=15
8.2VBA程序設計基礎
8.2VBA程序設計基礎
2、變量與常量:VBA代碼中通過聲明和使用指定的常量或變量來臨時存儲數值、計算結果或操作數據庫中的任意對象。⑴變量
程序中的變量為臨時存在單元,可存放文字、數值、日期和對象屬性。每個變量都有一個名字,程序通過變量名對變量進行存取操作。用Dim語句顯式聲明變量
1、Dim變量名[AS類型]或Dim變量名[類型符]2、聲明的每個變量都要一個單獨的As類型子句,沒有的作為變體類型(Variant)例1:DimiCountAsinteger,sumAssingle
等價于:DimiCount%,sum!
例2:DimiCountAsinteger,sum,nameasstring*10
則聲明了三個變量,其中icount為整型,sum為變體型,name為長度為10的定長字符串模塊與VBA
強制顯式聲明變量—OptionExplicit
良好的編程習慣都應該是“先聲明變量,后使用變量”,這樣做可以提高程序的效率,同時也使程序易于調試。VBA中可以強制顯式聲明,在窗體模塊、標準模塊和類模塊的通用聲明段中加入:OptionExplicit
8.2VBA程序設計基礎
8.2VBA程序設計基礎
⑵常量在程序運行過程中,其值不能被改變的量稱為常量。VBA中有三類常量:普通常量、符號常量、系統常量
。普通常量整型常量:10、110%(Integer)、23&(Long)實型常量:0.123!(Single)、-1.123#、1.25E+3、-1.25E-3字符串常量:“ABD”、“XYZ、”大家好”邏輯常量:ture、false日期常量:#2002-5-414:30:00PM#、#09/02/99#符號常量在程序中,某個常量多次被使用,則可以使用一個符號來代替該常量,這樣不僅在書寫上方便,而且有效地改進了程序的可讀性和可維護性。關鍵字Const聲明符號常量,基本語法如下:
Const常量名[As類型|類型符號]=常數表達式例如:
ConstPI#=3.1415926535
等價于
ConstPIAsDouble=3.1415926535
8.2VBA程序設計基礎
系統常量VBA系統提供了應用程序和控件的系統定義常數。它們存放于系統的對象庫中,在“對象瀏覽器”中能查看這些常數。顏色常數常數
值
描述
vbBlack0x0黑色
vbRed0xFF紅色
vbGreen0xFF00綠色
vbYellow0xFFFF黃色
vbBlue0xFF0000藍色
vbMagenta0xFF00FF紫紅色
vbCyan0xFFFF00青色
vbWhite0xFFFFFF白色
星期常數常數
值
描述
vbSunday1星期日vbMonday2星期一
vbTuesday3星期二
vbWednesday4星期三
vbThursday5星期四
vbFriday6星期五
vbSaturday7星期六
3、變量的作用域和生命周期:VBA中,變量定義的位置和方式不同,則變量存在的時間和起作用的范圍也有所不同,即變量的作用域與生命期。變量作用域的三個層次:⑴局部范圍(過程級別):定義在模塊的過程內部,只有在聲明此變量的過程中才可使用定義方式:DimxAsSingleStaticyAssingle用Dim定義的局部變量只有在它所在的過程運行時才會有值Static定義的局部變量在整個程序運行期間均有值,所以它可以作為中間變量保存結果。⑵模塊范圍(Private):定義在模塊的所有過程外部的起始位置,運行時在模塊所包含的所有子過程和函數中可見。⑶全局范圍(Public):定義在模塊的所有過程外部的起始位置,運行時在所有類模塊和標準模塊的所包含的所有子過程和函數過程中都見。一般函數默認為Public
8.2VBA程序設計基礎
變量的作用域和生命周期舉例
x范圍
z范圍
y范圍x全局變量y過程變量z過程靜態變量
8.2VBA程序設計基礎
4、數組:并不是一種數據類型,而是一組相同類型數據的集合。用一個統一的名字(數組名)代表邏輯上相關的一批數據,每個元素用下標變量來區分;下標變量代表元素在數組中的位置。⑴一維數組(線狀)
:
Public/Private/Static/Dim數組名([下界]To[上界])[As數據類型]
[下界]和[上界]不能使用變量,必須是常量,一般是整型常量。例如:DimWorkers(8)AsInteger
未定義下界,下屆默認為0,有0~8共9個元素;DimWorkers(1To8)AsInteger
下屆為1,上屆為8,有1~8共8個元素⑵二維數組(表的形式)和多維數組
:Dim數組名([下界]To[上界],[下界]To[上界],…)[As數據類型]
dimAa(19,19)AsInteger等價于
dimAa(1To20,1To20)AsInteger
8.2VBA程序設計基礎
小結模塊是以函數過程(Function)或子過程(Sub)為單元的集合方式存儲的VBA程序。模塊分為類模塊和標準模塊兩種類型。。創建類模塊——類模塊分為與窗體報表相關的類模塊和與窗體報表不相關的類模塊。宏實質上也是由VBA代碼構成,只是這些代碼是Access自動生成的。可以將宏轉換為VBA代碼
。宏有兩種,一種是窗體或報表上的宏,另一種是全局宏。
VBA語句書寫規則屬于軟件工程的代碼規范問題。代碼規范的目的在于編寫規格一致的代碼,提高代碼的可讀性,使其易于修改和交流。
VBA中常用的基本數據類型,變量和常量以及數組的應用,提高了語言的應用能力。Thankyou!DepartmentInformationScienceandEngineering第8章
模塊
本章內容提要第1講模塊與VBA基礎知識
1第2講VBA程序設計2第3講面向對象程序設計及VBA程序調試3第二講VBA程序設計
本講主要教學內容12VBA程序的基本結構各種語句形式的應用小結3學習目標1
掌握VBA程序的基本結構的基本概念。2
掌握VBA程序的基本結構相應結構程序實例應用。3
掌握選擇結構、循環結構以及其他語句實際應用方法。重點與難點
VBA程序基本結構形式、選擇結構、循環結構是本講的重點。循環結構、各種結構嵌套應用是本講的難點。引言按其語句代碼執行的先后順序,VBA中的程序被分為順序程序結構、條件判斷結構和循環程序結構。本講將學習VBA程序設計的結構、各種結構實際應用內容。
8.3VBA程序設計
1、順序結構:順序結構是指程序的執行按照程序中語句的先后順序執行。程序的執行流程如下圖所示。8.3.1程序的基本結構程序的結構可以采用傳統的流程圖來描述。傳統流程圖中的基本符號如下圖所示。
2、選擇結構
:選擇程序結構用于判斷給定的條件,根據判斷的結果來控制程序的流程。使用選擇結構語句時,要用條件表達式來描述條件。在VBA中,選擇結構通過If語句與SelectCase語句來實現。
⑴If條件句:If語句根據測試條件的結果來選擇執行其中的語句。If條件語句有3種形式:⑵SelectCase語句:如果條件太多,分支較復雜,使用If語句就會顯得累贅,而且程序易讀性會變差。這時可使用SelectCase語句來寫出結構清晰的程序。If…ThenIf...Then...ElseIf…Then…ElseIf…Else
8.3VBA程序設計
①If…Then。在程序需要作出選擇時使用該語句。該語句又有兩種形式,分別為單行形式和多行形式。。單行形式的語法為:If條件Then語句
單行形式的語法為:If條件Then語句EndIf例8-1:已知兩個數x和y,比較它們的大小,且確保x大于y。程序段的代碼為:
Ifx<yThent=x:x=y:y=t
‘交換變量x與y的值
EndIf
或:Ifx<yThent=x:x=y:y=t
8.3VBA程序設計
注意:與單行形式相比,多行形式執行的語句通過EndIf來標志結束。如果對執行的多條語句不方便寫在同一行時,使用這種形式會使代碼整齊美觀。
②If...Then...Else。如果程序要根據條件的成立與否選擇執行相應的語句,則使用If...Then...Else。語法格式為:If條件Then語句Else語句EndIf
8.3VBA程序設計
程序流程如圖所示。
8.3VBA程序設計
例8-2:如下面的代碼,判斷如果UpdateFlag的值為True則顯示一條消息“UpdateSuccessfully”,否則顯示一條信息“UpdateFailed!”。IfUpdateFlagThenMsgBox"UpdateSuccessfully"ElseMsgBox"UpdateFailed"EndIf
③If…Then…ElseIf…Else。如果要從3種或3種以上的條件中選擇一種,則要使用If…Then…ElseIf…Else。語法格式為:
8.3VBA程序設計
注意:若“條件1”為True,則執行Then后的語句;否則,再判“條件2”,為True時,執行隨后的語句,依次類推,如果所有的條件都不滿足,則執行Else塊的語句。IF條件1Then語句ElseIf條件2Then語句[ElseIf條件2Then語句]…Else語句EndIf
8.3VBA程序設計
例8-3:輸入一學生成績,評定其等級。等級評論方法是:90~100分為“優秀”,80~89分為“良好”,60~79分為“及格”,60分以為“不合格”。Ifx>=90then Debug.Print"優秀"ElseIfx>=80Then Debug.Print"良好"ElseIfx>=60Then Debug.Print"及格"Else Debug.Print"不及格"EndIf
④SelectCase語句
。SelectCase語句是根據表達式的求值結果,選擇執行幾個分支中的一個。其語法如下:
8.3VBA程序設計
SelectCase變量或表達式Case表達式列表1 語句組1Case表達式列表2
語句組2
…Case表達式列表n
語句組nCaseElse
語句組EndSelect
SelectCase語句的SelectCase后的表達式是必選參數,可為任何數值表達式或字符串表達式;在每個Case后出現表達式列表是多個“比較元素”的列表。表達式列表可有下面4種形式之一,如下表所示。
8.3VBA程序設計
④SelectCase語句
。
8.3VBA程序設計
例8-4:設計一個窗體,如圖所示,使用selectcase…..語句來實現例8-3的成績等級評選。解題方法:該窗體有2個標簽,2個文框,文本框名稱分別為Text1與Text2,2個命令按鈕,名稱分別為Command1與Command2。為Command1單擊事件編寫如圖右所示的代碼。教師演示
3、循環結構
:循環結構主要用來描述重復執行算法的問題,它是程序設計中最能發揮計算機特長的程序結構。
循環結構可以看成是一個條件判斷語句和一個轉向語句的組合。循環結構有三個要素,它們分別是循環變量、循環體和循環終止條件。循環結構在程序框圖中是利用判斷框來表示,判斷框內寫上條件,兩個出口分別對應著條件成立和條件不成立時所執行的語句,其中一個要指向循環體,然后再從循環體回到判斷框的入口處。
8.3VBA程序設計
⑴Do…Loop語句
:該形式的語句通過Do來執行循環,有4種形式,形式一與形式二為當型循環,形式三與形式四為直到型循環。其中While是條件為真時循環,Until是條件為假時循環。
8.3VBA程序設計
當型循環的程充流程如下左圖所示,直到型循環的程序流程如下右圖所示。
8.3VBA程序設計
8.3VBA程序設計
例8-4:分析下面有四個程序,理解Do…Loop語句程序結構特點,確定各程序執行后I的值。SubCommand1.Click()
DimIAsInteger
I=1
DoWhileI<=20
PrintI
I=I+1
LoopEndSubSubCommand1.Click()
DimIAsInteger
I=1
DoUntilI<=20
PrintI
I=I+1
LoopEndSub程序運行后I的值為:1程序運行后I的值為:21⑵
While…Wend循環結構
:該語句的功能與DoWhile<條件>….Loop實現的循環完全相同。區別在于該語句中不能出現Exit語句!
8.3VBA程序設計
語句形式為:
While<條件>語句組Wend
程序運行后I的值為:2SubCommand1.Click()
DimIAsInteger
I=1
Do
PrintI
I=I+1
LoopWhileI<=20EndSubSubCommand1.Click()
DimIAsInteger
I=1
Do
PrintI
I=I+1
LoopUntilI<=20EndSub程序運行后I的值為:21
⑴For循環語句
:For循環一般用于循環次數已知的循環。語句形式如下,該循環結構執行過程如右圖所示。
8.3VBA程序設計
For循環變量=初值
to終值
[Step步長]
語句塊
[ExitFor]
語句塊
Next循環變量循環體循環執行的條件>0:初值<=終值步長缺省為1<0:初值>=終值=0:初值=終值
步長
For循環語句,一般用于循環次數已知情況。若循環變量在循環體內沒有其他改變其值的語句,則其循環計算方法可以確定為:循環次數例1:ForI=2To13Step3PrintINextIPrint“I=“,I循環次數?輸出結果?循環執行次數:
輸出I的值分別為:25811
循環結束,輸出為:I=14例2:ForI=2To13Step2PrintII=I*2NextIPrint“I=“,I循環次數?輸出結果?循環執行次數:
2輸出I的值分別為:27
循環結束,輸出為:I=17
8.3VBA程序設計
循環的嵌套——多重循環結構:如果在一個循環內完整地包含另一個循環結構,則稱為多重循環,或循環嵌套,嵌套的層數可以根據需要而定。以下是各種嵌套循環的示例:(1)ForI=….…..ForJ=….….NextJ…..NextI(2)ForI=….…..DoWhile/Until….….Loop…..NextI(3)DoWhile….…..ForJ=….….NextJ…..Loop(4)DoWhile/Until….…..DoWhile/Until….….Loop…..Loop
8.3VBA程序設計
對于循環的嵌套,要注意以下幾點:
(1)內循環變量與外循環變量不能同名;(2)外循環必須完全包含內循環,不能交叉;
(3)不能從循環體外轉向循環體內,也不能從外循環轉向內循環。
正
確
錯
誤
Forii=1To10Forii=1To20… Nextii Nextii
Forii=1To10Forjj=1To20… NextjjNextiiForii=1To10Forjj=1To20… Nextii Nextjj
Forii=1To10…
NextiiForii=1To10…
Nextii
8.3VBA程序設計
4、其他語句
:除了前面所學的一些重要語句格式,我們還了解幾個其他常見的語句。
8.3VBA程序設計
⑴Goto語句
其形式為:
GoTo{標號|行號}
作用是無條件地轉移到標號或行號指定的那行語句。由于goto語句破壞了程序的邏輯順序,一般不建議使用。IfNumber=1ThenGoToLine1ElseGoToLine2
Line1:’標號1MyString="Numberequals1“Line2:’標號2MyString="Numberequals2"
8.3VBA程序設計
PrivateSubForm_Click()DimI%,Num%Do'建立無窮循環。
ForI=1To100'循環100次。
Num=Int(Rnd*100)'生成一個0~99的隨機數。
SelectCaseNumCase10:ExitFor'退出For...Next循環。
Case50:ExitDo'退出Do...Loop循環。
Case64:ExitSub'退出子過程。
EndSelectNextILoopEndSub例8-5:右邊的例子是使用Exit語句退出For...Next循環、Do...Loop循環及子過程。⑵Exit語句用于退出Do...Loop、For...Next、Function或Sub代碼塊。對應的使用格式為:ExitDo、ExitFor、ExitFunction、ExitSub。分別表示退出DO循環、For循環、函數過程、子過程。
8.3VBA程序設計
例8-6:請把標簽MyLabel高度設為2000,寬度設為2000,標題設為“ThisisMyLabel”。
WithMyLabel.Height=2000.Width=2000.Caption="ThisisMyLabel"EndWithWith對象語句EndWith⑶With…EndWith語句
With語句可以對某個對象執行一系列的語句,而不用重復指出對象的名稱。例如,要改變一個對象的多個屬性,可以在With控制結構中加上屬性的賦值語句,這時候只是引用對象一次而不是在每個屬性賦值時都要引用它。它的語法格式如下:小結
程序的結構可以采用傳統的流程圖來描述。順序結構是指程序的執行按照程序中語句的先后順序執行。選擇程序結構用于判斷給定的條件,根據判斷的結果來控制程序的流程。使用選擇結構語句時,要用條件表達式來描述條件。在VBA中,選擇結構通過If語句與SelectCase語句來實現。循環結構主要用來描述重復執行算法的問題,它是程序設計中最能發揮計算機特長的程序結構。循環結構可以看成是一個條件判斷語句和一個轉向語句的組合。循環結構有三個要素,它們分別是循環變量、循環體和循環終止條件。Goto語句作用是無條件地轉移到標號或行號指定的那行語句。由于goto語句破壞了程序的邏輯順序,一般不建議使用。
DepartmentofComputerScienceandTechnologyThankyou!第8章
模塊
本章內容提要第1講模塊與VBA基礎知識
1第2講VBA程序設計2第3講面向對象程序設計及VBA程序調試3第三講面向對象程序設計及VBA程序調試本講主要教學內容12面向對象編程基礎
過程調用與參數傳遞小結3學習目標1
掌握VBA程序過程調用與參數傳遞的形式及概念。2
掌握VBA程序的面向對象程序設計的概念及相關應用基礎知識。3
掌握VBA程序調試的基本使用方法和技巧。重點與難點
VBA程序過程調用、參數傳遞、面向對象編程常識是本講的重點。參數傳遞、面向對象編程概念是本講的難點。引言
VBA是一種面向對象的語言,因此進行VBA的開發,必須了解面向對象程序設計的一些基本知識。程序調試是查找和解決VBA程序代碼錯誤的過程。
本講將學習VBA程序過程調用與參數傳遞、面向對象編程基礎及程序調試等內容。1、Sub子過程
在VBA中,的Sub子過程分為:事件過程和通用過程。事件過程綁定在事件上,在Access中,不同的對象可觸發不同的事件。但總體來說,Access中的事件主要有鍵盤事件、鼠標事件、對象事件、窗口事件和操作事件等。(2)控件事件的語法
PrivateSub控件名_事件名(參數列表)<語句組>
EndSub(1)窗體事件的語法
PrivateSubForm_事件名(參數列表)<語句組>EndSub
8.3VBA程序設計
8.3.2過程調用與參數傳遞[Public|Private][Static]Sub子過程名([形參表])<局部變量或常數定義>
<語句組>
[ExitSub]
<語句組>EndSub
說明:
(1)子過程名:命名規則與變量名規則相同。子過程名不返回值,而是通過形參與實參的傳遞得到結果,調用時可返回多個值。(2)形式參數列表:形式參數通常簡稱“形參”,僅表示形參的類型、個數、位置,定義時是無值的,只有在過程被調用時,虛實參結合后才獲得相應的值。
(3)通用過程子過程的定義形式如下:
8.3VBA程序設計
(3)過程可以無形式參數,但括號不能省。
(4)參數的定義形式:
[ByVal|ByRef]變量名[()][As類型][,…],
ByVal表示當該過程被調用時,參數是按值傳遞的;ByRef(缺省)表示當該過程被調用時,參數是按地址傳遞的。例如:一個交換兩個整型變量值的子過程。
PrivateSubSwap(XAsInteger,YAsInteger)
DimtempAsInteger
Temp=X:X=Y:Y=TempEndSub
8.3VBA程序設計
2、Function過程[Public|Private][Static]Function函數名([<參數列表>])[As<類型>]<局部變量或常數定義><語句塊>
函數體[函數名=返回值]
[ExitFunction]<語句塊>[函數名=返回值]EndFunction注意:在函數體內,函數名可以當變量使用,函數的返回值就是通過對函數名的賦值語句來實現的,在函數過程中至少要對函數名賦值一次。
8.3VBA程序設計
3、過程的調用子過程的調用:
子過程名
[參數列表]
或:
Call子過程名(參數列表)函數過程的調用:
變量名
=函數過程名([參數列表])說明:
(1)參數列表稱為實參或實元,它必須與形參保持個數相同,位置與類型一一對應。(2)調用時把實參值傳遞給對應的形參。其中值傳遞時實參的值不隨形參的值變化而改變(形變實不變)。而地址傳遞時實參的值隨形參值的改變而改變(形變實也變)。
8.3VBA程序設計
(3)當參數是數組時,形參與實參在參數聲明時應省略其維數,但括號不能省。
(4)調用子過程的形式有兩種,用Call關鍵字時,實參必須加圓括號括起,反之則實參之間用“,”分隔。例如:調用上面定義的Sawp子過程的形式:
Swapa,bCallSwap(a,b)注意:形式參數是指在定義通用過程時,出現在Sub或Function語句中的變量名后面園括號內的數,用來接收傳送給子過程的數據,形參表中的各個變量之間用逗號分隔。
8.3VBA程序設計
PrivateSubCmdOK()……
CallSwap(a,b)……
Swapa,bEndSubPrivateSubSwap(x%,y%)
Dimtemp%Temp=XX=YY=TempEndSub
4、過程調用的執行過程:
8.3VBA程序設計
5、過程之間參數的傳遞⑴形式參數
是指在定義通用過程時,出現在Sub或Function語句中的變量名后面園括號內的數,是用來接收傳送給子過程的數據,形參表中的各個變量之間用逗號分隔。
⑵實際參數實際參數是指在調用Sub或Function過程時,寫入子過程名或函數名后括號內的參數,其作用是將它們的數據(數值或地址)傳送給Sub或Function過程與其對應的形參變量。實參可由常量、表達式、有效的變量名、數組名(后加左、右括號,如A()組成,實參表中各參數用逗號分隔。
8.3VBA程序設計
⑶參數傳遞(虛實結合)
參數傳遞指主調過程的實參(調用時已有確定值和內存地址的參數)傳遞給被調過程的形參。參數的傳遞有兩種方式:按值傳遞、按地址傳遞。形參前加“ByVal”關鍵字是按值傳遞,缺省或加“ByRef”關鍵字為按地址傳遞。⑷傳址與傳值
傳址:形參得到的是實參的地址,當形參值的改變同時也改變實參的值。(形變實也變)。
傳值:形參得到的是實參的值,形參值的改變不會影響實參的值。(形變實不變)
8.3VBA程序設計
SubSwap2(x%,y%)DimTemp%Temp=x:x=y:y=TempEndSubSubSwap1(ByValx%,ByValy%)DimTemp%Temp=x:x=y:y=TempEndSub
例如:實現參數過程調用及參數傳遞的應用實例。定義子過稱swap1定義子過稱swap2PrivateSubCmdOK_Click()a%=10:b%=20:Swap1a,b‘調用swap1傳值
Print"A1=“&a&"B1=“&ba=10:b=20:Swap2a,b‘調用swap2傳地址
Print"A2=“&a&"B2=“&bEndSub
8.3VBA程序設計
1、對象與類對象:對象是基本的運行時的實體,如窗體、報表、各種控件等,包括作用于對象的操作(方法)和對象的響應(事件)。將數據和處理這些數據的過程封裝在一起。類與對象是面向對象程序設計語言的基礎。類:一個抽象的整體概念,對象是類的實例化。
8.3VBA程序設計
8.3.3面向對象程序設計例如:“學生”→類,“張三”→對象2、屬性(Property)
屬性:所有對象都有自己的屬性。用來描述和反映對象特征的參數。如:控件名稱(Name)、標題(Caption)、顏色(Color)、字體(FontName)等屬性決定了對象展現給用戶的界面具有什么樣的外觀及功能。對象屬性設置的方法:
在設計模式下,通過屬性窗口直接設置對象的屬性。
在程序的代碼中通過賦值實現,其格式為:
對象名.屬性名=屬性值
例如:
Label10.Caption=“顯示”
8.3VBA程序設計
在VBA中引用ACCESS對象:基本語法:
Forms(或Reports)!窗體(或報表)名稱!控件名稱[.屬性名]注意要點:如果在通用模塊或在一類模塊中引用另一類模塊的控件時,應該使用上述完整語法。如果在類模塊中引用自己窗體上的控件,僅采用下面語法:
控件名稱[.屬性名]例如:在窗體Form1中引用Form2上的Label1控件:
Forms!Form2!Label1.Caption=“教師信息表”
在引用Form2上引用自己的Label1控件:
Label1.Caption=“教師信息表
8.3VBA程序設計
屬性說明Name(名稱)返回或設定
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年內蒙古自治區包頭市街道辦人員招聘考試備考題庫及答案詳解
- 2026年上海市普陀區中小學教師招聘筆試模擬試題及答案詳解
- 2026年烏魯木齊市沙依巴克區法檢系統書記員招聘考試參考題庫及答案詳解
- 2026年長治市城區中小學教師招聘筆試備考題庫及答案詳解
- 2026年廣州市海珠區法檢系統書記員招聘考試模擬試題及答案詳解
- 2026年陜西省榆林市街道辦人員招聘筆試備考題庫及答案詳解
- 2026年河源市源城區中小學教師招聘筆試備考題庫及答案詳解
- 懷安縣2027屆六年級數學第一學期期末監測模擬試題含解析
- 2026年阜陽市潁東區中小學教師招聘筆試備考題庫及答案詳解
- 2025年遼寧省葫蘆島市中小學教師招聘考試試題及答案詳解
- 2025四川成都新都投資集團有限公司招聘23人筆試參考題庫附帶答案詳解(10套)
- 活不養死不葬合同協議書
- 飯堂食材配送合同協議書
- 景區安全生產培訓課件
- 華東師大版數學七年級下冊期末培優檢測卷
- 高中英語外研版選修一單詞表
- 八年級數學學習探究診斷(上冊)
- 第六屆全國農業行業職業技能大賽(農業經理人賽項)理論參考試題庫-下(多選、判斷題)
- 《電力建設工程施工安全管理導則》(NB∕T 10096-2018)
- (完整版)小毛驢市民農園的經營模式
- 《底層邏輯》劉潤
評論
0/150
提交評論