VBA 运算符
运算符用于多个数据进行运算,构成表达式,会返回相应类型的值。
例如: 1 + 2 ,其中1与2是操作数,+是运算符, 1+2是表达式,返回值为整型3。
VBA的运算符类别主要包括:
算术运算符
关系运算符
逻辑运算符
字符串连接运算符。
1 算术运算符
算术运算符用于两数的加减乘除等数学运算,返回类型为数值。
例:a=7,b=3
运算符 | 作用 | 示例 |
---|---|---|
+ | 和 | a+b=10 |
- | 差 | a-b=4 |
* | 积 | a*b=21 |
/ | 商 | a/b=2.33333333333333 |
\ | 商的整数部分 | a\b=2 |
mod | 余 | a mod b=1 |
^ | 幂 | a^b=343 |
示例如下。
Sub operator1()
' 算术运算符
Dim a As Integer
Dim b As Integer
a = 7
b = 3
Debug.Print "a:" & a; ",b:" & b '输出a:7,b:3
'求和
Debug.Print "a+b:" & (a + b) '输出 a+b:10
'求差
Debug.Print "a-b:" & (a - b) '输出 a-b:4
'求积
Debug.Print "a*b:" & (a * b) '输出 a*b:21
'求商
Debug.Print "a/b:" & (a / b) '输出 a/b:2.33333333333333
'求商的整数部分
Debug.Print "a\b:" & (a \ b) '输出 a\b:2
'求余
Debug.Print "a mod b:" & (a Mod b) '输出 a mod b:1
'求幂
Debug.Print "a^b:" & (a ^ b) '输出 a^b:343
End Sub
2 关系运算符
关系运算符又称比较运算符。
关系运算符用于比较两个数据的大小、判断是否相等,返回值为Boolean类型:True或False。
例:a=7,b=3,则a>b成立返回True,a<b不成立返回False。
运算符 | 作用 | 示例 |
---|---|---|
= | 判断是否相等 | a=b 结果为 False |
> | 判断是否大于 | a>b 结果为 True |
>= | 判断是否大于等于 | a>=b 结果为 True |
< | 判断是否小于 | a<b 结果为 False |
<= | 判断是否小于等于 | a<=b 结果为 False |
<> | 判断是否不等于 | a<>b 结果为 True |
示例代码如下:
Sub operator2()
Dim a, b As Integer
a = 7
b = 3
Debug.Print "a:" & a; ",b:" & b '输出a:7,b:3
Debug.Print "a=b:" & (a = b) '输出 a=b:False
Debug.Print "a>b:" & (a > b) '输出 a>b:True
Debug.Print "a>=b:" & (a >= b) '输出 a>=b:True
Debug.Print "a<b:" & (a < b) '输出 a<b:False
Debug.Print "a<=b:" & (a <= b) '输出 a<=b:False
Debug.Print "a<>b:" & (a <> b) '输出 a<>b:True
End Sub
3 逻辑运算符
逻辑运算符的操作数为Boolean类型:True、False,返回结果也为Boolean类型。
例:a=True , b=False。
运算符 | 作用 | 运算规则 | 示例 |
---|---|---|---|
And | 逻辑与 | A And B A、B都为True返回True, 其它情况返回False。 | a And b:False |
Or | 逻辑或 | A Or B A、B之一为True返回True, 也就是,两者都为False才返回False。 | a Or b:True |
Not | 逻辑取反 | Not A A为True则返回False, A为False则返回True。 | not a:False |
Eqv | 判断逻辑相等 | A Eqv B A与B相同返回True,其它情况返回False。 | a Eqv b:False |
Xor | 逻辑异或 | A Xor B A与B不相同返回False,其它情况返回True。 | a XOr b:True |
逻辑运算各种情况结果总结如下
A | T | T | F | F |
---|---|---|---|---|
B | T | F | T | F |
A And B结果 | T | F | F | F |
A Or B结果 | T | T | T | F |
Not A结果 | F | T | ||
Eqv | T | F | F | T |
Xor | F | T | T | F |
示例代码如下:
'逻辑运算符
Sub operator3()
Dim a As Boolean
Dim b As Boolean
a = True
b = False
Debug.Print "a:" & a & ",b:" & b '输出 a:True,b:False
'And与运算
Debug.Print "a And b:" & (a And b) '输出 a And b:False
'Or或运算
Debug.Print "a Or b:" & (a Or b) '输出 a Or b:True
'Not取反
Debug.Print "not a:" & (Not a) '输出 not a:False
'Eqv逻辑相等
Debug.Print "a Eqv b:" & (a Eqv b) '输出 a Eqv b:False
'XOr异或运算
Debug.Print "a XOr b:" & (a Xor b) '输出 a XOr b:True
End Sub
4 字符串连接
字符串连接有两个运算符:+、&。
推荐使用&进行字符串连接。
运算符 | 作用 | 运算规则 | 示例 |
---|---|---|---|
+ | 不一定是字符串连接 | 字符串+字符串:表示字符串连接。 数值+字符串:求和,先把字符串转化为数值,不能转换则会报错。 |
"ab"+"cd":"abcd" "2023"+1:2024 "ab"+1:报错 |
& | 总是字符串连接 | 字符串+字符串:字符串连接。 数值+字符串:字符串连接。 如果有操作数不是字符串,则会把操作数转化为字符串。 |
"ab" & 1: "ab1" |
示例代码如下。
Sub operator4()
Debug.Print "ab" + "cd" '输出 abcd
Debug.Print "2023" + "1" '输出 20231
Debug.Print "2023" + 1 '输出 2024
'Debug.Print "ab" + 1 '报错:类型不匹配,即字符串ab无法转为数值
Debug.Print "ab" & 1 '输出 ab1
End Sub