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 常量基础教程
订阅评论
提醒
37 评论
最新
最旧 最多投票
内联反馈
查看所有评论
2323
1 月 前

这个学习材料有没有电子书或其他类型的,可以法一份吗

学习Excel的day2
1 月 前

请问为什么直接复制粘贴你的代码进去运行,显示类型不匹配?
运行时错误“13”:类型不匹配

最后由学习Excel的day2编辑于1 月 前
white lily
6 月 前

r = Range(“A1”).Value
这里的.value是什么意思

anna
7 月 前

周长为:62.8318

马铃薯
9 月 前

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
为什么“编译错误显示要求常数表达式”

feifei
9 月 前
回复给  懒人Excel

圆周率用英文字母 pi 表达数学符号 π

安徽大大王
10 月 前

感觉很好

joann
1 年 前

这里为什么要用double 呢?single 不行吗?

深海352
1 年 前

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

要不要去放风筝
2 年 前

为什么数字类型要用double

goto
2 年 前

“不能使用 VBA 中保存的关键词作为变量名”,此处应为“常量名”

RZZ
2 年 前

想问下 如果没有msg box 是不是需要把sub换成function?

zxy715
2 年 前

问题已解决,谢谢。

最后由zxy715编辑于2 年 前
湮没峰
2 年 前

良心作者

1398
2 年 前

MsgBox那一句是什么意思啊

233
2 年 前

最后一句有错别字,应该是“提高编程效率”

2094250790@qq.com
3 年 前

代码运行结果为0,是什么原因啊

Stena
2 年 前
回复给  懒人Excel

赞!

最后由Stena编辑于2 年 前
Rick
3 年 前

简单易懂

Dallas
3 年 前

谢谢

笑笑mm
3 年 前

r = Range(“A1”).Value
请问.Value,加了是干嘛的?

quanm
3 年 前

常量首字母应该一般大写?(命名条件补充建议)

cufu
3 年 前

加油

37
0
希望看到您的想法,请您发表评论x