1.1 運算符 邏輯/位運算符:not and or 關係運算符:like is 1.2 數據類型 字元串 string $ 位元組 byte 布爾 boolean 整數 integer % 長整數 long & 單精度 single ! 雙精度 double # 日期 date 貨幣 currenc ...
1.1 運算符
邏輯/位運算符:not and or
關係運算符:like is
1.2 數據類型
字元串 string $
位元組 byte
布爾 boolean
整數 integer %
長整數 long &
單精度 single !
雙精度 double #
日期 date
貨幣 currency @
小數點 decimal
變體 variant
對象 object
1.2 變數與常量
VBA允許使用未定義的變數,預設是變體變數。
在模塊通用說明部分,加入 option explicit 語句可以強迫用戶進行變數定義。
變數定義語句:
dim xyz as integer ‘局部變數
private xyz as byte ‘私有變數
public xyz as single ‘公有變數
global xyz as data ‘全局變數
static xyz as double ‘靜態變數
常量定義語句:程式中不能改變值
const Pi=3.1415926 as single
1.3 數組
dim array1() as double ‘定義動態數組
redim array1(5) ‘重新改變數組大小為5
array1(3)=250 ‘修改數組元素
redim preserve array1(5,10) ‘改變數組大小為二維數組,同時保留原來內容
1.4 註釋與賦值
註釋語句: 單引號 ’ 註釋內容
賦值語句:
X=123 ‘變數賦值
Set myobject=objece ‘對象賦值
Myobject:=object ‘對象賦值
1.5 書寫規範
VBA不區分大小寫
一行可寫多條語句,用冒號:隔開
一條語句可寫多行,用空格加下劃線 _表示下行為續行
1.6 判斷語句
If a>b and c>d then a=b+2 else c=c-5
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 case
1.7 迴圈語句
For words=10 to 1 step -1
For chars=0 to 9
Mystring=mystring&chars
Next chars
Mystring=mystring&” ”
Next words
For each range2 in range1
With range2.interior
.colorindex=6
.pattern=xlsolid
End with
next
1.8 錯誤語句處理
On error goto line ‘錯誤發生時,會立即轉移到line行去
On error goto 0 ‘錯誤發生時,立即停止過程中任何錯誤處理過程
1.9 過程和函數
Sub password (byval x as integer, byref y as integer) ‘byval按值傳遞 byref按地址傳遞
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) ‘調用password過程
Debug.print x1,y1 ‘x1按值傳遞未改變原值為12,y1按地址傳遞改變原值為112
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
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(x1,y1) then ‘調用函數,得到F/T作為if參數使用
Debug.print x1
End if
End sub
1.10內部函數
Isnumeric(x) ‘判斷是否為數字
Isdate(x)
Isempty(x) ‘是否為空值
Isnull(expression) ‘表達式是否不包含有效數據
Iserror(expression) ‘表達式是否為一個錯誤值
Sin(x) tan(x) ‘三角函數
Log(x) exp(x) ‘常規函數
Abs(x) sqr(x) rnd(x) ‘絕對值 平方根 隨機數(0-1之間單精度數據)
Int(x) fix(x) ‘返回參數的整數部分
Trim(string) ‘去掉字元左右兩端空白
Lreim(string) ‘去掉字元左端空白
Rtrim(string) ‘去掉字元右端空白
Len(string) ‘計算字元長度
Left(string,x) ‘取字元左端x個字元串
Right(string,x) ‘取字元右端x個字元串
Mid(string,start,x) ‘取字元中間從start位開始的x個字元串
Cbool(expression) ‘轉化為布爾
Cbyte(expression) ‘轉化為位元組
Ccur(expression) ‘轉化為貨幣
Cdate(expression) ‘轉化為日期
… ‘同理對待single double integer long string variant decimal
Val(string) ‘轉化為數據型
Str(number) ‘轉化為字元
Now() ‘現在日期
Date(year,month,day) ‘設置日期
Time(hour,minute,second) ‘設置時間
Timeserial(hour,minute,second) ‘包含具體時、分、秒的時間
Datediff(interval,date1,date2) ‘兩個指定日期間的時間間隔數目
Minute(time) ‘提取time中的某分鐘
Hour(time) ‘提取time中的某小時
Day(date) ‘提取date中的某日
Month(date) ‘提取date中的某月
Year(date) ‘提取date中的某年
Weekday(date) ‘換算date中的星期