VBA學習-數(shù)組、過程與函數(shù)

數(shù)組聲明
一維數(shù)組
Dim/Static/Private/Public<數(shù)組名>([索引下界]To]索引上界)As<數(shù)據(jù)類型>
二維數(shù)組
Dim/Static/Private/Public<數(shù)組名>(行數(shù),列數(shù))As<數(shù)據(jù)類型>
設置默認下界值
Option Base 0|1
查看數(shù)組的索引上界和下界值
下界值:LBound(數(shù)組名[,返回哪個維數(shù)的下界值])
上界值:UBound(數(shù)組名[,返回哪個維數(shù)的上界值])
數(shù)組賦值
使用循環(huán)語句初始化數(shù)組
FOR<循環(huán)變量>=索引下界To索引上界
<數(shù)組元素>=<初始值>
Next循環(huán)變量
Array()函數(shù)初始化數(shù)組
Array(以英文逗號隔開的數(shù)據(jù)序列表)
使用數(shù)組值初始化數(shù)組
動態(tài)數(shù)組
聲明動態(tài)數(shù)組
Dim<數(shù)組名>()As<數(shù)據(jù)類型>
ReDim函數(shù)隱式數(shù)組聲明
ReDim<數(shù)組名>([索引下界]To索引上界)
每次使用ReDim后數(shù)組中的值會丟失,若要保留原有值,可使用ReDim Preserve語句擴充數(shù)組
數(shù)組清除和重定義
Erase 數(shù)組變量

檢測變量是否為數(shù)組
IsArray(變量名)
For Each數(shù)組的控件變量必須為變體
不能直接給整個數(shù)組賦值
數(shù)組中不能放置監(jiān)視斷點
過程創(chuàng)建
Sub過程
在調用子過程時,將采用按參數(shù)值(ByVal)和按地址傳遞(ByRef)兩種方式
定義Sub過程
利用錄制宏來創(chuàng)建
使用代碼創(chuàng)建
[Private|Public|Friend][Static]Sub 過程名 [(要傳遞的參數(shù)變量列表)]
[過程語句]
[Exit Sub]
[過程語句]
End Sub
參數(shù)變量列表格式:
[Option][ByVal|ByRef][ParamArray]參數(shù)名[()][As type][=defaultvalue]
Function 函數(shù)
參數(shù)傳遞可采用按參數(shù)值(ByVal)和按地址傳遞(ByRef)兩種方式
[Private|Public|Friend][Static]Function 函數(shù)名?[(要傳遞的參數(shù)變量列表)]
[函數(shù)語句]
[函數(shù)名=表達式]
[Exit Function]
[函數(shù)語句]
End Function
過程調用
Call語句調用子過程
Call 過程名[參數(shù)列表]
直接調用
過程名 參數(shù)列表
調用自定義函數(shù)
變量=函數(shù)名(參數(shù)列表)
過程調試
控制過程執(zhí)行工具
VBE開發(fā)環(huán)境:運行菜單、調試菜單
運行:運行子過程/用戶窗體
中斷:Ctrl+Break
重新
控制程序執(zhí)行間隔的功能
逐語句【F8】
逐過程【Shift+F8】
跳出【Ctrl+Shift+F8】
運行到光標處【Ctrl+F8】
監(jiān)視
添加監(jiān)視
編輯監(jiān)視【Ctrl+W】
快速監(jiān)視【Shift+F9】
切換斷點【F9】
清除所有斷點【Ctrl+Shift+F9】
調試方法
程序侵入式調試
Print過程 以Debug.Print輸入立即窗口
Assert過程 以Debug.Asset 條件表達式(表達式為假時彈出警告)
變量監(jiān)視
調試技巧
查看幫助文檔
每個程序位置都要檢查
懷疑代碼錯誤
不做無根據(jù)判斷
良好的編碼風格
Property屬性過程和Event事件過程
是VBA在對象功能上添加的連個過程
函數(shù)和子過程的區(qū)別
函數(shù)具有一個特定的返回值
子過程沒有返回值
子過程用Sub關鍵字聲明,函數(shù)用Function 關鍵字聲明
常用字符串函數(shù)
Len(字符串/變量名)? ?返回字符數(shù)
LenB(字符串/變量名)? ?返回字節(jié)數(shù)
Left(字符串,長度)? ?返回指定字符串中從左邊算起指定數(shù)量的字符
Mid(字符串,開始,[長度])? ?返回指定字符串從指定位置向右指定個數(shù)字符
Right(字符串,長度)? ?返回指定字符串中從右邊算起指定數(shù)量的字符
String(返回字符長度,字符碼或字符串表達式)? ?生成多個重復字符
Replace(字符串表達式要替換的子字符串,要搜索的子字符串,用來替換的子字符串[,開始搜索位置[,替換次數(shù)[,判別比較方式]]])? ?替換字符串
StrConv(字符串表達式,轉換類型,LCID)? ?轉換字符串類型

LCase(字符串)? ?轉換成小寫
UCase(字符串)? ?轉換成大寫
StrComp(字符串1,字符串2[,比較方式])? ?比較兩個字符串是否相等


日期函數(shù)
Now()? ?返回計算機系統(tǒng)的當前日期和時間
Date()? ?返回計算機系統(tǒng)的當前日期
Time()? ?返回計算機系統(tǒng)的當前時間
Year(日期參數(shù))、Month(日期參數(shù))、Day(日期參數(shù))? ?返回日期參數(shù)的年、月、日
Hour(時間參數(shù))、Minute(時間參數(shù))、Second(時間參數(shù))? ?返回時間參數(shù)的小時、分鐘、秒數(shù)
Weekday(日期,[指定星期類型默認以周日為第一天])? ?返回日期參數(shù)的星期值
WeekdayName(日期,星期名稱是否被縮寫B(tài)oolean值,指定星期類型默認以周日為第一天)
日期計算
DateAdd(字符串表達式,時間間隔,日期字符串或字符串表達式)? ?一段時間后的日期或時間
DateDiff(字符串表達式兩個日期時間間隔,第一個日期,第二個日期[,指定一個星期的第一天默認周日[,指定一年的第一周]])? ?計算兩個日期間的間隔
DatePart(返回的日期單位,日期[,一周的第一天[,指定一年的第一周]])? ?獲取指定日期在指定年的第幾天、周和月


FormatDateTime(日期[,日期/時間所使用的格式])? ?將日期數(shù)字轉換成日期或時間格式表達式

清除字符串空格
LTrim(字符串或字符串變量)? ?清除前導空格
RTrim(字符串或字符串變量)? ?清除末尾空格
Trim(字符串或字符串變量)? ?清除字符串中的空格
字符與ASCII碼轉換
Asc(字符串參數(shù))? ?將字符串第一個字符轉換成ASCII碼
Chr(ASCII碼)? ?將ASCII碼轉換成對應字符
相關代碼說明和實例可查詢VBA開發(fā)文檔 以上內容是本人自學筆記總結,歡迎指正,有關Excel的問題,可私信聯(lián)系,互相交流討論,共同進步,謝謝。部分內容和數(shù)據(jù)來自互聯(lián)網(wǎng),如有疑問,歡迎聯(lián)系。