VBA 常量基础教程
VBA 常量是相对于VBA 变量的概念。不同于变量,常量一旦赋值,其值不能改变。在程序运行整个过程,其值一直保持不变,如果强行赋值新的数据,VBA 会报错。
使用VBA 常量,可以使一个值用更加简便的方式表达,提高编程效率。例如,使用Pi
代表”3.14159…”,在代码里直接使用Pi
代表 π 值。
声明常量
声明常量与声明变量类似,需要指明名称和数据类型。不同点在于,常量的值在声明时就需要指定。
声明常量的语法如下:
Const [常量名] As [数据类型] = [值]
其中,Const
是英文单词 Constant 的缩写,表示常量。
命名常量
与变量相同,常量命名需要符合以下条件,否则程序出错。
- 首字母必须以字母开头。
- 不能包含空格、.(英文句号)、!(感叹号)、@、&、$、# 等字符。
- 长度不能超过 255 个字符。
- 不能使用 VBA 中保存的关键词作为常量名。
常量类型
常量类型与变量类型相同,具体信息参考变量教程。
实例
现在看一个实例,将 π 的值作为一个常量声明,在后续的过程中,直接使用 Pi
作为 π 的值参与计算。
Sub MyCode()
'声明 π 常量
Const Pi As Double = 3.14159
'声明半径 r 和周长 C 变量
Dim r As Double
Dim C As Double
'从单元格 A1 读取半径值
r = Range("A1").Value
'计算周长
C = 2 * Pi * r
MsgBox "周长为:" & C
End Sub
看一下结果:
总结
本篇我们学习了 VBA 中另一个基础概念,VBA 常量。常量与变量相对,是一个不变的值。在程序中,可以使一些复杂的值使用常量表示,简化代码,提高编程效率。
转载注明:文章转载自「懒人Excel - www.lanrenexcel.com」
本文链接:VBA 常量基础教程
这个学习材料有没有电子书或其他类型的,可以法一份吗
没有的抱歉
请问为什么直接复制粘贴你的代码进去运行,显示类型不匹配?
运行时错误“13”:类型不匹配
提示错误后可以点击查看按钮,看一下是哪一行代码报错
r = Range(“A1”).Value
这里的.value是什么意思
获取单元格的“值”,换句话说,是计算以后的值。
例如,如果是日期,则返回对应的数字值;如果是公式,则返回公式的结果。
周长为:62.8318
Sub MyCode()
‘声明 π 常量
Const π As Double = 3.14159
‘声明半径 r 和周长 C 变量
Dim r As Double
Dim C As Double
‘从单元格A1读取半径值
r = Range(“A1”).Value
‘计算周长
C = 2 * π * r
MsgBox “周长为: ” & C
End Sub
为什么“编译错误显示要求常数表达式”
我这运行正常,你的具体高亮哪一行有错误?
圆周率用英文字母 pi 表达数学符号 π
感觉很好
这里为什么要用double 呢?single 不行吗?
Double类型可表示的范围更广。当然,在本例中 Single 也完全没问题。
vba刚入门,这串代码,提示错误“13”,类型不匹配。是哪里有问题吗?
Sub CategorizeKeywords()
‘ 设置关键词和它们的类别
Dim keywordsList As Variant
keywordsList = Array(“苹果”, “香蕉”, “橙子”, “白菜”, “生菜”, “黄瓜”)
Dim categoryList As Variant
categoryList = Array(“水果”, “水果”, “水果”, “蔬菜”, “蔬菜”, “蔬菜”)
‘ 获取关键词所在列
Dim keywordsRange As Range
Set keywordsRange = Range(“A1:A10”) ‘ 将这里的范围替换为你的关键词所在列的范围
‘ 设置类别所在列
Dim categoryColumn As Range
Set categoryColumn = Range(“B1:B10”) ‘ 将这里的范围替换为你的类别所在列的范围
‘ 循环遍历每一个关键词
Dim keywordCell As Range
For Each keywordCell In keywordsRange
‘ 获取关键词在关键词列表中的索引
Dim keywordIndex As Long
keywordIndex = Application.Match(keywordCell.Value, keywordsList, 0)
‘ 如果找到了匹配的关键词,则将对应的类别写入类别列中
If Not IsError(keywordIndex) Then
categoryColumn.Cells(keywordCell.Row, 1).Value = categoryList(keywordIndex)
End If
Next keywordCell
End Sub
1、Array函数创建的数组,默认序号是0开始的,而Match函数返回的序号是1开始的,因此为了一致,在程序顶部加上 Option Base 1; 2、类型不匹配错误,表示Match函数未找到对应值的… 阅读更多 »
为什么数字类型要用double
double类型可以表示小数,而integer、long类型均是整数类型。
“不能使用 VBA 中保存的关键词作为变量名”,此处应为“常量名”
感谢反馈,已修正
想问下 如果没有msg box 是不是需要把sub换成function?
也不需要,还是看这个过程的功能。如果需要返回值,那么应该用function。
问题已解决,谢谢。
良心作者
MsgBox那一句是什么意思啊
MsgBox 是 VBA 内置函数,用于对话框弹出传入的参数。
最后一句有错别字,应该是“提高编程效率”
感谢反馈,已更正。
代码运行结果为0,是什么原因啊
A1单元格是不是没有输入数字啊?
赞!
简单易懂
谢谢
r = Range(“A1”).Value
请问.Value,加了是干嘛的?
Range() 返回的是单元格对象,不能直接读取其值,需要通过 value 属性读取
常量首字母应该一般大写?(命名条件补充建议)
没有硬性标准,根据自己的喜好写就行。不过一般首字母大写或全部大写,比较容易区分哪些是常量,哪些是变量。
加油