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
 
