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