版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、數(shù)據(jù)類(lèi)型“數(shù)據(jù)類(lèi)型”是指如何將數(shù)據(jù)存儲(chǔ)在內(nèi)存中。(1)Boolean表示邏輯數(shù)據(jù),可以是True或False中的任一個(gè)值。占用2字節(jié)的存儲(chǔ)空間,取值范圍為T(mén)rue或False,缺省值為False。(2)Byte只能表示正數(shù)。占用1字節(jié)的存儲(chǔ)空間,取值范圍為0-255,缺省值為0。(3)Currency一種保存貨幣值數(shù)據(jù)的特殊數(shù)字格式。占用8字節(jié)的存儲(chǔ)空間,取值范圍為-922337203685477.5808-922337203685477.5807,缺省值為0。(4)Date一種用于表示日期或時(shí)間的專(zhuān)用格式。占用8字節(jié)的存儲(chǔ)空間,取值范圍為100年1月1日9999年12月31日,缺省值為00:
2、00:00。(有關(guān)在VBA中使用日期和時(shí)間的詳細(xì)介紹請(qǐng)見(jiàn)后面的一系列文章。)(5)Decimal一種包含以10的冪為刻度的十進(jìn)制數(shù)的變體子類(lèi)型,只能通過(guò)CDec轉(zhuǎn)換函數(shù)創(chuàng)建,不是一種獨(dú)立的數(shù)據(jù)類(lèi)型。占用14字節(jié)的存儲(chǔ)空間,取值范圍為±79228162514264337593543950335(不帶小數(shù)點(diǎn))或±7.9228162514264337593543950335(帶28位小數(shù)點(diǎn)),缺省值為0。(Decimal數(shù)據(jù)類(lèi)型是在Excel 2000中引入的,在以前的版本中不能使用這種數(shù)據(jù)類(lèi)型。該數(shù)據(jù)類(lèi)型非常特殊,因?yàn)椴荒軐?shí)際聲明它,它是Variant的子類(lèi)型,必須使用CDec
3、函數(shù)將一個(gè)變量轉(zhuǎn)換為Decimal數(shù)據(jù)類(lèi)型)(6)Double存儲(chǔ)雙精度浮點(diǎn)數(shù),占用8字節(jié)的存儲(chǔ)空間,取值范圍為負(fù)值:-1.79769313486232E3084.94065645841247E-324,正值:1.79769313486232E3084.94065645841247E-324,缺省值為0。(7)Integer表示從-32768-32767之間的整數(shù),其中一位表示符號(hào),占用2字節(jié)的存儲(chǔ)空間,缺省值為0。(8)Long表示存儲(chǔ)為4個(gè)字節(jié)空間的帶符號(hào)的數(shù),其中一位表示符號(hào),取值范圍為-2147483648-2147483647,缺省值為0。(9)Object包含對(duì)某個(gè)對(duì)象的引用(地址
4、),占用4字節(jié)的存儲(chǔ)空間,可對(duì)任何對(duì)象引用,缺省值為Nothing。(10)Single表示分?jǐn)?shù)、帶小數(shù)位或指數(shù)的數(shù)值等單精度數(shù),占用4字節(jié)的存儲(chǔ)空間,取值范圍為負(fù)值:-3.402823E381.401298E-45,正值:1.401298E-453.402823E38,缺省值為0。(11)String可聲明定長(zhǎng)和變長(zhǎng)的String數(shù)據(jù)類(lèi)型。其中,定長(zhǎng)的String數(shù)據(jù)類(lèi)型占用的存儲(chǔ)空間為字符串的長(zhǎng)度,取值范圍為165400個(gè)字符,缺省值等于該字符串長(zhǎng)度的空格數(shù)。變長(zhǎng)的String數(shù)據(jù)類(lèi)型能動(dòng)態(tài)地加長(zhǎng)或縮短以存儲(chǔ)要求的字符串?dāng)?shù),占用的存儲(chǔ)空間為10字節(jié)加上字符串的長(zhǎng)度,取值范圍為020億個(gè)字符
5、,缺省值為零長(zhǎng)字符串(“”)。2 / 17(有關(guān)String數(shù)據(jù)類(lèi)型及處理和操作字符串?dāng)?shù)據(jù)的VBA內(nèi)置函數(shù)的詳細(xì)介紹請(qǐng)見(jiàn)后面的一系列文章。)(12)VariantVariant字符串類(lèi)型的存儲(chǔ)空間為22字節(jié)加上字符串的長(zhǎng)度,其取值范圍與變長(zhǎng)字符串?dāng)?shù)據(jù)類(lèi)型的取值范圍相同,缺省值為Empty。Variant數(shù)字型的存儲(chǔ)空間為16字節(jié),其取值范圍與Double數(shù)據(jù)類(lèi)型的取值范圍相同,缺省值為Empty。(有關(guān)Variant數(shù)據(jù)類(lèi)型的進(jìn)一步介紹見(jiàn)后面的一系列文章。)(13)用戶自定義類(lèi)型允許用戶創(chuàng)建一種特殊的數(shù)據(jù)類(lèi)型,這種數(shù)據(jù)類(lèi)型由VBA的內(nèi)部數(shù)據(jù)類(lèi)型、數(shù)組、對(duì)象或其他用戶定義類(lèi)型組成,其存儲(chǔ)空間為各
6、個(gè)組成部分的存儲(chǔ)空間的總和,取值范圍與各個(gè)組成部分的數(shù)據(jù)類(lèi)型的取值范圍一致,缺省值為各個(gè)組成部分的缺省值。(有關(guān)用戶自定義類(lèi)型的進(jìn)一步介紹請(qǐng)見(jiàn)后面的一系列文章。)各數(shù)據(jù)類(lèi)型之間也可以相互轉(zhuǎn)換。(有關(guān)數(shù)據(jù)類(lèi)型轉(zhuǎn)換的詳細(xì)介紹請(qǐng)見(jiàn)后面的一系列文章)(有關(guān)數(shù)字?jǐn)?shù)據(jù)類(lèi)型(Byte、Integer、Long、Single、Double、Currency、Decimal、Variant)及相應(yīng)的VBA內(nèi)置函數(shù)的詳細(xì)介紹請(qǐng)見(jiàn)后面的一系列文章。)常量(數(shù))常量即在程序執(zhí)行過(guò)程中不發(fā)生改變的值或字符串。使用Const語(yǔ)句聲明常量。如:Const Rate=0.25Const NumMonths As Intege
7、r=12Public Const myName As String=”BabyPig”而最后一個(gè)語(yǔ)句聲明了一個(gè)公共常量,應(yīng)放在模塊中所有過(guò)程之前聲明。VBA自身包含有許多內(nèi)置常數(shù),它們的值都是VBA預(yù)先定義好的,使用內(nèi)部常數(shù)時(shí)無(wú)需定義這些常數(shù)的值。 幾個(gè)特殊的常數(shù)由于有好幾種不相同的“無(wú)效值”常數(shù),VBA語(yǔ)言提供了好幾種方法,以檢驗(yàn)?zāi)硞€(gè)變量是否為empty或null值,或者設(shè)置某個(gè)變量為empty或null值。(1) vbNull和VarType函數(shù)一起使用,用于確定變量是否包含null。(2) vbNullChar賦值或檢測(cè)null字符,null字符的值為Chr(0),即vbNullChar
8、常數(shù)相當(dāng)于將變量賦值為Chr(0),可用于檢測(cè)變量,確定它的值是否是一個(gè)null字符。(3) vbNullString賦值或檢測(cè)零長(zhǎng)(空)字符串。(4) Null關(guān)鍵字將null值賦給variant變量后,可以通過(guò)調(diào)用IsNull函數(shù)來(lái)檢測(cè)變量是否是Null值。(5) vbEmpty檢測(cè)某個(gè)variant變量是否初始化。(6) Nothing關(guān)鍵字只能和對(duì)象變量一起使用,以確定變量是否具有有效的對(duì)象引用,此外,Nothing關(guān)鍵字還可以用于銷(xiāo)毀當(dāng)前的對(duì)象引用。(關(guān)于常量的介紹還可見(jiàn)ExcelVBA編程系列之?dāng)?shù)據(jù)類(lèi)型(1):常量)變量變量的主要作用是存取數(shù)據(jù)、提供了數(shù)據(jù)存放信息的容器。根據(jù)變量的
9、作用域不同,可分為局部變量、全局變量,見(jiàn)后面的變量(常量)作用域和生存期介紹。變量命名要注意以下幾點(diǎn):1、有效性。變量以字母開(kāi)頭,中間可以出現(xiàn)數(shù)字和一些標(biāo)點(diǎn)符號(hào),除下劃線( _ )作為連字符外,變量名稱(chēng)不能有空格、加號(hào)(+)、減號(hào)(-)、逗號(hào)(,)、句點(diǎn)(.)等符號(hào)。2、VBA不區(qū)分大小寫(xiě)。但在變量命名時(shí),最好體現(xiàn)該變量的作用3、不能使用VBA中的關(guān)鍵字作為變量。4、變量名稱(chēng)中不能有特殊類(lèi)型的聲明字符(#、$、%、&或!)。5、變量名稱(chēng)最多可以包含254個(gè)字符。(有關(guān)VBA的命名規(guī)則的詳細(xì)介紹請(qǐng)見(jiàn)后面的一系列文章)聲明變量其語(yǔ)法為:Dim <變量名> As <數(shù)據(jù)類(lèi)型
10、>或:Private <變量名> As <數(shù)據(jù)類(lèi)型>或:Public <變量名> As <數(shù)據(jù)類(lèi)型>可以在一行中聲明多個(gè)變量,每個(gè)變量之間用逗號(hào)分隔開(kāi)。還有一種聲明變量的方法是,將一個(gè)字符加在變量名稱(chēng)后面,從而聲明變量的數(shù)據(jù)類(lèi)型。如Dim MyVar%表示將變量MyVar聲明為整型。一些類(lèi)型聲明符為:數(shù)據(jù)類(lèi)型 類(lèi)型聲明字符Integer
11、160; %Long &Single !Double #Currency String&
12、#160; $在模塊前加入Option Explicit語(yǔ)句,將強(qiáng)制聲明所使用的所有變量。對(duì)象變量在使用對(duì)象模型的屬性、方法和事件之前,必須創(chuàng)建一個(gè)對(duì)包含所需屬性、方法和事件的類(lèi)的引用??梢韵嚷暶饕粋€(gè)局部對(duì)象變量以存儲(chǔ)該對(duì)象引用,然后把對(duì)象引用賦給該局部變量。聲明對(duì)象變量的方法和聲明其他類(lèi)型的變量基本上一樣。有三種聲明對(duì)象變量的方法:(1) Dim myObject As <庫(kù)名>.<類(lèi)名>此方法指向類(lèi)的類(lèi)型庫(kù),但沒(méi)有給該變量賦予任何類(lèi)的實(shí)
13、例。此時(shí),變量myObject被賦值為Nothing。若要用這種方式引用類(lèi),就必須利用“引用”對(duì)話框向工程添加一個(gè)對(duì)類(lèi)模塊的引用。若要將類(lèi)的實(shí)例引用賦予該變量,必須在使用該變量之前用Set語(yǔ)句賦值。如:Set myObject=<庫(kù)名>.<類(lèi)名>(2) Dim myObject As New <庫(kù)名>.<類(lèi)名>此方法將類(lèi)的新實(shí)例引用賦給Object變量。同樣,要用這種方式引用類(lèi),必須先利用“引用”對(duì)話框向工程添加一個(gè)對(duì)類(lèi)模塊的引用。(3) Dim myObject As Object此方法將myObject變量聲明為一般的Object數(shù)據(jù)類(lèi)型,這
14、在不能預(yù)先知道要?jiǎng)?chuàng)建的對(duì)象的數(shù)據(jù)類(lèi)型時(shí)十分有用。此時(shí),Object變量被賦值為Nothing。若要將對(duì)象引用賦值給該變量,必須使用CreateObject函數(shù)或GetObject函數(shù)。可以用Private或Public語(yǔ)句替換Dim語(yǔ)句,且對(duì)象變量的作用域規(guī)則和其他類(lèi)型的變量一樣。聲明對(duì)象變量可以顯著地簡(jiǎn)化代碼且加快代碼的執(zhí)行速度。有關(guān)對(duì)象模型的基礎(chǔ)知識(shí)見(jiàn)ExcelVBA編程系列之對(duì)象模型(2):初步理解和使用Excel對(duì)象模型一文。集合(Collection)對(duì)象集合對(duì)象是其他對(duì)象的一個(gè)容器。一般有四個(gè)方法:(1) Add方法添加一項(xiàng)到集合中。除了可以指定數(shù)據(jù)外還可以指定鍵值,通過(guò)鍵值可以訪
15、問(wèn)集合中的成員。(2) Count方法返回集合中的項(xiàng)的個(gè)數(shù)。(3) Item方法通過(guò)集合中的索引(即集合中項(xiàng)的序號(hào))或鍵(假設(shè)該項(xiàng)添加到集合時(shí)指定了)檢索集合中的成員。(4) Remove方法通過(guò)集合中的索引或鍵刪除集合中的成員??梢允褂肳ithEnd With構(gòu)造和For Each Next構(gòu)造很方便地處理對(duì)象和集合,其介紹可參見(jiàn)ExcelVBA編程系列之對(duì)象模型(2):初步理解和使用Excel對(duì)象模型一文。運(yùn)算符運(yùn)算符是用于完成操作的一系列符號(hào),包括算術(shù)運(yùn)算符、比較運(yùn)算符、邏輯運(yùn)算符、字符串運(yùn)算符等??捎糜谶B接一個(gè)或多個(gè)語(yǔ)言元素,或者完成一些運(yùn)算以形成一個(gè)表達(dá)式。表達(dá)式表達(dá)式就是變量、常量
16、、運(yùn)算符的集合,可分為算術(shù)表達(dá)式、字符串表達(dá)式、賦值表達(dá)式、布爾表達(dá)式等詳細(xì)的內(nèi)容請(qǐng)見(jiàn)VBA編程系列:運(yùn)算符和表達(dá)式。數(shù)組數(shù)組是一組擁有相同名稱(chēng)同類(lèi)元素。定義數(shù)組后,即創(chuàng)建了數(shù)組。數(shù)組中單個(gè)的數(shù)據(jù)項(xiàng)稱(chēng)為數(shù)組元素,用于訪問(wèn)數(shù)組元素的編號(hào)稱(chēng)為數(shù)組索引號(hào),最小索引號(hào)和最大索引號(hào)稱(chēng)為邊界。在VBA中,根據(jù)數(shù)組元素是否變化,分為固定大小的數(shù)組和動(dòng)態(tài)數(shù)組,根據(jù)數(shù)組的維數(shù)又可分為一維數(shù)組和多維數(shù)組。1、創(chuàng)建數(shù)組用Dim語(yǔ)句來(lái)定義固定大小的數(shù)組,即聲明一個(gè)數(shù)組。如Dim myArray(9) As Integer上面的代碼創(chuàng)建一個(gè)名為myArray含有10個(gè)數(shù)組元素的一維數(shù)組。注意,所有VBA數(shù)組的下界均從0
17、開(kāi)始,因此上面的代碼所創(chuàng)建的數(shù)組元素從myArray(0)到myArray(9)。在Dim語(yǔ)句中不指明數(shù)組元素的個(gè)數(shù)來(lái)聲明動(dòng)態(tài)數(shù)組,如Dim myDynamicArray() As Integer使用ReDim關(guān)鍵字重新定義數(shù)組的大小:ReDim myDynamicArray(10)也可以用ReDim關(guān)鍵字同時(shí)聲明一個(gè)動(dòng)態(tài)數(shù)組并指定該數(shù)組的元素個(gè)數(shù):ReDim myDynamicArray(5) As IntegerVBA沒(méi)有限制重新定義動(dòng)態(tài)數(shù)組大小的次數(shù),但在重新定義數(shù)組大小時(shí),原有的數(shù)組數(shù)據(jù)就會(huì)丟失。如果需要保留原來(lái)的數(shù)據(jù),可以使用Preserve關(guān)鍵字:ReDim Preserve my
18、DynamicArray(5)需要注意的是,如果重新定義數(shù)組時(shí)減小了數(shù)組的大小,則會(huì)丟失被縮減了的那部分元素的數(shù)據(jù)。當(dāng)然,與聲明變量一樣,也可以用Public語(yǔ)句聲明公共數(shù)組。2、確定數(shù)組的邊界可以使用UBound函數(shù)和LBound函數(shù)分別獲取數(shù)組的最大邊界和最小邊界。默認(rèn)情況下,VBA的數(shù)組的下界是從0開(kāi)始的,可以在模塊的聲明部分使用Option Base語(yǔ)句來(lái)改變模塊中數(shù)組的起始邊界。如Option Base 1該語(yǔ)句使數(shù)組元素的索引號(hào)從1開(kāi)始。也可以在定義數(shù)組時(shí)指定數(shù)組的上界和下界,如Dim <數(shù)組名> (<下界> to <上界>) As <數(shù)據(jù)
19、類(lèi)型>3、多維數(shù)組多維數(shù)組可以在每個(gè)數(shù)組元素中存儲(chǔ)一組數(shù)據(jù),因此,多維數(shù)組的每個(gè)數(shù)組元素都包含一個(gè)數(shù)組。與一維數(shù)組相同,可以使用下面的兩種方法創(chuàng)建多維數(shù)組:(1)Dim <數(shù)組名> (<數(shù)組元素?cái)?shù)1>,<數(shù)組元素?cái)?shù)2>,) As <數(shù)據(jù)類(lèi)型>(2)Dim <數(shù)組名>(<下界> to <上界>,<下界> to <上界>,) As <數(shù)據(jù)類(lèi)型>與一維數(shù)組相似,多維數(shù)組也可以是動(dòng)態(tài)的。4、引用數(shù)組中的元素可以使用數(shù)組名稱(chēng)和一個(gè)索引號(hào)來(lái)引用數(shù)組中的某個(gè)特定的元素。(有關(guān)數(shù)組的進(jìn)
20、一步介紹及其應(yīng)用請(qǐng)見(jiàn)后面的一系列文章)內(nèi)置函數(shù)VBA中包含各種內(nèi)置函數(shù),可以簡(jiǎn)化計(jì)算和操作。在VBA表達(dá)式中使用函數(shù)的方式與使用工作表公式中函數(shù)的方式相同。在VBA代碼中,也可以使用很多Excel工作表函數(shù),即使用WorksheetFunction對(duì)象調(diào)用工作表函數(shù)。但是不能使用具有與VBA內(nèi)置函數(shù)功能相同的工作表函數(shù)。(有關(guān)內(nèi)置函數(shù)的進(jìn)一步介紹及應(yīng)用請(qǐng)見(jiàn)后面的一系列文章)基本語(yǔ)句1、控制程序流程語(yǔ)句(1) GoTo語(yǔ)句該語(yǔ)句將執(zhí)行的程序轉(zhuǎn)到指定的標(biāo)簽所在的語(yǔ)句指令,但不能轉(zhuǎn)移到過(guò)程之外的指令。例如,在進(jìn)行錯(cuò)誤捕捉時(shí),發(fā)生錯(cuò)誤后,程序轉(zhuǎn)移至標(biāo)簽所在處執(zhí)行。(2) IfThen語(yǔ)句這種類(lèi)型的語(yǔ)句
21、用于條件判斷中,當(dāng)滿足條件時(shí),執(zhí)行相應(yīng)的語(yǔ)句;當(dāng)條件不滿足時(shí),執(zhí)行其它的操作?;菊Z(yǔ)法為:If <條件> Then <條件滿足時(shí)的執(zhí)行語(yǔ)句>If Then語(yǔ)句有幾種形式分別用于不同的情況:當(dāng)只有一個(gè)條件時(shí),可使用下面的結(jié)構(gòu):If <條件> Then <條件滿足時(shí)的執(zhí)行語(yǔ)句> Else <條件不滿足時(shí)的執(zhí)行語(yǔ)句>其中,Else子句可選。如果該語(yǔ)句不在同一行中,則應(yīng)在后面加上End If語(yǔ)句,即:If <條件> Then 指令End If或:If <條件> Then 指令Else
22、 指令End If當(dāng)條件為真時(shí),執(zhí)行Then后面的語(yǔ)句并結(jié)束IfThen語(yǔ)句的執(zhí)行,否則執(zhí)行Else后面的語(yǔ)句或結(jié)束IfThen語(yǔ)句的執(zhí)行。當(dāng)有兩個(gè)或多個(gè)條件時(shí),可使用嵌套的If Then 結(jié)構(gòu):If <條件> Then 指令ElseIf <條件1> Then 指令Else 指令End If上面只是兩層嵌套,可以根據(jù)情況使用多層嵌套。當(dāng)條件為真時(shí),執(zhí)行Then后面的語(yǔ)句并結(jié)束IfThen語(yǔ)句的執(zhí)行,否則判斷條件1,當(dāng)條件1為真時(shí),執(zhí)行Then后面的語(yǔ)句并結(jié)束IfThen語(yǔ)句的執(zhí)行,否則執(zhí)行Else后面的指令。(3) Select Ca
23、se語(yǔ)句當(dāng)需要作出三種或三種以上的條件判斷時(shí),最后使用Select Case語(yǔ)句。其基本語(yǔ)法為:Select Case <測(cè)試表達(dá)式> Case 條件表達(dá)式1 指令 Case 條件表達(dá)式2 指令 Case Else 指令End Select當(dāng)某個(gè)條件表達(dá)式與測(cè)試表達(dá)式相匹配時(shí),則執(zhí)行其后的指令,否則執(zhí)行Else(如果有的話)后的指令,然后結(jié)束Select Case塊的執(zhí)行
24、。此外,Select Case語(yǔ)句還可以嵌套。(有關(guān)程序控制語(yǔ)句的進(jìn)一步介紹和示例請(qǐng)見(jiàn)后面的一系列文章)2、循環(huán)語(yǔ)句循環(huán)即重復(fù)執(zhí)行某段代碼。在VBA中,有多種可以構(gòu)成循環(huán)的語(yǔ)句結(jié)構(gòu)。(1) For Next 循環(huán)其語(yǔ)法如下:For <計(jì)數(shù)器=開(kāi)始數(shù)> To <結(jié)束數(shù)> step 步長(zhǎng) 指令 Exit For 指令Next 計(jì)數(shù)器從開(kāi)始到結(jié)束,反復(fù)執(zhí)行For和Next之間的指令塊,除非遇到Exit For語(yǔ)句,將提前跳出循環(huán)。其中,步長(zhǎng)和Exit For語(yǔ)句以及Next后的計(jì)數(shù)器均為可選項(xiàng)。ForNext循環(huán)中可以再包含F(xiàn)or
25、Next循環(huán),即ForNext循環(huán)可以嵌套使用。(2) Do While循環(huán)只有在滿足指定的條件時(shí)才執(zhí)行Do While循環(huán)。有兩種形式: 第一種形式Do While 條件 指令 Exit Do 指令Loop當(dāng)條件滿足時(shí)執(zhí)行指令。 第二種形式Do 指令 Exit Do 指令Loop While 條件先執(zhí)行指令,然后再判斷條件,如果條件滿足則再次執(zhí)行指令。其中Exit Do語(yǔ)句表示提前退出指令塊。(3) Do Until循環(huán)與Do While循環(huán)一樣,也有兩種形式; 第一種形式Do Until
26、條件 指令 Exit Do 指令Loop 第二種形式Do 指令 Exit Do 指令Loop Until 條件執(zhí)行指令,直到條件滿足時(shí)退出循環(huán)。(4) While Wend循環(huán)其語(yǔ)法為:While <條件> 指令Wend當(dāng)條件滿足時(shí),則執(zhí)行指令。(有關(guān)循環(huán)語(yǔ)句的進(jìn)一步介紹和示例請(qǐng)見(jiàn)后面的一系列文章)過(guò)程過(guò)程由一組完成所要求操作任務(wù)的VBA語(yǔ)句組成。子過(guò)程不返回值,因此,不能作為參數(shù)的組成部分。其語(yǔ)法為:Private|Public Static Sub <過(guò)程名> (參數(shù))
27、160; 指令 Exit Sub 指令End Sub說(shuō)明:(1) Private為可選。如果使用Private聲明過(guò)程,則該過(guò)程只能被同一個(gè)模塊中的其它過(guò)程訪問(wèn)。(2) Public為可選。如果使用Public聲明過(guò)程,則表明該過(guò)程可以被工作簿中的所有其它過(guò)程訪問(wèn)。但是如果用在包含Option Private Module語(yǔ)句的模塊中,則該過(guò)程只能用于所在工程中的其它過(guò)程。(3) Static為可選。如果使用Static聲明過(guò)程,則該過(guò)程中的所有變量為靜態(tài)變量,其值將保存。(4) Sub為必需。表示過(guò)程開(kāi)始。(5) <過(guò)程名>為必需??梢允褂萌我庥行У倪^(guò)程名
28、稱(chēng),其命名規(guī)則通常與變量的命名規(guī)則相同。(6) 參數(shù)為可選。代表一系列變量并用逗號(hào)分隔,這些變量接受傳遞到過(guò)程中的參數(shù)值。如果沒(méi)有參數(shù),則為空括號(hào)。(7) Exit Sub為可選。表示在過(guò)程結(jié)束之前,提前退出過(guò)程。(8) End Sub為必需。表示過(guò)程結(jié)束。如果在類(lèi)模塊中編寫(xiě)子過(guò)程并把它聲明為Public,它將成為該類(lèi)的方法。(關(guān)于過(guò)程的詳細(xì)介紹和示例見(jiàn)后面的一系列文章)函數(shù)函數(shù)(function)是能完成特定任務(wù)的相關(guān)語(yǔ)句和表達(dá)式的集合。當(dāng)函數(shù)執(zhí)行完畢時(shí),它會(huì)向調(diào)用它的語(yǔ)句返回一個(gè)值。如果不顯示指定函數(shù)的返回值類(lèi)型,就返回缺省的數(shù)據(jù)類(lèi)型值。聲明函數(shù)的語(yǔ)法為:Private|Publ
29、ic Static Function <函數(shù)名> (參數(shù)) As 類(lèi)型 指令 函數(shù)名=表達(dá)式 Exit Function 指令 函數(shù)名=表達(dá)式End Function說(shuō)明:(1) Private為可選。如果使用Private聲明函數(shù),則該函數(shù)只能被同一個(gè)模塊中的其它過(guò)程訪問(wèn)。(2) Public為可選。如果使用Public聲明函數(shù),則表明該函數(shù)可以被所有Excel VBA工程中的所有其它過(guò)程訪問(wèn)。不聲明函數(shù)過(guò)程的作用域時(shí),默認(rèn)的作用域?yàn)镻ublic。(3) Static為可選。如果使用Static聲明函數(shù),則在調(diào)
30、用時(shí),該函數(shù)過(guò)程中的所有變量均保持不變。(4) Function為必需。表示函數(shù)過(guò)程開(kāi)始。(5) <函數(shù)名>為必需??梢允褂萌我庥行У暮瘮?shù)名稱(chēng),其命名規(guī)則與變量的命名規(guī)則相同。(6) 參數(shù)為可選。代表一系列變量并用逗號(hào)分隔,這些變量是傳遞給函數(shù)過(guò)程的參數(shù)值。參數(shù)必須用括號(hào)括起來(lái)。(7) 類(lèi)型為可選。指定函數(shù)過(guò)程返回的數(shù)據(jù)類(lèi)型。(8) Exit Function為可選。表示在函數(shù)過(guò)程結(jié)束之前,提前退出過(guò)程。(9) End Function為必需。表示函數(shù)過(guò)程結(jié)束。通常,在函數(shù)過(guò)程執(zhí)行結(jié)束前給函數(shù)名賦值。函數(shù)可以作為參數(shù)的組成部分。但是,函數(shù)只返回一個(gè)值,它不能執(zhí)行
31、與對(duì)象有關(guān)的動(dòng)作。如果在類(lèi)模塊中編寫(xiě)自定義函數(shù)并將該函數(shù)的作用域聲明為Public,這個(gè)函數(shù)將成為該類(lèi)的方法。(關(guān)于Function過(guò)程的詳細(xì)介紹和示例見(jiàn)后面的一系列文章)事件處理過(guò)程要對(duì)一個(gè)控件事件編寫(xiě)事件處理程序,應(yīng)先打開(kāi)窗體的代碼窗口并從可用對(duì)象的下拉列表中選擇所需的控件。然后,從該控件的可用事件下拉列表中選擇所用的事件。此時(shí),對(duì)事件處理程序的定義語(yǔ)句就會(huì)自動(dòng)出現(xiàn)在代碼窗口中,就可以直接編寫(xiě)事件處理程序了。在Excel中,有下面幾類(lèi)事件,即Excel應(yīng)用程序事件、工作簿事件、工作表事件、圖表事件、用戶窗體事件等。(關(guān)于Excel中事件處理的介紹請(qǐng)見(jiàn)后面的一系列文章)類(lèi)模塊類(lèi)模塊是存放共享
32、變量以及共享代碼的存儲(chǔ)庫(kù)。創(chuàng)建一個(gè)類(lèi)模塊,實(shí)際上也是在創(chuàng)建一個(gè)COM(組件對(duì)象模型)接口。因此,類(lèi)模塊允許通過(guò)一個(gè)由屬性、方法和事件組成的可編程接口向外界描述應(yīng)用程序,同時(shí)保證保留對(duì)應(yīng)用程序的控制權(quán)。也就是說(shuō),類(lèi)模塊能夠讓程序?qū)崿F(xiàn)“封裝”,這樣,在其它工程中可以直接使用某類(lèi)模塊而不需要訪問(wèn)源代碼。此外,可以使用類(lèi)來(lái)創(chuàng)建自已的庫(kù),如果要使用的話,只需要在任何新的工程中添加一個(gè)對(duì)該類(lèi)的引用就行了。并且,如果要改變程序,只需對(duì)類(lèi)模塊改動(dòng)就行了,而不需要在程序的每個(gè)部分都作改動(dòng)。(有關(guān)類(lèi)模塊知識(shí)的詳細(xì)介紹請(qǐng)見(jiàn)后面的一系列文章)屬性過(guò)程屬性過(guò)程(property procedure)是特殊的過(guò)程,用于賦
33、予和獲取自定義屬性的值。屬性過(guò)程只能在對(duì)象模塊如窗體或類(lèi)模塊中使用。有三種屬性過(guò)程:Property Let 給屬性賦值Property Get 獲取屬性的值Property Set 將對(duì)象引用賦給屬性引用調(diào)用子過(guò)程和函數(shù)過(guò)程子過(guò)程可以用下面三種方法調(diào)用。第一種使用Call語(yǔ)句:Call DoSomething(參數(shù)1,參數(shù)2,)如果使用Call語(yǔ)句,就必須用小括號(hào)將參數(shù)列表括起來(lái)。第二種是直接利用過(guò)程名:DoSomething 參數(shù)1,參數(shù)2,此時(shí),不用在參數(shù)列表兩邊加上括號(hào)。如果不想使用函數(shù)的返回值,可以用上述任一種方法調(diào)用函數(shù)。否則,可以用函
34、數(shù)名作為表達(dá)式的組成部分,如If GetFunctionResult(parameter)=1 Then如果用函數(shù)調(diào)用作為表達(dá)式的一部分,參數(shù)列表必須放在小括號(hào)中。第三種是使用Run方法。(關(guān)于過(guò)程調(diào)用更詳細(xì)的介紹和示例請(qǐng)見(jiàn)后面的一系列文章)在過(guò)程間傳遞參數(shù)在很多情況下,需要在子過(guò)程或函數(shù)中調(diào)用另一個(gè)自定義函數(shù)或子過(guò)程,這時(shí),在被調(diào)用過(guò)程中就要用到在調(diào)用過(guò)程中使用的某個(gè)變量。因此,可把該變量作為參數(shù)傳遞給被調(diào)用過(guò)程。不管被調(diào)用過(guò)程是在同一模塊、同一工程中的過(guò)程,還是在遠(yuǎn)程服務(wù)器上的類(lèi)中的一個(gè)方法,從一個(gè)過(guò)程向另一個(gè)過(guò)程傳遞變量的原理都是一樣的。被調(diào)用過(guò)程(而不是調(diào)用過(guò)程)決定了變量如何從調(diào)用過(guò)
35、程傳遞到被調(diào)用過(guò)程。1、VBA允許用兩種不同的方式在過(guò)程和組件之間傳遞參數(shù)。在子過(guò)程或函數(shù)的定義部分,可以指定參數(shù)列表中的變量的傳遞方式:ByRef(按引用)或者ByVal(按值)。(1) ByRef這是VBA中在過(guò)程間傳遞變量的默認(rèn)方法。ByRef是指按引用傳遞變量,即傳遞給被調(diào)用過(guò)程的是原變量的引用。因此,如果改變了被調(diào)用過(guò)程中的變量值,其變化就會(huì)反映到調(diào)用過(guò)程中的那個(gè)變量,因?yàn)樗鼈儗?shí)際上是同一個(gè)變量。(2) ByVal如果使用ByVal關(guān)鍵字傳遞變量,被調(diào)用過(guò)程獲得的就是該變量的獨(dú)立副本。因此,改變被廟用過(guò)程中該變量的值不會(huì)影響調(diào)用過(guò)程中該變量原來(lái)的值。2、Optional參數(shù)Optional關(guān)鍵字用來(lái)指定某個(gè)特定的參數(shù)并不一定要傳遞,即為可選參數(shù)。但是,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度二手車(chē)買(mǎi)賣(mài)合同擔(dān)保及里程檢查范本4篇
- 二零二五年度酒吧突發(fā)事件應(yīng)急預(yù)案與整體承包合同3篇
- 二零二五年智能型發(fā)電機(jī)租賃及遠(yuǎn)程監(jiān)控合同2篇
- 二零二五年度臨時(shí)用工人員技能鑒定合同3篇
- 二零二五年建筑設(shè)備綜合維修保養(yǎng)及改造合同2篇
- 二零二五年雞苗養(yǎng)殖科技研發(fā)與成果轉(zhuǎn)化合同3篇
- 二零二五年社區(qū)便民服務(wù)攤位租賃合同范本2篇
- 2025年度毛毯品牌形象設(shè)計(jì)與推廣合同4篇
- 二零二五版地下綜合管廊施工總承包管理服務(wù)合同范本3篇
- 2025版智能設(shè)備租賃服務(wù)合同范本4篇
- 冬春季呼吸道傳染病防控
- 中介費(fèi)合同范本(2025年)
- 《kdigo專(zhuān)家共識(shí):補(bǔ)體系統(tǒng)在腎臟疾病的作用》解讀
- 生產(chǎn)調(diào)度員崗位面試題及答案(經(jīng)典版)
- 【物 理】2024-2025學(xué)年八年級(jí)上冊(cè)物理寒假作業(yè)人教版
- 交通運(yùn)輸安全生產(chǎn)管理規(guī)范
- 電力行業(yè) 電力施工組織設(shè)計(jì)(施工方案)
- 《法制宣傳之盜竊罪》課件
- 通信工程單位勞動(dòng)合同
- 查對(duì)制度 課件
- 2024-2030年中國(guó)豬肉市場(chǎng)銷(xiāo)售規(guī)模及競(jìng)爭(zhēng)前景預(yù)測(cè)報(bào)告~
評(píng)論
0/150
提交評(píng)論