专栏首页Excel和Access学习笔记VBA程序的变量和常量

VBA程序的变量和常量

大家好,在本节就主要介绍变量和常量,主要掌握声明变量和变量赋值,变量的作用域和存活期需要理解。

一、变量和常量的命名

首先介绍下变量和常量命名,在VBA中可以使用名称来表示内存的位置,这个名称就是标识符,可以理解为变量和常量的名字。

1、第一个字符必须使用英文字母或中文字符(中文版EXCEL支持中文字符)

2、名称长度不超过255个字符

3、名称不能与VBA本身的Function过程、语句、即方法的名称相同,避免冲突。

4、不能在同一范围的相同层级中使用重复的名称。

二、变 量

下面介绍本节的的主要内容,变量的相关内容。

1、变量的概念

变量是用于保存程序运行过程中的临时值,和常量不同的是,在程序运行过程中变量保存的值是可以被改变的。

2、声明变量

在使用变量时,需要告诉VBA程序变量的名称和数据类型,即声明变量。通常用Dim语句来声明动态变量(还有一种不常用的Static语句来声明静态变量,后面会介绍。)

Dim语句格式如下:Dim 变量名 [ AS 数据类型 ]

声明变量通常都是在程序开始处,可以再同一行声明多个变量,用英文逗号间隔即可。举几个例子:

声明i为整型变量

Dim i As Integer

声明j为字符串,k为整型变量

Dim j As String, k As Integer

声明x和y为整型变量

Dim x, y As Integer

格式中 [AS 数据类型] 是可以省略的,即声明变量时不指定变量的类型。系统会自动将其分配为Variant变量(即变体型),这叫隐式声明。

但在编写代码时不推荐使用隐式声明变量,1、隐式声明变量后,之后变量名如果用错,VBA不会有提示。2、变体型变量占用内存多,会拖累程序运行速度。

所以通常在模块中添加Option Explict语句,要求该模块中所有变量必须先强制声明再使用。(也可以系统中直接设置默认添加这个语句,在VBE的“工具-选项”中,勾选“要求变量声明”再插入新模块时,就会默认有Option Explict语句)

3、变量赋值

为变量赋值就需要用到赋值语句,赋值语句的作用就是对表达式进行运算,并把运算结果赋值给变量或者属性。

表达式为如下(其中let经常都省略):[ let ] 变量或属性的名称=常量值或者表达式

前面用for循环举例时就用过赋值语句,下么我再举例说明下

声明的了i是字符串变量后,赋值一个字符串,最后用msgbox函数将变量的内容输出。

这里有个例需要说明,除了let语句外,在后期遇到将对象类型赋值给变量的情况时,需要用set语句来赋值,后期遇到时候会再讲解。

4、变量的作用域

作用域就是变量使用范围,VBA中有三种级别的作用域,即过程级变量、模块级变量和工程级变量。

通常使用的是过程级变量,也称为局部变量,就是再Sub和End Sub之间编写代码时声明的变量。在过程结束时,占用的内存空间就会释放,有利于节省计算机内存。在不同的过程中可以使用相同名称的过程级变量。

模块级变量时在模块的第一个过程之前使用Dim或者private声明的变量,该模块的所有过程都可以使用这个变量。

工程级的变量时在模块声明部分用puplic来声明,即Public 变量名 As 变量类型。可以在窗体、模块和类模块中都使用工程级变量。

(对于不同级的变量使用的原则,尽量使用过程级变量,如果不同过程之间有共享值时,才使用模块变量,要控制工程级变量的使用数量。)

5、变量的存活期

变量的存活期就是指变量在内存中保留的时间。那么当程序开始运行时,模块级和工程级的变量就会出现在内存中,而过程级变量时一个SUB过程开始后才储存到内存中,退出SUB过程后,变量占用的内存也会释放。

而当程序退出时,工程级变量、模块级变量和过程级变量占用的变量占用的内存都会释放。

但是如果将变量用static语句声明为静态变量,那么在过程退出时,静态变量仍保存在内存中。过程再运行一遍时,动态变量重置,而静态变量还是上一次过程运行后的结果。

静态变量声明staitc与dim语句的声明格式一样。下面我举例来说明动态变量和静态变量的区别。用Debug.print将运行结果在立即窗口中显示。

多次运行这个过程之后,运行的结果在立即窗口中显示,变量默认值为0,第一次运行过程,a和b结果都为1。第一次过程结束后,动态变量a重新变成默认值0,而静态变量b仍为1,第二次运行过程,动态变量a结果1,静态变量结果为2。结束后动态变量由会变成默认值0,而B仍为2,依次类推。只有当程序退出时候静态变量才会重置。

其实模块级变量和工程级变量的结果和静态变量时一样的,只有当程序退出时占用的内存才会释放。

三、常 量

最后简单说一下常量,在程序运行过程中值不会发生变化,常量可以在程序中直接书写的量。

如果一个常数需要反复用到,比如圆周率3.14,就可以为一个常量命名,定义格式如下:

Const 符号常数名=符号常数或表达式

本文分享自微信公众号 - Excel和Access学习笔记(excel-note),作者:无言之月

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-06-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • VBA程序控制结构概述

    大家好,本节的主要内容是简单介绍下VBA编程中的基本程序控制结构,然后用其中一种结构的语句来简单举例,目的是让大家先对控制结构有整体的印象,然后引出变量和对象两...

    无言之月
  • VBA程序控制结构示例-九九乘法表

    大家周末好,本节将以制作九九乘法表为例,来巩固循环结构和判断结构的嵌套应用。下面先演示下最后的效果。

    无言之月
  • 过程(四)传地址和传值

    在VBA中实参可以通过两种方式将数据传递给形参,分别为传地址和传值,都是在创建通用过程定义变量时。

    无言之月
  • Powershell中的变量

    在我们的迷你系列“Variables in Shells”中,了解如何在PowerShell中处理局部变量。

    QRosie
  • (21)Bash用户自定义变量

    变量是计算机内存的单元,其中存放的值可以改变。当Shell脚本需要保存一些信息时,如一个文件名或是一个数字,就把它放在一个变量中。每个变量有一个名字,所以很容易...

    生信real
  • 一文读懂R中的探索性数据分析

    探索性数据分析(EDA)是数据项目的第一步。我们将创建一个代码模板来实现这一功能。 简介 EDA由单变量(1个变量)和双变量(2个变量)分析组成。

    1480
  • 机器学习实战 | 数据探索(变量变换、生成)

    1.1、什么是变量变换? 在数据建模中,变换是指通过函数替换变量。 例如,通过平方/立方根或对数x替换变量x是一个变换。 换句话说,变换是一个改变变量与其他变量...

    用户1332428
  • C - 基础总结

    xx_Cc
  • 数据管理—reshape2包

    我就在这里等你关注,不离不弃 ——A·May R-50T-50 ? 「序 言 」 不知不觉,已经写了半百的R语言了,感觉等数据准备这个大阶段结束,有必要将数据理...

    企鹅号小编
  • 【临床研究】一个你无法逃避的问题:多元回归分析中的变量筛选

    临床模型研究,说到底是做一个模型,那么模型应该如何纳入自变量,纳入哪些自变量,这都是至关重要的问题。线性回归,逻辑回归和Cox比例风险回归模型是被广泛使用的多元...

    用户6317549

扫码关注云+社区

领取腾讯云代金券