ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > VBA 中变量的作用域和生存期是怎么样理解的?

VBA 中变量的作用域和生存期是怎么样理解的?

作者:绿色风 分类: 时间:2022-08-17 浏览:119
楼主
wise
Q:VBA 中变量的作用域和生存期是怎么样理解的?
A:具体请看下面解释:
excel VBA 中变量的作用域和生存期
1、变量的作用域定义可以使用变量的过程;
2、变量的生存期定义变量保存所赋的值多长时间。
例子1(变量生存期):
  1. Sub TT()
  2. Dim i
  3. i = i + 1
  4. MsgBox i
  5. End Sub

每次运行TT过程,得到值为1.因为变量i仅仅保留在内存中,一直到该过程结束。当遇到了End sub语句时,i所使用的内存就会被释放。下次再运行TT过程时,i被重新创建,默认为0值。
如果i的生存期是在该过程的运行期间,通过在static语句声明i,可以增加i的生存期。
  1. Sub BB()
  2. Static i
  3. i = i + 1
  4. MsgBox i
  5. End Sub

注意BB过程,第一次运行值是1,第二次运行值显示为2,第三次运行值为3,不停地给保留。
作用域的演示:
  1. Sub 作用域1()
  2. Static i
  3. i = i + 1
  4. MsgBox i
  5. End Sub
  1. Sub 作用域2()
  2. Static i
  3. i = i + 5
  4. MsgBox i
  5. End Sub

过程作用域1中的i变量和过程作用域2的i变量不是相同的变量,每次执行的时候,作用域1是增加1,而作用域2是增加5。这两个过程是独立的,不相互影响的。
在一个过程声明的任何变量都是有限定于该过程的作用域。在一个过程中声明的变量称为过程级变量。
但是,如果是下面这个的例子话,变量是一样的。
Option Explicit
Dim i
  1. Sub 作用域1()
  2. i = i + 1
  3. MsgBox i
  4. End Sub
  1. Sub 作用域2()
  2. i = i + 5
  3. MsgBox i
  4. End Sub

这两个例子的变量都是一样的,称为模块级变量。其生存周期在整个工作簿打开的时间。
2楼
亡者天下
不错,过来学习一下!

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap