今日学习目标

  • 理解变量的概念
  • 掌握常用数据类型
  • 学会声明和使用变量
  • 了解作用域

知识点

1. VBA变量怎么声明

变量是给数据起的名字,运行期间可随时读取和修改,VBA用 Dim 声明:

vba
Dim 变量名 As 数据类型

命名以字母或中文开头,不能含空格和点号,不能用保留字。模块顶部的 Option Explicit 要求先声明再使用,建议始终保留。

2. 常用数据类型

数据类型 说明 示例
Integer 整数(-32768~32767) Dim i As Integer
Long 长整数(约±21亿) Dim l As Long
String 字符串 Dim s As String
Double 双精度浮点数 Dim d As Double
Boolean 布尔值 Dim b As Boolean
Date 日期 Dim dt As Date

经验:整数用Long,金额小数用Double;日期字面量用井号 #1999-1-1#。不声明类型就是Variant,尽量不用。

3. 赋值、拼接与类型转换

用 = 赋值,& 拼接字符串和数字,vbCrLf 换行,行尾 _ 续行。从单元格或输入框拿到的数据常是文本,计算前要先转换:CInt、CDbl、CStr、Val。

4. 变量的作用域

  • 过程级:Dim 在过程内,仅本过程可用,过程结束即销毁
  • 模块级:Dim 在模块顶部,本模块所有过程可见
  • 全局级:Public 在模块顶部,整个工程可用

能用小的作用域就不用大的。

今日代码

vba
Sub 变量示例() ' 声明变量 Dim name As String Dim age As Integer Dim price As Double Dim isStudent As Boolean ' 赋值 name = "张三" age = 25 price = 99.5 isStudent = True ' 使用 MsgBox "姓名: " & name & vbCrLf & _ "年龄: " & age & vbCrLf & _ "价格: " & price End Sub

实战场景

背景:销售小王要算报价——单价199.9元,买3件打8折,需要精确到分的应付金额。

vba
Sub 计算订单金额() Dim 单价 As Double, 数量 As Long, 折扣 As Double, 应付 As Double 单价 = 199.9 数量 = 3 折扣 = 0.8 应付 = 单价 * 数量 * 折扣 MsgBox "应付金额: " & Format(应付, "0.00") & " 元" End Sub

运行结果:199.9 × 3 × 0.8 = 479.76。Format(应付, "0.00") 强制显示两位小数,避免浮点尾巴;以后改单价或折扣只动赋值那几行,这就是变量比硬写数字强的地方。

练习题

  1. 声明一个变量存储你的姓名和年龄
  2. 创建一个计算两个数之和的程序
  3. 尝试不同数据类型的变量

参考解答

1. 使用Dim语句声明:Dim name As String, age As Integer,然后分别赋值。 2. 声明两个数值变量,输入或赋值后计算和:Dim a As Integer, b As Integer, sum As Integer。 3. 分别声明Integer、String、Boolean、Date等类型变量并赋值观察结果。

延伸练习

  1. 用 InputBox 输入出生年份,计算并输出年龄(Year(Date) 取当前年份)。
  2. 借助临时变量t交换两个变量的值。

常见错误与排查

报错/现象 原因 解决方法
Run-time error '13': Type mismatch 把非数字文本赋给数值变量 检查来源,用Val/CInt转换
Compile error: Variable not defined 变量未声明或拼错 补Dim声明,核对拼写
两个"数字"相加变成拼接 单元格读到的是文本 计算前用 Val() 转数值

学习总结

VBA变量三件事:先声明、定对类型、控制作用域;单元格数据先转换再计算。


由在线工具箱(www.vba.net)整理制作