1变量的声明范围(作用范围)

1.1 全局变量 /跨模块级变量(模块外)

  • public

1.2 模块级变量(模块内,过程外)

  • public
  • dim
  • private

1.2.1 模块级变量

  • 模块级变量,模块里的各个程序都可以访问和修改
  • 看例子,因为声明a为模块级变量,先运行前面的sub,对后面的sub实际有影响
Dim aSub ponymatest1()a = 101
End SubSub ponymatest2()a = 102
End SubSub ponymatest3()Debug.Print a
End Sub

1.3 过程级变量(过程内)

  • dim
  • static

2 变量的生命周期 (受 声明 作用域的影响)

2.1 全局变量  / 跨模块级变量

  • public 定义的变量,随便可能在模块内一直生效,或跨模块都生效
  • 生命周期:当前模块所属的工作簿EXCEL关闭,变量就释放清除

2.2 模块级变量

  • 声明为模块级变量的变量在模块内,一直都生效
  • 生命周期: 当前模块所属的工作簿EXCEL关闭,变量就释放清除

2.3 过程级变量

  • 过程级变量的生命周期只在本过程内
  • 这个过程开始时创建
  • 这个过程结束时变量就被释放了

2.4 static 静态变量(特殊在于:作用域是过程级变量-不会被外面的程序访问,但是生命周期是模块级)

  • static 静态变量,当前模块所属的工作簿关闭后(关闭工程),就释放
  • 每次更新的值也可以被保留

2.5 static变量和 模块级变量的区别

  • 模块级变量和static变量,都是一直在工作簿关闭前都生效。都大于一个sub的生命周期
  • 差别在于,模块级变量,会被多个sub影响
  • 而static变量,虽然生命周期长,但仍然只是一个 过程级变量
Public x
Dim y
Private zSub test108()For i = 1 To 3Debug.Print "第" & i & "次"test1008test1009test1010Debug.Print
Next
End SubSub test1008()Dim a As Byte
Static b As Byte'别在测试时重新赋值,至少赋值也不应该在这个sub内,而应该有个专门赋初值的地方
'a = 1
'b = 1
'x = 1
'y = 1
'z = 1a = a + 1
b = b + 1
x = x + 1
y = y + 1
z = z + 1Debug.Print " a= " & a;
Debug.Print " b= " & b;
Debug.Print " x= " & x;
Debug.Print " y= " & y;
Debug.Print " z= " & zEnd SubSub test1009()
a = a + 1
b = b + 1
x = x + 1
y = y + 1
z = z + 1Debug.Print " a= " & a;
Debug.Print " b= " & b;
Debug.Print " x= " & x;
Debug.Print " y= " & y;
Debug.Print " z= " & z
End SubSub test1010()
a = a + 1
b = b + 1
x = x + 1
y = y + 1
z = z + 1Debug.Print " a= " & a;
Debug.Print " b= " & b;
Debug.Print " x= " & x;
Debug.Print " y= " & y;
Debug.Print " z= " & z
End Sub
  • 可以多运行test108几次
  • 并尝试运行后关闭这个代码所属的EXCEL,再打开看看

【原创】VBA学习笔记(302)VBA的变量的作用范围 与 生命周期相关推荐

  1. VBA学习笔记之VBA学习思路

    进阶的知识点 1. SQL查询语句和ADO 2. 正则表达式和网抓 3. 窗体与控件 4. API 类模块 等等 作者:SOROSay 链接:https://www.zhihu.com/questio ...

  2. VBA学习笔记1:将同个文件夹中的工作簿汇总为一个工作簿,并建立目录超链接

    VBA学习笔记1:将同个文件夹中的工作簿汇总为一个工作簿,并建立目录超链接 1.将文件夹中的xlsx文件名复制到新工作簿: 2.将文件夹中的xlsx数据簿中的sheet复制到新表并重命名: 3.插入超 ...

  3. VBA学习笔记(9)--生成点拨(1)

    VBA学习笔记(9)--生成点拨(1) 说明(2017.3.26): 1. 还没写完,写到新建文件夹了,下一步新建word,重命名,查找点拨,把点拨复制进去,因为要给点拨编号,应该会很麻烦 1 Pub ...

  4. VBA学习笔记5:将同一工作簿的数据按照类别拆分为多个工作簿

    VBA学习笔记5:将同一工作簿的数据按照类别拆分为多个工作簿 1.对每行数据按照类别所在列进行循环,判断某类别的工作簿是否存在: 2.如果不存在,则新建工作簿并将该行数据复制粘贴: 3.如果存在则打开 ...

  5. 陈表达VBA学习笔记-新建工作表鼠标右键菜单按钮

    陈表达VBA学习笔记-新建工作表鼠标右键菜单按钮:新建一个我的菜单按钮 设置对应的宏过程名称为 [我的菜单宏] 点击按钮弹窗信息,信息可自定义设置 详细代码如下: Sub 新建右键菜单()Dim 菜单 ...

  6. VBA学习笔记2:将工作簿的表格拆分为工作簿

    VBA学习笔记2:将工作簿的表格拆分为工作簿 1.判断原有工作簿的sheet是否需要拆分: 2.如需拆分则创建新表: 3.将原sheet复制到新建的工作簿中. 效果如下: 代码执行前,有1个工作簿,需 ...

  7. VBA学习笔记8:单元格的合并与拆分

    VBA学习笔记8:单元格的合并与拆分 如下图,需要实现1图到2图(单元格合并),或2图到1图(单元格拆分). 1图: 2图: 合并单元格代码如下: Sub 合并单元格()Dim k%, rng As ...

  8. VBA学习笔记3:合并同一工作簿下的多个表格

    VBA学习笔记3:合并同一工作簿下的多个表格 1.建立一个新的汇总表: 2.将其他sheet数据复制到汇总表中. 效果如下: 需要将3个sheet的表的数据汇总起来 汇总后的数据: 代码如下: Sub ...

  9. Excel VBA 学习笔记13:单元格的格式

    Excel VBA 学习笔记13:单元格的格式 NumberFormat 属性 (Excel) vba excel 单元格格式设置 Excel VBA 单元格格式 python解决SNIMissing ...

最新文章

  1. c#获取父类_C#——父类中的this的指向,及用反射获取当前类所在的Type | 学步园...
  2. C#基础——密码加密
  3. python数据标准化1002无标题,Scikit标准化互信息学习给我错误的值
  4. 有一次去校内的某个礼堂看电影,在门口有个长得很斯文的陌生人一脸神秘地跟我说:师弟,能不能进去之后,把电影票从厕所的气窗扔出来给我……...
  5. 深入理解javascript
  6. IDEA 创建maven jar、war、 pom项目
  7. 怎么判断tcp重组完成_网络工程师(8):TCP为什么可靠
  8. CPU启动计算机,如何加快双核CPU计算机win7启动速度
  9. 数据链路层的流量控制
  10. Implement Stack using Queues
  11. JQuery实战手风琴-遁地龙卷风
  12. 【python 监控报警】python自动发钉钉机器人报警
  13. 名帖205 蔡襄 行书《蔡襄自书诗》
  14. 蜂鸣器播放《两只老虎》
  15. GNVM版本下载太慢用淘宝镜像速度提百倍哈
  16. 哪些习惯能让生活变得简洁高效?
  17. Android后台服务Service
  18. 手把手教你创建springBoot项目
  19. 智联招聘职位信息爬取并写入xls表中
  20. Vue核心之MVVM模型

热门文章

  1. Frontpage2003sp2使用教程
  2. Linux运维常用工具软件
  3. 佳能PIXMAnbsp;MP150/MP170/MP450打印…
  4. Android操作系统默认图片
  5. Laravel5.4注册登录解析及使用教程
  6. android 网络错误115,115(com.ylmf.androidclient) - 28.5.1 - 应用 - 酷安
  7. 寄存器(R0~R16)以及从SysTick系统时钟理解RTOS移植初始化
  8. Django之爱鲜蜂项目开发 day06(一)
  9. 在Fedora23中安装XMind7
  10. 【深度学习】使用深度学习检测混凝土结构中的表面裂缝