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