VBA
一、數據類型與變量
-
常用數據類型:
- Byte:字節型,0~255。
- Integer:整數型,用于存儲整數值,范圍 -32768 到 32767。
- Long:長整型,可存儲更大范圍的整數,范圍 -2147483648 到 2147483647。
- Double:雙精度浮點數,用于表示帶有小數的數值,精度較高。
- String:字符串型,存儲文本信息,用雙引號括起來,如 “Hello World”。
- Boolean:布爾型,只有 True 和 False 兩個值,常用于條件判斷。
- Variant: 任意類型
-
變量聲明:
- 使用
Dim
關鍵字,如Dim num As Integer
,聲明一個名為 num 的整數型變量。也可以在一行聲明多個變量,如Dim a As String, b As Double
。
- 使用
二、控制語句與運算符
- 運算符與Java類似,只有幾個特殊的
算數運算符
2^3 2的3次方' 求商整數
5\2 = 2'相除取余Mod
12 Mod 9 = 3比較運算符
'比較兩個對象是否相同
對象1 Is 對象2 'Like 比較兩個字符串是否匹配
' 通配符
* 任意多個字符
? 任意單個字符
# 任意單個數組[charlist] 位于charlist的任意一個字符
[!charlist]文本運算符
+ 拼接字符串
& 合并字符串邏輯運算符
And Or Not Xor 異或
Eqv 等價
Imp 蘊含
執行順序
算數 比較 邏輯
- If 語句
If 條件 Then如果是
Else否則
End If ` 結束
- For循環
For i = start To end` 循環部分
Next i
- Select Case
Select Case 值 Case is 條件1Case is 條件2...Case Else ` 以上沒有匹配End Select
- 遍歷集合
For Each 變量 in 集合名稱Next 變量
- DoWhile循環
Do While 循環條件' 跳出循環
exit doLoop
DoLoop While 循環條件
三、子程序和函數
- 子程序(Sub)
定義與作用:子程序是一段完成特定任務的代碼塊,不返回值。通常用于執行一系列操作。
Sub 子程序名稱([參數列表])End Sub
- 函數(Function)
定義與作用:函數用于執行特定計算并返回一個值。可以在公式、條件判斷等地方調用函數。
Function 函數名稱([參數列表]) As 返回值類型函數名稱 = 返回值
End Function
- 內置函數
函數名稱 | 功能描述 |
---|---|
IsNumeric | 判斷參數中數據是否為數字 |
IsDate | 判斷參數中數據是否為日期 |
IsEmpty | 判斷參數中數據是否為 Empty(空) |
IsArray | 判斷參數是否為數組 |
IsError | 判斷參數是否為錯誤值 |
IsNull | 判斷參數是否不包含任何有效數據 |
IsObject | 判斷參數是否為一個對象 |
Int | 返回小于或等于參數的第一個整數 |
Fix | 返回參數的整數部分 |
Round | 返回四舍五入的值 |
Sqr | 返回數值的平方根 |
Abs | 返回數值的絕對值 |
Rnd | 生成 0 - 1 之間的隨機數 |
- 文本函數
函數名稱 | 功能描述 |
---|---|
Len | 求參數中數據包含的字符個數 |
Left 、Right 、Mid | 分別用于截取最左側、最右側、從任意位置開始的指定數量的字符 |
Ltrim 、Rtrim 、Trim | 分別用于去掉最左端、最右端、左右兩端多余的空格 |
Ucase 、Lcase | 分別將英文字母轉換為大寫、小寫 |
InStr | 查找指定字符串在另一個字符串中的位置 |
Replace | 將字符串中某個位置的部分字符串替換為新字符 |
Format | 對參數指定的數據進行格式化 |
- 時間日期函數
函數名稱 | 功能描述 |
---|---|
Now 、Date 、Time | 返回執行該函數時計算機的系統日期、時間數據 |
Timer | 返回從凌晨 0 時到執行該函數時經過的秒數 |
DateSerial | 返回參數指定年、月、日組成的日期數據 |
Year 、Month 、Day | 返回參數指定日期中的年、月、日信息 |
TimeSerial | 返回參數指定時、分、秒組成的時間數據 |
Hour 、Minute 、Second | 返回參數指定時間中的時、分、秒信息 |
Format | 將具有日期數據外觀的字符串轉為日期數據 |
DateValue | 將具有時間數據外觀的字符串轉為時間數據 |
DateDiff | 求兩個日期的間隔 |
- 數據轉換函數
函數名稱 | 功能描述 |
---|---|
Val | 將參數指定的數據轉為數值類型 |
CLng | |
CInt | |
CByte | |
CDbl | 將參數指定的數據轉為雙精度浮點型 |
CStr | 將參數指定的數據轉為字符串型 |
CDate | 將參數指定的數據轉為日期型 |
CBool | 將參數指定的數據轉為布爾型 |
CVar | 將參數指定的數據轉為 Variant 型 |
四、Excel 對象模型操作
- 工作簿(Workbook)
- 工作表(Worksheet)
- 新建一個工作表
workshets.add
- 獲取表的名稱
Sheets.Name
- 獲取表的數量
Sheets.Count
- 單元格(Range)
- 單元格賦值
Range(“A1”).Value = “值”
連續選擇的
“A1:B10” A1 -> B10 連續
不連續選擇
“A1,B10” A1 和 B10
- 根據行號列號引用單個單元格
sells(行,列)
' 行必須為數字,列可以是數字也可以是A
- 選擇行
rows(行號).select' 也可以連續使用
rows(3:10).rows(1) `表示第3到10的第一行
- 列
columns
- 選擇單元格的相對單元格
offset
Range("A1").Offset(5,0) `表示從A1開始向下移動5,向右移動1
' 負數表示反向
- 獲得行或列的最后單元格
End(xlUp)
`可選值:xlToLeft、xlToRight、xlUp、xlDown
- 單元格格式
將單元格區域存儲到變量中
Set
例如:set title = range("B2;G2")合并單元格
title.Merge水平居中
HorizontalAlignment = xlCenter字體大小
Font.Size = 12字體顏色
Font.ColorIndex = 1字體加粗
Font.Bold = true單元格內部
Range.Interior單元格背景顏色
Interior.ColorIndex邊框
Borders.LineStyle = true