午夜视频在线网站,日韩视频精品在线,中文字幕精品一区二区三区在线,在线播放精品,1024你懂我懂的旧版人,欧美日韩一级黄色片,一区二区三区在线观看视频

分享

VBA語(yǔ)法基礎(chǔ)(上)

 昵稱885512 2010-02-25
VBA語(yǔ)法基礎(chǔ)(上)  轉(zhuǎn)自:http://hi.baidu.com/freehawk/blog/item/98f61f08d707d8d563d986e2.html
- - - - - - - - - - - - - - -- - -

數(shù)據(jù)類型
“數(shù)據(jù)類型”是指如何將數(shù)據(jù)存儲(chǔ)在內(nèi)存中。
(1)Boolean
表示邏輯數(shù)據(jù),可以是True或False中的任一個(gè)值。占用2字節(jié)的存儲(chǔ)空間,取值范圍為True或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í)間的專用格式。占用8字節(jié)的存儲(chǔ)空間,取值范圍為100年1月1日——9999年12月31日,缺省值為00:00:00。
(5)Decimal
一種包含以10的冪為刻度的十進(jìn)制數(shù)的變體子類型,只能通過CDec轉(zhuǎn)換函數(shù)創(chuàng)建,不是一種獨(dú)立的數(shù)據(jù)類型。占用14字節(jié)的存儲(chǔ)空間,取值范圍為±79228162514264337593543950335(不帶小數(shù)點(diǎn))或±7.9228162514264337593543950335(帶28位小數(shù)點(diǎn)),缺省值為0。
(Decimal數(shù)據(jù)類型是在Excel2000中引入的,在以前的版本中不能使用這種數(shù)據(jù)類型。該數(shù)據(jù)類型非常特殊,因?yàn)椴荒軐?shí)際聲明它,它是Variant的子類型,必須使用CDec函數(shù)將一個(gè)變量轉(zhuǎn)換為Decimal數(shù)據(jù)類型)
(6)Double
存儲(chǔ)雙精度浮點(diǎn)數(shù),占用8字節(jié)的存儲(chǔ)空間,取值范圍為負(fù)值:-1.79769313486232E308——4.94065645841247E-324,正值:1.79769313486232E308——4.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字節(jié)的存儲(chǔ)空間,可對(duì)任何對(duì)象引用,缺省值為Nothing。
(10)Single
表示分?jǐn)?shù)、帶小數(shù)位或指數(shù)的數(shù)值等單精度數(shù),占用4字節(jié)的存儲(chǔ)空間,取值范圍為負(fù)值:-3.402823E38——1.401298E-45,正值:1.401298E-45——3.402823E38,缺省值為0。
(11)String
可聲明定長(zhǎng)和變長(zhǎng)的String數(shù)據(jù)類型。其中,定長(zhǎng)的String數(shù)據(jù)類型占用的存儲(chǔ)空間為字符串的長(zhǎng)度,取值范圍為1——65400個(gè)字符,缺省值等于該字符串長(zhǎng)度的空格數(shù)。變長(zhǎng)的String數(shù)據(jù)類型能動(dòng)態(tài)地加長(zhǎng)或縮短以存儲(chǔ)要求的字符串?dāng)?shù),占用的存儲(chǔ)空間為10字節(jié)加上字符串的長(zhǎng)度,取值范圍為0——20億個(gè)字符,缺省值為零長(zhǎng)字符串(“”)。

(12)Variant
Variant字符串類型的存儲(chǔ)空間為22字節(jié)加上字符串的長(zhǎng)度,其取值范圍與變長(zhǎng)字符串?dāng)?shù)據(jù)類型的取值范圍相同,缺省值為Empty。
Variant數(shù)字型的存儲(chǔ)空間為16字節(jié),其取值范圍與Double數(shù)據(jù)類型的取值范圍相同,缺省值為Empty。
(13)用戶自定義類型
允許用戶創(chuàng)建一種特殊的數(shù)據(jù)類型,這種數(shù)據(jù)類型由VBA的內(nèi)部數(shù)據(jù)類型、數(shù)組、對(duì)象或其他用戶定義類型組成,其存儲(chǔ)空間為各個(gè)組成部分的存儲(chǔ)空間的總和,取值范圍與各個(gè)組成部分的數(shù)據(jù)類型的取值范圍一致,缺省值為各個(gè)組成部分的缺省值。
各數(shù)據(jù)類型之間也可以相互轉(zhuǎn)換。
- - - - - - - - - - - - - - -- - -

常量(數(shù))
常量即在程序執(zhí)行過程中不發(fā)生改變的值或字符串。
使用Const語(yǔ)句聲明常量。如:
Const Rate=0.25
Const NumMonths As Integer=12
Public Const myName As String=”BabyPig”
而最后一個(gè)語(yǔ)句聲明了一個(gè)公共常量,應(yīng)放在模塊中所有過程之前聲明。
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常數(shù)相當(dāng)于將變量賦值為Chr(0),可用于檢測(cè)變量,確定它的值是否是一個(gè)null字符。
(3) vbNullString
賦值或檢測(cè)零長(zhǎng)(空)字符串。
(4) Null關(guān)鍵字
將null值賦給variant變量后,可以通過調(diào)用IsNull函數(shù)來檢測(cè)變量是否是Null值。
(5) vbEmpty
檢測(cè)某個(gè)variant變量是否初始化。
(6) Nothing關(guān)鍵字
只能和對(duì)象變量一起使用,以確定變量是否具有有效的對(duì)象引用,此外,Nothing關(guān)鍵字還可以用于銷毀當(dāng)前的對(duì)象引用。

- - - - - - - - - - - - - - -- - -

變量
變量的主要作用是存取數(shù)據(jù)、提供了數(shù)據(jù)存放信息的容器。根據(jù)變量的作用域不同,可分為局部變量、全局變量,見后面的變量(常量)作用域和生存期介紹。
變量命名要注意以下幾點(diǎn):
1、有效性。變量以字母開頭,中間可以出現(xiàn)數(shù)字和一些標(biāo)點(diǎn)符號(hào),除下劃線(_)作為連字符外,變量名稱不能有空格、加號(hào)(+)、減號(hào)(-)、逗號(hào)(,)、句點(diǎn)(.)等符號(hào)。
2、VBA不區(qū)分大小寫。但在變量命名時(shí),最好體現(xiàn)該變量的作用
3、不能使用VBA中的關(guān)鍵字作為變量。
4、變量名稱中不能有特殊類型的聲明字符(#、$、%、&或!)。
5、變量名稱最多可以包含254個(gè)字符。
- - - - - - - - - - - - - - -- - -

聲明變量
其語(yǔ)法為:
Dim <變量名> As <數(shù)據(jù)類型>
或:Private <變量名> As<數(shù)據(jù)類型>
或:Public <變量名> As<數(shù)據(jù)類型>
可以在一行中聲明多個(gè)變量,每個(gè)變量之間用逗號(hào)分隔開。
還有一種聲明變量的方法是,將一個(gè)字符加在變量名稱后面,從而聲明變量的數(shù)據(jù)類型。如
Dim MyVar%
表示將變量MyVar聲明為整型。一些類型聲明符為:
數(shù)據(jù)類型    類型聲明字符
Integer           %
Long              &
Single          !
Double       #
Currency    @
String          $
在模塊前加入Option Explicit語(yǔ)句,將強(qiáng)制聲明所使用的所有變量。
- - - - - - - - - - - - -- - - - -
對(duì)象變量
在使用對(duì)象模型的屬性、方法和事件之前,必須創(chuàng)建一個(gè)對(duì)包含所需屬性、方法和事件的類的引用??梢韵嚷暶饕粋€(gè)局部對(duì)象變量以存儲(chǔ)該對(duì)象引用,然后把對(duì)象引用賦給該局部變量。
聲明對(duì)象變量的方法和聲明其他類型的變量基本上一樣。有三種聲明對(duì)象變量的方法:
(1) Dim myObject As<庫(kù)名>.<類名>
此方法指向類的類型庫(kù),但沒有給該變量賦予任何類的實(shí)例。此時(shí),變量myObject被賦值為Nothing。若要用這種方式引用類,就必須利用“引用”對(duì)話框向工程添加一個(gè)對(duì)類模塊的引用。若要將類的實(shí)例引用賦予該變量,必須在使用該變量之前用Set語(yǔ)句賦值。如:
Set myObject=<庫(kù)名>.<類名>
(2) Dim myObject As New<庫(kù)名>.<類名>
此方法將類的新實(shí)例引用賦給Object變量。同樣,要用這種方式引用類,必須先利用“引用”對(duì)話框向工程添加一個(gè)對(duì)類模塊的引用。
(3) Dim myObject As Object
此方法將myObject變量聲明為一般的Object數(shù)據(jù)類型,這在不能預(yù)先知道要?jiǎng)?chuàng)建的對(duì)象的數(shù)據(jù)類型時(shí)十分有用。此時(shí),Object變量被賦值為Nothing。若要將對(duì)象引用賦值給該變量,必須使用CreateObject函數(shù)或GetObject函數(shù)。
可以用Private或Public語(yǔ)句替換Dim語(yǔ)句,且對(duì)象變量的作用域規(guī)則和其他類型的變量一樣。
聲明對(duì)象變量可以顯著地簡(jiǎn)化代碼且加快代碼的執(zhí)行速度。
有關(guān)對(duì)象模型的基礎(chǔ)知識(shí)見ExcelVBA編程系列之對(duì)象模型(2):初步理解和使用Excel對(duì)象模型一文。
- - - - - - - - - - - - -- - - - -
集合(Collection)對(duì)象
集合對(duì)象是其他對(duì)象的一個(gè)容器。
一般有四個(gè)方法:
(1) Add方法
添加一項(xiàng)到集合中。除了可以指定數(shù)據(jù)外還可以指定鍵值,通過鍵值可以訪問集合中的成員。
(2) Count方法
返回集合中的項(xiàng)的個(gè)數(shù)。
(3) Item方法
通過集合中的索引(即集合中項(xiàng)的序號(hào))或鍵(假設(shè)該項(xiàng)添加到集合時(shí)指定了)檢索集合中的成員。
(4) Remove方法
通過集合中的索引或鍵刪除集合中的成員。
可以使用With…End With構(gòu)造和For Each …Next構(gòu)造很方便地處理對(duì)象和集合,其介紹可參見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á)式就是變量、常量、運(yùn)算符的集合,可分為算術(shù)表達(dá)式、字符串表達(dá)式、賦值表達(dá)式、布爾表達(dá)式等
詳細(xì)的內(nèi)容請(qǐng)見VBA編程系列:運(yùn)算符和表達(dá)式
- - - - - - - - - - - - - - -- - -
數(shù)組
數(shù)組是一組擁有相同名稱同類元素。定義數(shù)組后,即創(chuàng)建了數(shù)組。數(shù)組中單個(gè)的數(shù)據(jù)項(xiàng)稱為數(shù)組元素,用于訪問數(shù)組元素的編號(hào)稱為數(shù)組索引號(hào),最小索引號(hào)和最大索引號(hào)稱為邊界。
在VBA中,根據(jù)數(shù)組元素是否變化,分為固定大小的數(shù)組和動(dòng)態(tài)數(shù)組,根據(jù)數(shù)組的維數(shù)又可分為一維數(shù)組和多維數(shù)組。
1、創(chuàng)建數(shù)組
用Dim語(yǔ)句來定義固定大小的數(shù)組,即聲明一個(gè)數(shù)組。如
Dim myArray(9) As Integer
上面的代碼創(chuàng)建一個(gè)名為myArray含有10個(gè)數(shù)組元素的一維數(shù)組。注意,所有VBA數(shù)組的下界均從0開始,因此上面的代碼所創(chuàng)建的數(shù)組元素從myArray(0)到myArray(9)。
在Dim語(yǔ)句中不指明數(shù)組元素的個(gè)數(shù)來聲明動(dòng)態(tài)數(shù)組,如
Dim myDynamicArray() As Integer
使用ReDim關(guān)鍵字重新定義數(shù)組的大?。?br>ReDim myDynamicArray(10)
也可以用ReDim關(guān)鍵字同時(shí)聲明一個(gè)動(dòng)態(tài)數(shù)組并指定該數(shù)組的元素個(gè)數(shù):
ReDim myDynamicArray(5) As Integer
VBA沒有限制重新定義動(dòng)態(tài)數(shù)組大小的次數(shù),但在重新定義數(shù)組大小時(shí),原有的數(shù)組數(shù)據(jù)就會(huì)丟失。如果需要保留原來的數(shù)據(jù),可以使用Preserve關(guān)鍵字:
ReDim Preserve myDynamicArray(5)
需要注意的是,如果重新定義數(shù)組時(shí)減小了數(shù)組的大小,則會(huì)丟失被縮減了的那部分元素的數(shù)據(jù)。
當(dāng)然,與聲明變量一樣,也可以用Public語(yǔ)句聲明公共數(shù)組。
2、確定數(shù)組的邊界
可以使用UBound函數(shù)和LBound函數(shù)分別獲取數(shù)組的最大邊界和最小邊界。
默認(rèn)情況下,VBA的數(shù)組的下界是從0開始的,可以在模塊的聲明部分使用OptionBase語(yǔ)句來改變模塊中數(shù)組的起始邊界。如
Option Base 1
該語(yǔ)句使數(shù)組元素的索引號(hào)從1開始。
也可以在定義數(shù)組時(shí)指定數(shù)組的上界和下界,如
Dim <數(shù)組名> (<下界> to<上界>) As <數(shù)據(jù)類型>
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ù)類型>
(2)Dim <數(shù)組名>(<下界> to<上界>,<下界> to<上界>,……) As <數(shù)據(jù)類型>
與一維數(shù)組相似,多維數(shù)組也可以是動(dòng)態(tài)的。
4、引用數(shù)組中的元素
可以使用數(shù)組名稱和一個(gè)索引號(hào)來引用數(shù)組中的某個(gè)特定的元素。
- - - - - - - - - - - - - - -- - -

內(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ù)。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多