AccessVBA程序設(shè)計基礎(chǔ)_第1頁
AccessVBA程序設(shè)計基礎(chǔ)_第2頁
AccessVBA程序設(shè)計基礎(chǔ)_第3頁
AccessVBA程序設(shè)計基礎(chǔ)_第4頁
AccessVBA程序設(shè)計基礎(chǔ)_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

會計學(xué)1AccessVBA程序設(shè)計基礎(chǔ)表6-5VBA基本數(shù)據(jù)類型

第1頁/共50頁6.3.2常量、變量與數(shù)組

1.常量2.變量3.VBA數(shù)組第2頁/共50頁常量是指在程序運行的過程中,其值不能被改變的量。常量的使用可以增加代碼的可讀性,并且使代碼更加容易維護。此外,使用固有常量——MicrosoftAccess、MicrosoftforAccessApplications等支持的常量,可以保證既是常量所代表的基礎(chǔ)值在MicrosoftAccess版本升級換代后也能使代碼正常運行。1.常量第3頁/共50頁除了直接常量(即通常的數(shù)值或字符串值常量,如:123,"Lee"等,也稱為字面常量)外,MicrosoftAccess還支持三種類型的常量:符號常量:用Const語句創(chuàng)建,并且在模塊中使用的常量;固有常量:是MicrosoftAccess或引用庫的一部分;系統(tǒng)定義常量:True、False和Null。第4頁/共50頁(1)符號常量通常,符號常量用來代表在代碼中反復(fù)使用的相同的值,或者代表一些具有特定意義的數(shù)字或字符串。符號常量的使用可以增加代碼的可讀性與可維護性。符號常量使用Const語句來創(chuàng)建。創(chuàng)建符號常量時需給出常量值,在程序中運行過程中對符號常量只能作讀取操作,而不允許修改或為其重新賦值,也不允許創(chuàng)建與固有常量同名的符號常量。第5頁/共50頁下面的例子給出了使用Const語句來聲明數(shù)值和字符串常量的幾種方法。ConstconPI=3.14159265可以使用conPI來代替常用的π值。PrivateConstconPI2=PI*2conPI2被聲明為一個私有常量,同時在計算它的值的表達式中使用不在它前面定義的符號常量。私有常量只能在定義它的模塊(子程序或函數(shù))中使用。PublicConstconVersion="VersionAccess"conVersion被聲明為一個公有字符串常量。公有常量可以在整個應(yīng)用程序內(nèi)的所有子程序(包括事件過程)和函數(shù)中使用。

第6頁/共50頁(2)固有常量

除了用Const語句聲明常量之外,MicrosoftAccess還聲明了許多固有常量,并且可以使用VBA常量和ActiveXDataObjects(ADO)常量。還可以在其它引用對象庫中使用常量。MicrosoftAccess舊版本創(chuàng)建的數(shù)據(jù)庫中的固有常量不會自動轉(zhuǎn)換為新的常量格式,但舊的常量仍然可以使用而且不會產(chǎn)生錯誤。所有的固有常量都可在宏或VBA代碼中使用。任何時候這些常量都是可用的。在函數(shù)、方法和屬性的“幫助”主題中對用于其中的具體內(nèi)置常量都有描述。

第7頁/共50頁

固有常量有兩個字母前綴指明了定義該常量的對象庫。來自MicrosoftAccess庫的常量以“ac”開頭,來自ADO庫的常量以“ad”開頭,而來自VisualBasic庫的常量則以“vb”開頭,例如:acForm、adAddNew、vbCurrency因為固有常量所代表的值在MicrosoftAccess的以后版本中可能改變,所以應(yīng)該盡可能使用常量而不用常量的實際值??梢酝ㄟ^在“對象瀏覽器”中選擇常量或在“立即”窗口中輸入“?固有常量名”來顯示常量的實際值??梢栽谌魏卧试S使用符號常量或用戶定義常量的地方(包括表達式中)使用固有常量。如果需要,用戶還可以用“對象瀏覽器”來查看所有可用對象庫中的固有常量列表。如圖6-15所示。

第8頁/共50頁圖6-15固有常量查找

第9頁/共50頁3)系統(tǒng)定義常量系統(tǒng)定義的常量有三個:True、False和Null。系統(tǒng)定義常量可以在計算機上的所有應(yīng)用程序中使用。第10頁/共50頁2.變量變量實際上是一個符號地址,它代表了命名的存儲位置,包含在程序執(zhí)行階段修改的數(shù)據(jù)。每個變量都有變量名,在其作用域范圍內(nèi)可唯一識別。使用前可以指定數(shù)據(jù)類型(即采用顯式聲明),也可以不指定(即采用隱式聲明)。第11頁/共50頁(1)變量的聲明變量名必須以字母字符開頭,在同一范圍內(nèi)必須是唯一的,不能超過255個字符,而且中間不能包含句點或類型聲明字符。雖然,在代碼中允許使用未經(jīng)聲明的變量,但一個良好的編程習(xí)慣應(yīng)該是在程序開始幾行聲明將用于本程序的所有變量。這樣做的目的是為了避免數(shù)據(jù)輸入的錯誤,提高應(yīng)用程序的可維護性。對變量進行聲明可以使用類型說明符號、Dim語句和DefType語句。第12頁/共50頁①使用類型說明符號聲明變量類型

在傳統(tǒng)的Basic語言中,允許使用類型聲明符號來聲明常量和變量的數(shù)據(jù)類型,如:varXyz%是一個整型變量;123%則是一個整型常數(shù)。類型聲明符號在使用時始終放在變量或常數(shù)的末尾。VBA中的類型說明符號有%(Integer)、&(Long)、!(Single)、#(Double)、$(String)和@(Currency)。類型說明符號使用時是作為變量名的一部分,放在變量名的最后一個字符。例如,intX%是一個整型變量;douY#是一個雙精度變量;strZ$是個字符串變量。在使用時不能將類型說明符號省略。如:intX%=1243douY#=45665.456strZ$="Access"

第13頁/共50頁②使用Dim語句聲明變量Dim語句使用格式為:Dim變量名As數(shù)據(jù)類型例如:DimstrXAsString聲明了一個字符串類型變量strX??梢允褂肈im語句在一行聲明多個變量,例如:DimintX,douY,strZAsStrring第14頁/共50頁

表示聲明了三個變量intX,douY和strZ,其中只有最后一個strZ聲明為字符串類型變量,intX和douY都沒有聲明其數(shù)據(jù)類型,即遵循類型說明符號規(guī)則認(rèn)定為變體(Variant)類型。在一行中聲明多個變量時,每一個變量的數(shù)據(jù)類型應(yīng)使用as聲明。正確的聲明方法如下:DimintXAsInteger,douYAsDouble,strZAsString最有效、值得提倡的做法是一行只聲明一個變量。使用Dim聲明了一個變量后,在代碼中使用變量名,其末尾帶與不帶相應(yīng)的類型說明符號都代表同一個變量。第15頁/共50頁③DefType語句

DefType語句只能用于模塊級,即模塊的通用聲明部分,用來為變量和傳送給過程的參數(shù)設(shè)置缺省數(shù)據(jù)類型,以及為其名稱以指定的字符開頭的Function和PropertyGet過程,設(shè)置返回值類型。DefType語句使用格式如下:DefType字母[,字母范圍]例如:DefInta,b,e-h說明了在模塊中使用的以字母a,b,e到h開頭的變量(不區(qū)分大小寫)的默認(rèn)數(shù)據(jù)類型為整型。表6-6列出了VBA中所有可能的DefType語句和對應(yīng)的數(shù)據(jù)類型。

第16頁/共50頁表6-6DefType語句和相應(yīng)的數(shù)據(jù)類型

第17頁/共50頁④使用變體類型聲明變量數(shù)據(jù)類型可以使用上述三種方法,VBA在判斷一個變量的數(shù)據(jù)類型時,按以下先后順序進行:I.是否使用Dim語句;II.是否使用數(shù)據(jù)類型說明符;III.是否使用DefType語句。沒有上述三種方法聲明數(shù)據(jù)類型的變量默認(rèn)為變體類型(Variant)。第18頁/共50頁⑤用戶自定義類型的聲明與使用用戶自定義類型可以是任何用Type語句定義的數(shù)據(jù)類型。用戶自定義類型可包含一個或多個基本數(shù)據(jù)類型的數(shù)據(jù)元素、數(shù)組或一個先前定義的用戶自定義類型。例如:TypeMyTypeMyNameAsString*l0'定義字符串變量存儲一個名字。

MyBirthDateAsDate'定義日期變量存儲一個生日。

MySexAsInteger'定義整型變量存儲性別EndType'(0為女,1為男)第19頁/共50頁上例定義了一個名稱為“MyType”的數(shù)據(jù)類型。MyType類型的數(shù)據(jù)具有三個域MyName、MyBirthDate和MySex。在自定義數(shù)據(jù)類型時應(yīng)注意:Type語句只能在模塊級使用??梢栽赥ype前面加上Public或Private來聲明自定義數(shù)據(jù)類型的作用域,這與其它VBA基本數(shù)據(jù)類型相同。聲明自定義數(shù)據(jù)類型的域時,如果使用字符串類型,最好定長字符串,如MyNameAsString*l0。使用Type語句聲明了一個用戶自定義類型后,就可以在該聲明范圍內(nèi)的任何位置聲明該類型的變量??梢允褂肈im、private、Public、ReDim或Static來聲明用戶自定義類型的變量。第20頁/共50頁下面的例程說明了自定義數(shù)據(jù)類型的使用。OptionCompareDatabase’自定義一個公共數(shù)據(jù)類型TypeMyTypeMyNameAsString*l0'定義字符串變量存儲一個名字。

MyBirthDateAsDate'定義日期變量存儲一個生日。

MySexAsInteger'定義整型變量存儲性別(0為女,1為男)第21頁/共50頁EndTypeSubuseType()DimUdtXyzasMyTypeUdtXyz.MyName="Xyz"UdtXyz.MyBirthDate=75/12/17UdtXyz.MySex=1Debug.PrintUdtXyz.MyName,UdtXyz.MyBirthDate,UdtXyz.MySexEndSub例程先在通用聲明中自定義了MyType數(shù)據(jù)類型,然后在useType()過程中使用它來聲明Xyz為一個MyType數(shù)據(jù)類型變量。第22頁/共50頁(2)變量的作用域和生命周期

在前面己經(jīng)學(xué)習(xí)了變量的三種聲明方法,對于變量的作用域,還須作明確的聲明才能確定。在聲明變最作用域時可以將變量聲明為Locate(本地)、Private(私有,Module模塊級)或Public(公共)。本地變量:僅在聲明變量的過程中有效。在過程和函數(shù)內(nèi)部所聲明的變量,不管是否使用Dim語句,都是本地變量。本地變量具有在本地使用的最高優(yōu)先級,即當(dāng)存在與本地變量同名的模塊級的私有或公共變量時,模塊級的變量則被屏蔽;

第23頁/共50頁

私有變量:在所聲明的模塊中的所有函數(shù)和過程都有效。私有變量必須在模塊的通用聲明部分使用“Private變量名As數(shù)據(jù)類型”進行聲明;公共變量:在所有模塊的所有過程和函數(shù)都可以使用。在模塊通用聲明中使用“Public變量名As數(shù)據(jù)類型”聲明公共變量。圖9-2對私有變量和公共變量的聲明進行了示例,并說明了作用范圍。第24頁/共50頁圖6-16變量作用域

模塊對象模塊APublicintA1asintegerPrivateintA2asintegerSubA1()本地變量私有變量intA2公共變量intA1,intB1EndSubSubA2()本地變量私有變量intA2公共變量intA1,intB1EndSub模塊BPublicintB1asintegerPrivateintB2asintegerSubB1()本地變量私有變量intB2公共變量intB1,intA1EndSubSubB2()本地變量私有變量intB2公共變量intB1,intA1EndSub第25頁/共50頁

變量的生命周期與作用域是兩個不同的概念,它是指變量從首次出現(xiàn)(執(zhí)行變量聲明,為其分配存儲空間)到消失的代碼執(zhí)行時間。本地變量的生命周期是過程或函數(shù)調(diào)用被開始調(diào)用到運行結(jié)束的時間(靜態(tài)變量除外)。公共變量的生命周期是從聲明到整個Access應(yīng)用程序結(jié)束。對于本地變量的生命周期的一個例外是靜態(tài)變量。靜態(tài)變量的聲明使用“Static變量名As數(shù)據(jù)類型”。靜態(tài)變量在Access程序執(zhí)行期間一直存在,它們的作用范圍是聲明它的子程序或函數(shù)。靜態(tài)變量可以用來計算事件發(fā)生的次數(shù)或者是函數(shù)與過程被調(diào)用的次數(shù)。第26頁/共50頁3.VBA數(shù)組

數(shù)組是由一組具有相同數(shù)據(jù)類型的變量(稱為數(shù)組元素)構(gòu)成的集合。(1)數(shù)組的聲明在VBA中不允許隱式說明數(shù)組,用戶可用Dim語句來聲明數(shù)組,聲明方式為:Dim數(shù)組名(數(shù)組下標(biāo)上界)As數(shù)據(jù)類型如:DimintArray(l0)AsInteger這條語句聲明了一個有10個元素的數(shù)組,每個數(shù)組元素為一個整型變量。這是只指定數(shù)組元素下標(biāo)上界來定義數(shù)組。第27頁/共50頁在使用數(shù)組時,可以使用OptionBase來指定數(shù)組的默認(rèn)下標(biāo)下界是0或l。默認(rèn)情況下,數(shù)組下標(biāo)下界為0。所以,用戶只需使用它來指定默認(rèn)下標(biāo)下界為l。OptionBase能用在模塊的通用聲明部分。VBA允許在指定數(shù)組下標(biāo)范圍時使用To,如下例所示:DimintArray(-3to3)AsInteger該語句定義一個有7個元素的數(shù)組,數(shù)組元素下標(biāo)從-3到3。如果要定義多維數(shù)組,聲明方式為:Dim數(shù)組名(數(shù)組第1維下標(biāo)上界,數(shù)組第2維下標(biāo)上界…)As數(shù)據(jù)類型如:DimintArray(2,3)AsInteger第28頁/共50頁語句定義了一個二維數(shù)組,第一維有3個元素,第二維有4個元素。在VBA中,還允許用戶定義動態(tài)數(shù)組。動態(tài)數(shù)組的定義方法是,先使用Dim來聲明數(shù)組,但不指定數(shù)組元素的個數(shù)。而在以后使用時再用ReDim來指定數(shù)組元素個數(shù),稱為數(shù)組重定義。在對數(shù)組重定義時,可以使用ReDim后加保留字Preserve來保留以前的值否則使用ReDim后,數(shù)組元素的值會被重新初始化為默認(rèn)值,下面的例子說明了動態(tài)數(shù)組的定義方法:第29頁/共50頁DimintArray()AsInteger’聲明部分ReDimPreserveintAma(l0)’在過程中重定義,保留以前的值ReDimintArray(l0)’在過程中重新初始化同樣,用戶可以使用Public、Private或Static來聲明公共數(shù)組、私有數(shù)組或靜態(tài)數(shù)組。第30頁/共50頁(2)數(shù)組的使用數(shù)組聲明后,數(shù)組中的每個元素都可以當(dāng)作單個的變量來使用,其使用方法同相同類型的普通變量。其元素引用格式為:數(shù)組名(下標(biāo)值表)其中:如果該數(shù)組為一維數(shù)組,則下標(biāo)值表為一個范圍為[數(shù)組下標(biāo)下界,數(shù)組下標(biāo)上界]的整數(shù);如果該數(shù)組為多維數(shù)組,則下標(biāo)值表為一個由多個(不大于數(shù)組維數(shù))用逗號分開的整數(shù)序列,每個整數(shù)(范圍為[數(shù)組該維下標(biāo)下界,數(shù)組該維下標(biāo)上界])表示對應(yīng)的下標(biāo)值。第31頁/共50頁例如可以如下引用前面定義的數(shù)組:intAma(2)'引用一數(shù)組intAma的第3個元素。intArray(0,0)'引用二數(shù)組intArray的第1行第1個元素。例如,若要存儲一年中每天的支出,可以聲明一個具有365個元素的數(shù)組變量,而不是365個變量。數(shù)組中的每一個元素都包含一個值。下列的語句聲明數(shù)組curExpense具有365個元素。按照缺省規(guī)定,數(shù)組的索引是從零開始,所以此數(shù)組的上標(biāo)界是364而不是365。DimcurExpense(364)AsCurrency第32頁/共50頁若要設(shè)置某個元素的值,必須指定該元素的索引(即下標(biāo)值表)。下面的示例對于數(shù)組中的每個元素都賦予一個初始值20。SubFillArray()DimcurExpense(364)AsCurrencyDimintIAsIntegerForintI=0to364

curExpense(intI)=20NextEndSub第33頁/共50頁6.3.3運算符與表達式

1.算術(shù)運算符與算術(shù)表達式2.字符串連接符與字符串表達式3.關(guān)系與邏輯運算符、邏輯表達式及其取值4.對象運算符與對象運算表達式第34頁/共50頁算術(shù)運算符是常用的運算符,用來執(zhí)行簡單的算術(shù)運算。VBA提供了8個算術(shù)運算符,表6-7列出了這些算術(shù)運算符。在8個算術(shù)運算符中,除取負(fù)(-)是單目運算符外,其它均為雙目運算符。加(+),減(-),乘(*),取負(fù)(-)等1.算術(shù)運算符與算術(shù)表達式第35頁/共50頁表6-7算術(shù)運算符

第36頁/共50頁(1)指數(shù)運算指數(shù)運算用來計算乘方和方根,其運算符為^,2^8表示2的8次方,而2^(1/2)或2^0.5是計算2的平方根。(2)浮點數(shù)除法與整數(shù)除法浮點數(shù)除法運算符(/)執(zhí)行標(biāo)準(zhǔn)除法操作,其結(jié)果為浮點數(shù)。例如,表達式5/2的結(jié)果為2.5,與數(shù)學(xué)中的除法一樣。整數(shù)除法運算符(\)執(zhí)行整除運算,結(jié)果為整型值,因此,表達式5\2的值為2。第37頁/共50頁整除的操作數(shù)一般為整型值。當(dāng)操作數(shù)帶有小數(shù)時,首先被四舍五入為整型數(shù)或長整型數(shù),然后進行整除運算。操作數(shù)必須在(-2147483648.5,214748367.5)范圍內(nèi),其運算結(jié)果被截斷為整型數(shù)(Integer)或長整數(shù)(Long),不再進行舍入處理。第38頁/共50頁(3)取模運算取模運算符(Mod)用來求余數(shù),其結(jié)果為第一個操作數(shù)整除第二個操作數(shù)所得的余數(shù)。表9-3按優(yōu)先順序列出了算術(shù)運算符。在8個算術(shù)運算符中,指數(shù)運算符(^)優(yōu)先級最高,其次是取負(fù)(-)運算符、乘(*)、浮點除(\)、整除(/)、加(+)、減(-)。其中乘和浮點除是同級運算符,加和減是同級運算符。當(dāng)一個表達式中含有多種算術(shù)運算符時,必須嚴(yán)格按上述順序求值。此外,如果表達式中含有括號,則先計算括號內(nèi)表達式的值;有多層括號時,先計算內(nèi)層括號中的表達式。第39頁/共50頁字符串連接(&)用來連接多個字符串(字符串相加)。例如:A$="My"B$="Home"C$=A$+B$運算結(jié)果為:變量C$的值為"MyHome"。在VBA中,“+”既可用作加法運算符,還可以用作字符串連接符,但“&”專門用作字符串連接運算符,其作用與“+”相同。在有些情況下,用“&”比用“+”可能更安全。2.字符串連接符與字符串表達式第40頁/共50頁(1)關(guān)系運算符與關(guān)系表達式關(guān)系運算符也稱比較運算符,用來對兩個表達式的值進行比較,比較的結(jié)果是一個邏輯值,即真(True)或假(False)。用關(guān)系運算符連接兩個算術(shù)表達式所組成的表達式叫做關(guān)系表達式。VBA提供了6個關(guān)系運算符,如表6-8所示。3.關(guān)系與邏輯運算符、邏輯表達式及其取值第41頁/共50頁表

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論