vba快速入门06-运算符
文章目录
运算符
| 类型 | 说明 | 运算符 |
|---|---|---|
| 算术运算符 | 用于执行数学计算的运算符。 | *运算符 ^运算符 /运算符 \运算符 Mod运算符 +运算符 -运算符 |
| 比较运算符 | 用于执行比较的运算符。 | =运算符 Is运算符 Like运算符 |
| 串联运算符 | 用于组合字符串的运算符。 | &运算符 +运算符 |
| 逻辑运算符 | 用于执行逻辑运算的运算符。 | And运算符 Eqv运算符 Imp运算符 Not运算符 Or运算符 Xor运算符 |
算术运算符
| 运算符 | 含义 | 说明 | 例子 |
|---|---|---|---|
| + | 加 | 加法运算 | a = 1 + 2 结果a等于3 |
| - | 减 | 减法运算 | a = 1 - 2 结果a等于-1 |
| * | 乘 | 乘法运算 | a = 2 * 3 结果a等于6 |
| - | 取反 | 取反运算 | a = -2 结果a等于-2 |
| ^ | 幂 | 幂运算 | a = 2^3 相当于a = 2*2*2 结果a等于8 |
| / | 除 | 除法运算 | a = 10 / 3 结果a等于3.333333333 |
| \ | 整除 | 整除运算 | a = 10 / 3 结果a等于3 |
| Mod | 取模 | 取模运算(余数运算) | a = 10 Mod 3 结果a等于1 |
加减乘除幂和数学上的意义是一样的,不用多做介绍。着重介绍下取反,整除和取模运算。
取反运算符同减法运算符是一样的,都是-。区别是取反运算是一元运算符,也就是只能单独用于一个数字,不能用于两个以上的数字进行运算。你可以把取反运算符看作是负号就好。
\ 用于将两个数字相除并返回整数类型的结果。这两个数字进行整除之前,先进行四舍五入计算后再整除。
例1,整除
|
|
以上程序的运行结果如下:
|
|
Mod,取得两个数字相除后结果的余数。例如,
例2,Mod取模运算
|
|
算术运算符优先级
数学上我们都学过先乘除后加减,这个先后顺序就是优先级。算术运算符的优先级如下(由大到小排列):
| 运算符 | 含义 |
|---|---|
| ^ | 幂 |
| - | 取反 |
| * 和 / | 乘和除 |
| \ | 整除 |
| Mod | 取模 |
| + 和 - | 加和减 |
如果想改变优先级,可以加上括号。优先计算括号内的运算。
例3,算术运算优先级
|
|
比较运算符
| 运算符 | 含义 | 例子 |
|---|---|---|
| = | 赋值运算 | a = 3 结果a等于3 |
| Is | 判断运算 | a = object1 Is object2 判断object1是否是object2,返回True或False。 |
| Like | 匹配运算 | a = “aBBBa” Like “a*a” 模式匹配,返回True。 |
| < | 小于运算 | a = 3 < 3 结果a等于False |
| <= | 小于等于运算 | a = 3 <= 3 结果a等于True |
| > | 大于运算 | a = 3 > 3 结果a等于False |
| >= | 大于等于运算 | a = 3 >= 3 结果a等于True |
| = | 等于运算 | a = (3 = 3) 结果a等于True |
| <> | 不等于运算 | a = 3 <> 3 结果a等于False |
赋值运算用于给变量赋值。到现在为止,我们见的最多的就是赋值运算符。
Is运算主要是用来判断两个对象,如果是同一个对象返回True,不是同一个对象返回False。关于对象的概念在以后的课程里我们会介绍。在Excel里面常见的对象是单元格Cell对象,Sheet对象,Workbook对象等,下面我们以单元格对象为例较少下Is的用法。
例4,Is运算符,判断是不是同一个单元格。
|
|
Like运算用于比较两个字符串。Like用法如下:
result = string Like pattern
如果string匹配上了pattern,那么result是True,没有匹配上,result是False。如果string和pattern都是Null的话,result也是Null。
Like运算符的行为取决于Option Compare语句。Option Compare语句有Option Compare Binary和Option Compare Text两种。默认方法为Option Compare Binary。
Option Compare Binary根据派生自字符的内部二进制表示形式的排序顺序生成字符串比较。 排序顺序由代码页确定。
以下示例中显示了典型的二进制排序顺序:
A < B < E < Z < a < b < e < z < À < Ê < Ø < à < ê < ø
Option Compare Text根据由系统的区域设置确定的不区分大小写的文本排序顺序生成字符串比较。 当使用 Option Compare Text 为相同的字符排序时,将生成以下文本排序顺序:
(A=a) < (À=à) < (B=b) < (E=e) < (Ê=ê) < (Z=z) < (Ø=ø)
内置模式匹配为字符串比较提供了一个功能多样的工具。 利用模式匹配功能,您可以将通配符、字符列表或字符范围任意组合使用来匹配字符串。 下表显示了 pattern 中允许使用的字符以及它们的匹配项:
| 模式中的字符 | 字符串中的匹配项 |
|---|---|
| ? | 任意单个字符。 |
| * | 零个或多个字符。 |
| # | 任何单个数字 (0-9)。 |
| [ charlist ] | charlist内的任意单个字符。 |
| [ !charlist ] | charlist外的任意单个字符。 |
例5,Like运算符
|
|
比较运算符的优先级都相同;也就是说,它们按照显示的顺序从左向右进行计算。
串联运算符
| 运算符 | 含义 | 例子 |
|---|---|---|
| & | 字符串连接运算 | a = “hello” & “ World” 结果a等于”hello World” |
| + | 字符串连接运算 | a = “hello” + “ World” 结果a等于”hello World” |
&用于强制连接两个表达式的字符串。
result = expression1 & expression2
如果expression1或expression2不是String类型的话,会被转化为String类型再进行连接。 如果expression1和expression2都是Null,那么result也是Null。如果只有一个表达式是Null的话,那么这个表达式被转化为空字符串”“再进行连接。
例6,&运算符
|
|
+既是加法运算符也是字符连接运算符,当+的左右两侧都是数字的时候,+是加法运算。两侧都是String类型的时候是字符连接运算。
例7,+运算符
|
|
+两侧的类型不一致,会引发错误。当类型不一致时,请用类型转换函数进行转化后再使用+。
例8,+运算符
|
|
运行Test8过程的后的错误如下:
把123强制转化为String类型,就不会报错了,如下:
|
|
逻辑运算符
| 运算符 | 含义 | 例子 |
|---|---|---|
| And | 逻辑与运算 | a = True And False 结果a等于False |
| Or | 逻辑或运算 | a = “hello” & “ World” 结果a等于”hello World” |
| Not | 逻辑非运算 | a = “hello” & “ World” 结果a等于”hello World” |
| Xor | 逻辑异或运算 | a = “hello” & “ World” 结果a等于”hello World” |
| Eqv | 逻辑等价运算 | a = True Eqv False 结果a等于False |
| Imp | 逻辑隐含运算 | a = “hello” & “ World” 结果a等于”hello World” |
And 逻辑与运算符,用于对两个表达式执行逻辑与运算。
result = expression1 And expression2
如果expression1和expression2都是True,那么result是True。如果其中有一个表达式是False,那么result是False。如下表所示:
| If expression1 is | And expression2 is | The result is |
|---|---|---|
| True | False | False |
| True | Null | Null |
| False | True | False |
| False | False | False |
| False | Null | False |
| Null | True | Null |
| Null | False | False |
| Null | Null | Null |
如果expression1和expression2都是数值表达式,那么And会对表达式相同位置的位进行按位比较。如下表所示:
| If bit in expression1 is | And bit in expression2 is | The result is |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
例9,And运算符
|
|
Or 逻辑或运算,用于对两个表达式执行逻辑或运算。
result = expression1 Or expression2
如果expression1或者expression2都是True,那么result是True,否则是False。如下表所示:
| If expression1 is | And expression2 is | The result is |
|---|---|---|
| True | True | True |
| True | False | True |
| True | NULL | True |
| False | True | True |
| False | False | False |
| False | NULL | NULL |
| NULL | True | True |
| NULL | False | NULL |
| NULL | NULL | NULL |
如果expression1和expression2都是数值表达式,那么Or会对表达式相同位置的位进行按位比较。如下表所示:
| If bit in expression1 is | And bit in expression2 is | The result is |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
例10,Or运算符
|
|
Not 逻辑非运算,用于对表达式执行逻辑非运算。
result = Not expression
结果如下表所示:
| If expression is | The result is |
|---|---|
| True | False |
| False | True |
| NULL | NULL |
如果expression都是数值表达式,那么Or会对表达式相同位置的位进行按位比较。如下表所示:
| If bit in expression is | The result is |
|---|---|
| 0 | 1 |
| 1 | 0 |
例11,Not运算符
|
|
Xor 逻辑异或运算,用于对两个表达式执行逻辑异或运算。
[ result = ] expression1 Xor expression2
如果有且只有一个表达式的值为True,则result为True。 但是,只要有一个表达式为Null,则result也为Null。如下表所示:
| If expression1 is | And expression2 is | The result is |
|---|---|---|
| True | True | False |
| True | False | True |
| False | True | True |
| False | False | False |
如果expression1和expression2都是数值表达式,那么Xor会对表达式相同位置的位进行按位比较。如下表所示:
| If bit in expression1 is | And bit in expression2 is | The result is |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
例12,Xor运算符
|
|
Eqv 逻辑等价运算符,用于对两个表达式执行逻辑等价运算。
result = expression1 Eqv expression2
如果expression1或expression2是Null,那么result是Null。如果expression1和expression2都不是Null,并且expression1和expression2的表达式结果是一样的,那么result是True,否则是False。如下表所示:
| If expression1 is | And expression2 is | The result is |
|---|---|---|
| True | True | True |
| True | False | False |
| False | True | False |
| False | False | True |
如果expression1和expression2都是数值表达式,那么And会对表达式相同位置的位进行按位比较。如下表所示:
| If bit in expression1 is | And bit in expression2 is | The result is |
|---|---|---|
| 0 | 0 | 1 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
例13,Eqv运算符
|
|
Imp 逻辑隐含运算,用于对两个表达式执行逻辑隐含。
result = expression1 Imp expression2
结果,如下表所示:
| If expression1 is | And expression2 is | The result is |
|---|---|---|
| True | True | True |
| True | False | False |
| True | Null | Null |
| False | True | True |
| False | False | True |
| False | Null | True |
| Null | True | True |
| Null | False | Null |
| Null | Null | Null |
如果expression1和expression2都是数值表达式,那么Imp会对表达式相同位置的位进行按位比较。如下表所示:
| If bit in expression1 is | And bit in expression2 is | The result is |
|---|---|---|
| 0 | 0 | 1 |
| 0 | 1 | 1 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
例14,Imp运算符
|
|
参考资料: https://docs.microsoft.com/zh-cn/office/vba/language/reference/user-interface-help/operator-summary
转载请注明本网址。