如何零基础学习VBA——运算符介绍
VBA运算符是用于执行数学和逻辑操作的符号或关键字。以下是常见的几种VBA运算符:
数学运算符:包括加法运算符( ),减法运算符(-),乘法运算符(*),除法运算符(/)和模数(Mod)运算符。比较运算符:例如相等运算符(=),不等运算符(<>),大于运算符(>),小于运算符(<),大于等于运算符(>=)和小于等于运算符(<=)。逻辑运算符:用于在条件语句中进行逻辑运算。例如AND运算符,OR运算符,NOT运算符等。字符串运算符:用于连接两个字符串。例如“&”运算符或者使用“ ”运算符。
需要注意的是,在 VBA 中,“=”运算符表示赋值操作而非相等操作。相等的判断需要使用“==”或者使用“is”关键字。
VBA中的运算符主要分为以下几种:
1、算术运算符:用于进行数学运算。示例代码:
Dim a As Integer
Dim b As Integer
a = 5
b = 3
MsgBox a b '加法
MsgBox a - b '减法
MsgBox a * b '乘法
MsgBox a / b '除法
MsgBox a Mod b '取模,即求余数
2、比较运算符:用于比较两个值是否相等或大小关系。示例代码:
Dim a As Integer
Dim b As Integer
a = 5
b = 3
MsgBox a = b '相等
MsgBox a <> b '不相等
MsgBox a > b '大于
MsgBox a < b '小于
MsgBox a >= b '大于等于
MsgBox a <= b '小于等于
3、逻辑运算符:用于组合多个条件,得到一个整体条件。示例代码:
Dim a As Integer
Dim b As Integer
a = 5
b = 3
MsgBox (a > b) And (a < 10) 'And运算,表示两个条件同时成立
MsgBox (a > b) Or (a < 3) 'Or运算,表示两个条件之一成立
MsgBox Not (a < b) 'Not运算,表示取反
4、字符串运算符:用于操作字符串。示例代码:
Dim str1 As String
Dim str2 As String
str1 = "Hello, "
str2 = "world!"
MsgBox str1 & str2 '字符串连接,使用&符号
MsgBox Len(str1) '字符串长度,使用Len函数
MsgBox Left(str1, 5) '从左边截取指定长度的子字符串,使用Left函数
MsgBox Right(str2, 3) '从右边截取指定长度的子字符串,使用Right函数
MsgBox InStr(str1, "o") '查找子字符串在主字符串中的位置,使用InStr函数
5、其他运算符:如赋值运算符、条件运算符(三目运算符)、地址运算符等。示例代码:
Dim a As Integer
Dim b As Integer
a = 5
b = IIf(a > 3, a, 3) '条件运算符,表示if-else关系,在VBA中用IIf函数实现
MsgBox b
Dim ptr As LongPtr
ptr = ObjPtr(Range("A1")) '地址运算符,表示获取变量的内存地址,ObjPtr表示对象的内存地址
MsgBox Hex(ptr) '将地址转换为16进制形式,按照系统位数长度来转换
在 VBA 中,表达式中发生多个操作时,将按预先确定的顺序(称为运算符优先级)来计算和解析各个部分。当表达式包含多个类别中的运算符时,将根据以下规则对其进行计算:
算术运算符和串联运算符具有以下部分中描述的优先级顺序,并且其优先级比比较、逻辑和按位运算符的优先级高。所有比较运算符都具有相同的优先级,并且其优先级比逻辑和位算符更高,但优先级低于算术运算符和串联运算符。逻辑运算符和位运算符具有以下部分中描述的优先级顺序,并且其优先级比算术、串联和比较运算符的优先级低。具有相同优先级的运算符将按照它们在表达式中出现的顺序从左到右进行计算。
简单来说,运算符的优先级如下:
括号 ( )指数运算符 ^(从右向左)乘、除、取模运算符 * / mod(从左向右)整除运算符 \(从左向右)加、减运算符 -(从左向右)字符串连接运算符 &(从左向右)比较运算符 = <> < > <= >=(从左向右)逻辑运算符 Not And Or Xor(从左向右)
举一些例子说明下:
(5 3) * 2 的结果是 16,因为括号具有最高的优先级,所以先计算括号内的内容。4 2 ^ 3 的结果是 12,因为指数运算符的优先级高于加法运算符,所以先计算 2^3。10 / 5 * 2 的结果是 4,因为乘法运算符和除法运算符的优先级相同,所以按照从左到右的顺序进行计算。16 \ 3 的结果是 5,因为整除运算符的优先级高于加法运算符,所以先对 16 \ 3 进行取整。"Hello, " & "world!" 的结果是 "Hello, world!",因为字符串连接运算符的优先级比加法运算符低,所以先按照从左到右的顺序进行字符串连接。5 3 < 9 And 2 * 3 = 6 的结果是 True,因为比较运算符和逻辑运算符的优先级相同,按照从左到右的顺序依次计算。
需要注意的是,如果存在多个运算符且具有相同的优先级,则 VBA 将按照从左到右的顺序进行计算。例如,4 2 * 3 的结果为 10,而不是 18,因为乘法运算符优先级高于加法运算符,但是这里先计算的是 2 * 3,再与 4 相加。
- 0000
- 0000
- 0000
- 0000
- 0000