VBA 运算符基础教程
使用 VBA 开发某项功能,本质上是,对变量进行基础的运算和操作,例如加减乘除比较等。为此,VBA 提供了很多运算符和操作符,利用它们可以实现复杂的运算。
今天先学习 VBA 提供的基础运算符和操作,以及它们的基本用法。VBA 运算符可以分为以下 6 类:
- 赋值运算符
- 算术运算符
- 比较运算符
- 逻辑运算符
- 连接运算符
- 其他运算符
赋值运算符
首先是最基础的,赋值运算符 ( = )。在 VBA 变量一文中介绍,赋值语法核心就是 =
(等号),变量在左侧,数据在右侧。可以理解为变量等于赋值的数据。
运算符 | 说明 | 示例 |
---|---|---|
= | 给变量赋值 | name = “Zhang San” |
算术运算符
算数运算符是我们常用的数学运算符,包括加减乘除等。VBA 中完整的算术运算符如下。
假设 a = 10
,b = 3
,->
表示结果。
运算符 | 说明 | 示例 |
---|---|---|
+ | 两数相加 | a + b -> 13 |
– | 两数相减 | a – b -> 7 |
* | 两数相乘 | a * b -> 30 |
/ | 两数相除 | a / b -> 3.33… |
\ | 两数相除,取整数部分 | a \ b -> 3 |
Mod | 两数相除,取余数 | a Mod b -> 1 |
^ | 幂运算 | a ^ b -> 1000 |
-(取负) | 对数字取负 | -a -> -10 |
比较运算符
比较运算符,比较提供的两个变量,如果符合比较条件,返回 True,否则,返回 False。
假设 a = 10
,b = 3
,->
表示结果。
运算符 | 说明 | 示例 |
---|---|---|
= | 比较两个值是否相等 | a = b -> False |
> | 大于 | a > b -> True |
>= | 大于等于 | a >= b -> True |
< | 小于 | a < b -> False |
<= | 小于等于 | a <= b -> False |
<> | 不等于 | a <> b -> True |
逻辑运算符
逻辑运算符对逻辑值,即 True 和 False,进行逻辑运算,返回运算结果,运算结果也是逻辑值。
假设 a = True
,b = False
,->
表示结果。
运算符 | 说明 | 示例 |
---|---|---|
And | 逻辑与,两个表达式都是真,返回 True。 | a And b -> False |
Or | 逻辑或,两个表达式至少有一个为真,返回 True。 | a Or b -> True |
Not | 逻辑否,对逻辑表达式取否 | Not a -> False |
Xor | 逻辑异或,如果两个表达式不相同,返回 True | a Xor b -> True |
连接操作符
VBA 中的连接运算符用于连接 2 个或多个文本。其用法与 Excel 公式中的 & 符号相同。
运算符 | 说明 | 示例 |
---|---|---|
& | 连接两个文本 | “Zhang” & ” ” & “San” -> “Zhang San” |
其他操作符
运算符 | 说明 |
---|---|
_ (下划线) | 将一行代码分解成两行 |
: ( 英文冒号) | 将两行代码放置在一行 |
转载注明:文章转载自「懒人Excel - www.lanrenexcel.com」
本文链接:VBA 运算符基础教程
https://www.lanrenexcel.com/vba-operators/#comment-376
代码断行,下划线后面加空格
请问一下 OR 跟XOR 的区别是什么?都返回TRUE
OR,两个表达式只要有一个是真,就返回真;
XOR,两个表达式不同,返回真,否则返回假。
本篇示例中,都返回true只是巧合。
提问:有没有这样的编程代码,excel里数据A的和=B(B会随时更新),数据A随每一个B数据更新的数值而累计相加呀?
假设数据A在A1单元格,B在B1单元格,利用工作表单元格值变化事件,获取变化后的值,再在A1里进行累加,具体参考如下代码:
请问这个代码我该如何运行呀
这个是工作表的改变事件函数,是自动运行的,需要放置在对应工作表的模块里。
努力学习ing
写的非常仔细,粗略的浏览一下,期待下次学习 ,你太优秀了!
大佬,我设置了一个按钮点击后将某单元格数值输出到其他单元格,然后其他单元格数值累加,如何实现?
目前编写如下
sub 按钮录入()
‘e 是 数值
‘
‘f 是 累加数值
Range(“F5:J5”).Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
‘目标单元格区域插入一行
Dim e As Integer
Dim f As Integer
e = Range(“B12”)
Range(“G5”) = e
f = Range(“B12”) + f
Range(“I5”) = f
End Sub
数值并不累加,请问如果我要实现数值累加应该怎么编写
首先,程序每次运行并结束后,内部变量的值不会被保存,你的程序中,e和f变量每次都是初始值0,所以做不到累加。
我不是很确定哪个单元格的值需要累加,如果是I5单元格的值需要累加,原始值下一行的值的话,累加值是B12单元格,则可以这么写:
Range(“I5”) = Range(“I6”) + Range(“B12”)
假设 a = 10,b = 3,-> 表示结果。
a >= b -> True,这个大于但不等于吧,是不是应该返回false
>=符号中两个条件是“或”的关系,即符合其中一个就满足,返回true。其他两个条件的符号也是符合此规则。
const a as integer = 10
const b as integer = 3
a + b -> 13 这句出错
这个语句粘贴在VBA直接报错,提示缺少表达式,这是什么原因?
这段代码中,【-> 13】这部分是为了显示a+b的结果是13,但是不符合VBA语法,不能直接运行。可以运行如下代码:
Sub Test()
Const a As Integer = 10
Const b As Integer = 3
MsgBox a + b ‘-> 13
End Sub
“Zhang” & ” ” & “San” -> “Zhang San”这里是不是&打多了,是否应该为“Zhang” & “San” -> “Zhang San”
这里是把中间的空格也单独文本表示,总共有三个文本,因此需要两个连接符。
空格的引号是两个下引号而不是一对上下引号,可能引起误解
非常好!是否也说明一下双引号的作用和意思,便于大家理解
双引号,简单地说是表达文本类型数据的语言基础特性。
name,不加双引号是一个变量;加双引号”name”,是一个文本数据
楼主,首段的算“术”运算符写成了算”数”运算符
已更正,感谢反馈
顺便夸夸楼主,这
教程真的不错
两数相除 后面的a/b->2.5 是不是错了呀? 应该是3.333333吧。
教程挺好,感谢!!
感谢反馈,已修正
想请教:
1. 说一行,可能表述不是很清楚,确切的应该是一个语句。在实际开发过程中,会出现一个语句很长的情况,如果不换行,需要手动拖动下方水平滚动条才能看到全部的代码。所以将一个很长的语句分成两个甚至更多行,阅读起来更清晰。
2. 这点刚好反过来。一行里语句很短,下一行代码又与当前行代码用途类似,如果直接一行里连着写,也会更清晰。
例如,Dim i As Ineger : i = 0。声明和赋值在一处进行
写的太好了,赞一个
赋值和比较运算都是 = 如何判断 a=b=c 这种式子是赋值还是比较?
如果这种式子是单独出现的,则赋值语句,例如 a = 10, b = c 等;
如果是在其他表达式里面,则表示比较运算,例如 if a =10 then …
算术运算符中“-”号说明应该是“两数相减”而不是“两数相间”
a >= b => False应为a >= b -> False
感谢回复,已更正
a >= b -> False 不是很明白
就是 a >= b 这个表达式是 false 的意思
10>=3在VBA里面是False吗?感觉数学式是正确呢,结果应该是True?
书写错误,已更正,感谢反馈。