|
標(biāo)識(shí)符: 一.定義 標(biāo)識(shí)符是一種標(biāo)識(shí)變量,常量,過(guò)程,函數(shù),類等語(yǔ)言構(gòu)成單位的符號(hào),利用它可以完成對(duì)變量,常量,過(guò)程,函數(shù),類等的引用. 二.命名規(guī)則 1) 字母打頭,由字母,數(shù)字和下劃線組成,如 A987b_23Abc 2) 字符長(zhǎng)度小于 40,(Excel2002以上中文版等,可以用漢字且長(zhǎng)度可達(dá) 254個(gè)字符) 3) 不能與 VB保留關(guān)鍵字重名,如 public, private, dim, goto, next, with, integer, single等
運(yùn)算符: 定義:運(yùn)算符是代表 VB某種運(yùn)算功能的符號(hào). 1)賦值運(yùn)算符 = 2)數(shù)學(xué)運(yùn)算符 &, + (字符連接符 ), +(加),-(減), Mod(取余), (整除),*(乘),/(除),-(負(fù)號(hào)),^(指數(shù)) 3)邏輯運(yùn)算符 Not(非), And(與), Or(或), Xor(異或), Eqv(相等), Imp(隱含) 4)關(guān)系運(yùn)算符 = (相同), <>(不等),>(大于),>=(不小于), B And C250 Then x=x-100 或者,可以使用塊形式的語(yǔ)法: If condition Then [statements] [ElseIf condition-n Then [elseifstatements] ... [Else [elsestatements]] End If 如 1: If Number < 10 Then Digits = 1 ElseIf Number 0 then Gosub Routine1 :Debug.print num:Exit sub Routine1: Num=num/5 Return End sub 4) while…wend語(yǔ)句,只要條件為TRUE,循環(huán)就執(zhí)行,這是以前 VB老語(yǔ)法保留下來(lái)的,如下例: while condition 'while I<50 [statements] 'I=I+1 wend 'Wend 二.錯(cuò)誤語(yǔ)句處理 執(zhí)行階段有時(shí)會(huì)有錯(cuò)誤的情況發(fā)生,利用On Error語(yǔ)句來(lái)處理錯(cuò)誤,啟動(dòng)一個(gè)錯(cuò)誤的處理程序.語(yǔ)法如下: On Error Goto Line '當(dāng)錯(cuò)誤發(fā)生時(shí),會(huì)立刻轉(zhuǎn)移到line行去 On Error Resume Next '當(dāng)錯(cuò)誤發(fā)生時(shí),會(huì)立刻轉(zhuǎn)移到發(fā)生錯(cuò)誤的下一行去 On Erro Goto 0 '當(dāng)錯(cuò)誤發(fā)生時(shí),會(huì)立刻停止過(guò)程中任何錯(cuò)誤處理過(guò)程
過(guò)程和函數(shù): 過(guò)程是構(gòu)成程序的一個(gè)模塊,往往用來(lái)完成一個(gè)相對(duì)獨(dú)立的功能.過(guò)程可以使程序更清晰,更具結(jié)構(gòu)性.VBA具有四種過(guò)程:Sub 過(guò)程, Function函數(shù), Property屬性過(guò)程和 Event事件過(guò)程. 一.Sub過(guò)程 Sub 過(guò)程的參數(shù)有兩種傳遞方式:按值傳遞(ByVal)和按地址傳遞 (ByRef).如下例: Sub password (ByVal x as integer, ByRef y as integer) If y=100 then y=x+y else y=x-y x=x+100 End sub Sub call_password () Dim x1 as integer Dim y1 as integer x1=12 y1=100 Call password (x1,y1) '調(diào)用過(guò)程方式:1. Call 過(guò)程名 (參數(shù) 1, 參數(shù) 2…) ; 2. 過(guò)程名 參數(shù) 1, 參數(shù) 2… debug.print x1,y1 '結(jié)果是12, 112, y1按地址傳遞改變了值,而 x1按值傳遞,未改變?cè)?/span> End sub 二. Function函數(shù) 函數(shù)實(shí)際是實(shí)現(xiàn)一種映射,它通過(guò)一定的映射規(guī)則,完成運(yùn)算并返回結(jié)果.參數(shù)傳遞也兩種:按值傳遞(ByVal)和按地址傳遞 (ByRef).如下例: Function password(ByVal x as integer, byref y as integer) as boolean If y=100 then y=x+y else y=x-y x=x+100 if y=150 then password=true else password=false End Function Sub call_password () Dim x1 as integer Dim y1 as integer x1=12 y1=100 if password then '調(diào)用函數(shù): 1. 作為一個(gè)表達(dá)式放在=右端 ; 2. 作為參數(shù)使用 debug.print x1 end if End sub 三. Property屬性過(guò)程和 Event事件過(guò)程 這是 VB在對(duì)象功能上添加的兩個(gè)過(guò)程,與對(duì)象特征密切相關(guān),也是 VBA比較重要組成,技術(shù)比較復(fù)雜,可以參考相關(guān)書籍.
內(nèi)部函數(shù): 在 VBA程序語(yǔ)言中有許多內(nèi)置函數(shù),可以幫助程序代碼設(shè)計(jì)和減少代碼的編寫工作. 一.測(cè)試函數(shù) IsNumeric(x) '是否為數(shù)字 , 返回 Boolean結(jié)果,True or False IsDate(x) ' 是否是日期 , 返回 Boolean結(jié)果,True or False IsEmpty(x) '是否為 Empty, 返回 Boolean結(jié)果,True or False IsArray(x) '指出變量是否為一個(gè)數(shù)組. IsError(expression) '指出表達(dá)式是否為一個(gè)錯(cuò)誤值 IsNu ll(expression) '指出表達(dá)式是否不包含任何有效數(shù)據(jù) (Null). IsObject(identifier) '指出標(biāo)識(shí)符是否表示對(duì)象變量 二.數(shù)學(xué)函數(shù) Sin(X), Cos(X), Tan(X), Atan(x) 三角函數(shù),單位為弧度 Log(x) 返回x的自然對(duì)數(shù) Exp(x)返回 ex Abs(x) 返回絕對(duì)值 Int(number),Fix(number) 都返回參數(shù)的整數(shù)部分,區(qū)別: Int 將 -8.4 轉(zhuǎn)換成 -9,而 Fix 將-8.4 轉(zhuǎn)換成 -8 Sgn(number) 返回一個(gè) Variant (Integer),指出參數(shù)的正負(fù)號(hào) Sqr(number) 返回一個(gè) Double,指定參數(shù)的平方根 VarType(varname) 返回一個(gè) Integer,指出變量的子類型 Rnd(x)返回 0-1之間的單精度數(shù)據(jù),x為隨機(jī)種子 三.字符串函數(shù) Trim (string) 去掉 string左右兩端空白 Ltrim( string) 去掉 string左端空白 Rtrim( string) 去掉 string右端空白 Len(string) 計(jì)算 string長(zhǎng)度 Left(string, x) 取 string左段x個(gè)字符組成的字符串 Right(string, x) 取 string右段x個(gè)字符組成的字符串 Mid(string, start,x) 取 string從 start位開始的x個(gè)字符組成的字符串 Ucase(string) 轉(zhuǎn)換為大寫 Lcase(string) 轉(zhuǎn)換為小寫 Space(x) 返回x個(gè)空白的字符串 As c(string) 返回一個(gè) integer,代表字符串中首字母的字符代碼 Chr(charcode) 返回 string,其中包含有與指定的字符代碼相關(guān)的字符 四.轉(zhuǎn)換函數(shù) CBool(expression) 轉(zhuǎn)換為 Boolean型 CByte(expression) 轉(zhuǎn)換為 Byte型 CCur(expression) 轉(zhuǎn)換為 Currency型 CDate(expression) 轉(zhuǎn)換為 Date型 CDbl(expression) 轉(zhuǎn)換為Double型 CDec(expression) 轉(zhuǎn)換為 Decemal型 CInt(expression) 轉(zhuǎn)換為 Integer型 CLng(expression) 轉(zhuǎn)換為 Long型 CSng(expression) 轉(zhuǎn)換為 Single型 CStr(expression) 轉(zhuǎn)換為 String型 CVar(expression) 轉(zhuǎn)換為 Variant型 Va l(string) 轉(zhuǎn)換為數(shù)據(jù)型 Str(num ber) 轉(zhuǎn)換為String 五.時(shí)間函數(shù) Now 返回一個(gè) Variant (Date),根據(jù)計(jì)算機(jī)系統(tǒng)設(shè)置的日期和時(shí)間來(lái)指定日期和時(shí)間. Date 返回包含系統(tǒng)日期的 Variant (Date). Time 返回一個(gè)指明當(dāng)前系統(tǒng)時(shí)間的 Variant (Date). Timer返回一個(gè)Single, 代表從午夜開始到現(xiàn)在經(jīng)過(guò)的秒數(shù). TimeSerial(hour, minute, second) 返回一個(gè) Variant (Date),包含具有具體時(shí),分,秒的時(shí)間. DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]]) 返回 Variant (Long) 的值,表示兩個(gè)指定 日期間的時(shí)間間隔數(shù)目 Second(time) 返回一個(gè) Variant (Integer),其值為 0 到 59 之間的整數(shù),表示一分鐘之中的某個(gè)秒 Minute(time) 返回一個(gè) Variant (Integer),其值為 0 到 59 之間的整數(shù),表示一小時(shí)中的某分鐘 Hour(time) 返回一個(gè) Variant (Integer),其值為 0 到 23 之間的整數(shù),表示一天之中的某一鐘點(diǎn) Day(date) 返回一個(gè) Variant (Integer),其值為 1 到 31 之間的整數(shù),表示一個(gè)月中的某一日 Month(date) 返回一個(gè) Variant (Integer),其值為 1 到 12 之間的整數(shù),表示一年中的某月 Year(date) 返回 Variant (Integer),包含表示年份的整數(shù). Weekday(date, [firstdayofweek]) 返回一個(gè) Variant (Integer),包含一個(gè)整數(shù),代表某個(gè)日期是星期幾.
|