一、定義
標(biāo)識符是一種標(biāo)識變量、常量、過程、函數(shù)、類等語言構(gòu)成單位的符號,利用它可以完成對變量、常量、過程、函數(shù)、類等引用。
二、命名規(guī)則
(1)字母打頭,由字母、數(shù)字和下劃線組成,如?A987b_23Abc
?
(2)字符長度小于40,(Excel2002以上中文版本等,可以用漢字且長度可達(dá)254個字符)
(3)不能與VB保留字重名,如?public
?,?private
?,?dim
?,?goto
?,?next
?,?with
?,?integer
?,?single
?等
=
?
&
?(強(qiáng)制字符連接)、?+
? (運(yùn)算符兩邊都是字符時連接字符)、?+
?(運(yùn)算符兩邊都是數(shù)字時為加法運(yùn)算符)、?-
?(減)、?Mod
?(取余)、?\
?(整除)、?*
?(乘)、?/
?(除)、?-
?(負(fù)號)、?^
?(指數(shù))Not
?(非)、?And
?(與)、?Or
?(或)、?Xor
?(異或)、?Eqv
?(相等)、?Imp
?(隱含)=
?(相同)、?<>
?(不等)、?>
?(大于)、?<
?(小于)、?>=
?(不小于)、?<=
?(不大于)、?Like
?(判斷給定的字符串是否與指定的模式相匹配)、?Is
?(判斷該數(shù)據(jù)是數(shù)字還是是字符)Not
?(邏輯非)、?And
?(邏輯與)、?Or
?(邏輯或)、?Xor
?(邏輯異或)、?Eqv
?(邏輯等)、?Imp
?(蘊(yùn)含)
VBA共有12種數(shù)據(jù)類型,具體見下表,此外用戶還可以根據(jù)以下類型用Type自定義數(shù)據(jù)類型。
數(shù)據(jù)類型
|
類型標(biāo)識符 | 字節(jié) |
字符串型 String | $ | 字符長度(0-65400) |
字節(jié)型 Byte | 無 | 1 |
布爾型 Boolean | 無 | 2 |
整數(shù)型 Integer | % | 2 |
長整數(shù)型 Long | & | 4 |
單精度型 Single | ! | 4 |
雙精度型 Double | # | 8 |
日期型 Date | 無 | 8 (范圍為公元100/1/1-99/12/31) |
貨幣型 Currency | @ | 8 |
小數(shù)點(diǎn)型 Decimal | 無 | 14 |
變體型 Variant | 無 | 以上任意類型,可變 |
對象型 Object | 無 | 4 |
(3)變量定義語句及變量作用域
Dim 數(shù)組名([lower to ]upper [, [lower to ]upper, ….]) as type ;
?Lower缺省值為0。二維數(shù)組是按行列排列,如XYZ(行,列)。Dim array1() as double : Redim array1(5) : array1(3)=250 : Redim preserve array1(5,10)
?If condition Then [statements][Else elsestatements]
?If A>B And C<D Then A=B+2 Else A=C+2
?
If x>250 Then x=x-100
?If condition Then
[statements]
[ElseIf condition-n Then
[elseifstatements] ...
[Els]
[elsestatements]]
End If
If Number < 10 Then
Digits = 1
ElseIf Number < 100 Then
Digits = 2
Else
Digits = 3
End If
Select Case Pid
Case “A101”
Price=200
Case “A102”
Price=300
……
Case Else
Price=900
End Select
(3)Choose 函數(shù)
?choose(index, choice-1,choice-2,…,choice-n)
?
可以用來選擇自變量串列中的一個值,并將其返回,index 必要參數(shù),數(shù)值表達(dá)式或字段,它的運(yùn)算結(jié)果是一個數(shù)值,且界于 1 和可選擇的項(xiàng)目數(shù)之間。choice 必要參數(shù),Variant表達(dá)式,包含可選擇項(xiàng)目的其中之一。如:?GetChoice = Choose(Ind, "Speedy", "United", "Federal")
?
(4)Switch函數(shù)
?Switch(expr-1, value-1[, expr-2, value-2 _ [, expr-n,value-n]])
?
switch 函數(shù)和 Choose 函數(shù)類似,但它是以兩個一組的方式返回所要的值,在串列中,最先為
TRUE 的值會被返回。 expr 必要參數(shù),要加以計(jì)算的 Variant 表達(dá)式。value 必要參數(shù)。如果相關(guān)的表達(dá)式為 True,則返回此部分的數(shù)值或表達(dá)式,沒有一個表達(dá)式為 True,Switch 會返回一個 Null值。
For counter = start To end [Step step] 'step 缺省值為1
[statements]
[Exit For]
[statements]
Next [counter]
For Words = 10 To 1 Step -1 '建立 10 次循環(huán)
For Chars = 0 To 9 '建立 10 次循環(huán)
MyString = MyString & Chars '將數(shù)字添加到字符串中
Next Chars 'Increment counter
MyString = MyString & " " '添加一個空格
Next Words
For Each element In group
Statements
[Exit for]
Statements
Next [element]
For Each rang2 In range1
With range2.interior
.colorindex=6
.pattern=xlSolid
End with
Next
With object
[statements]
End With
Do {while |until} condition' while 為當(dāng)型循環(huán),until為直到型循環(huán),顧名思義,不多說啦
Statements
Exit do
Statements
Loop
Do ' 先do 再判斷,即不論如何先干一次再說
Statements
Exit do
Statements
Loop {while |until} condition
Sub gosubtry()
Dim num
Num=inputbox(“輸入一個數(shù)字,此值將會被判斷循環(huán)”)
If num>0 then Gosub Routine1 :Debug.print num:Exit sub
Routine1:
Num=num/5
Return
End sub
while condition ‘while I<50
[statements] ‘I=I+1
wend ‘Wend
On Error Goto Line ‘當(dāng)錯誤發(fā)生時,會立刻轉(zhuǎn)移到line行去
On Error Resume Next ‘當(dāng)錯誤發(fā)生時,會立刻轉(zhuǎn)移到發(fā)生錯誤的下一行去
On Erro Goto 0 ‘當(dāng)錯誤發(fā)生時,會立刻停止過程中任何錯誤處理過程
Sub password(x As Integer, ByRef y As Integer)
If y = 100 Then
y = x + y
Else
y = x - y
End If
x = x + 100
End Sub
Sub call_password()
Dim x1 As Integer
Dim y1 As Integer
x1 = 12
y1 = 100
Call password(x1, y1) ' 或直接寫成 password x1, y1
Debug.Print x1, y1 ' 結(jié)果應(yīng)該是112、212,因?yàn)閤1是按值傳遞,y1是按引用傳遞
End Sub
Function password(ByVal x As Integer, ByRef y As Integer) As Boolean
If y = 100 Then
y = x + y
Else
y = x - y
End If
x = x + 100
If y = 150 Then
password = True
Else
password = False
End If
End Function
Sub call_password()
Dim x1 As Integer
Dim y1 As Integer
x1 = 12
y1 = 100
If password(x1, y1) Then
Debug.Print x1
End If
End Sub
一.測試函數(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) ‘指出變量是否為一個數(shù)組。
IsError(expression) ‘指出表達(dá)式是否為一個錯誤值
IsNull(expression) ‘指出表達(dá)式是否不包含任何有效數(shù)據(jù) (Null)。
IsObject(identifier) ‘指出標(biāo)識符是否表示對象變量
刪除
Kill pathname 從磁盤中刪除文件, pathname 參數(shù)是用來指定一個文件名
RmDir pathname 從磁盤中刪除目錄,pathname 參數(shù)是用來指定一個文件夾
打開
filenumber 必要。一個有效的文件號,范圍在 1 到 511 之間。使用 FreeFile 函數(shù)可得到下一個可用的文件號。 reclength 可選。小于或等于 32,767(字節(jié))的一個數(shù)。對于用隨機(jī)訪問方式打開的文件,該值就是記錄長度。對于順序文件,該值就是緩沖字符數(shù)。
寫入
Write #filenumber, [outputlist] 將數(shù)據(jù)寫入順序文件
Print #filenumber, [outputlist] 將格式化顯示的數(shù)據(jù)寫入順序文件中
Put [#]filenumber, [recnumber], varname 將一個變量的數(shù)據(jù)寫入磁盤文件中。
關(guān)閉
Close [filenumberlist] 關(guān)閉 Open 語句所打開的輸入/輸出 (I/O) 文件
注意 如果今后想用 Input # 語句讀出文件的數(shù)據(jù),就要用 Write # 語句而不用 Print # 語句將數(shù)據(jù)寫入文件。因?yàn)樵谑褂?Write# 時,將數(shù)據(jù)域分界就可確保每個數(shù)據(jù)域的完整性,因此可用 Input# 再將數(shù)據(jù)讀出來。使用 Write# 還能確保任何地區(qū)的數(shù)據(jù)都被正確讀出。Write與 Print # 語句不同,當(dāng)要將數(shù)據(jù)寫入文件時,Write # 語句會在項(xiàng)目和用來標(biāo)記字符串的引號之間插入逗號。Write # 語句在將 outputlist 中的最后一個字符寫入文件后會插入一個新行字符,即回車換行符,(Chr(13)
+ Chr(10))。
更多建議: