排行
数据库百科
核心案例
行业报告
月度解读
大事记
产业图谱
中国数据库
向量数据库
时序数据库
实时数据库
搜索引擎
空间数据库
图数据库
数据仓库
大调查
2021年报告
2022年报告
年度数据库
2020年openGauss
2021年TiDB
2022年PolarDB
2023年OceanBase
首页
资讯
活动
大会
学习
课程中心
推荐优质内容、热门课程
学习路径
预设学习计划、达成学习目标
知识图谱
综合了解技术体系知识点
课程库
快速筛选、搜索相关课程
视频学习
专业视频分享技术知识
电子文档
快速搜索阅览技术文档
文档
问答
服务
智能助手小墨
关于数据库相关的问题,您都可以问我
数据库巡检平台
脚本采集百余项,在线智能分析总结
SQLRUN
在线数据库即时SQL运行平台
数据库实训平台
实操环境、开箱即用、一键连接
数据库管理服务
汇聚顶级数据库专家,具备多数据库运维能力
数据库百科
核心案例
行业报告
月度解读
大事记
产业图谱
我的订单
登录后可立即获得以下权益
免费培训课程
收藏优质文章
疑难问题解答
下载专业文档
签到免费抽奖
提升成长等级
立即登录
登录
注册
登录
注册
首页
资讯
活动
大会
课程
文档
排行
问答
我的订单
首页
专家团队
智能助手
在线工具
SQLRUN
在线数据库即时SQL运行平台
数据库在线实训平台
实操环境、开箱即用、一键连接
AWR分析
上传AWR报告,查看分析结果
SQL格式化
快速格式化绝大多数SQL语句
SQL审核
审核编写规范,提升执行效率
PLSQL解密
解密超4000字符的PL/SQL语句
OraC函数
查询Oracle C 函数的详细描述
智能助手小墨
关于数据库相关的问题,您都可以问我
精选案例
新闻资讯
云市场
登录后可立即获得以下权益
免费培训课程
收藏优质文章
疑难问题解答
下载专业文档
签到免费抽奖
提升成长等级
立即登录
登录
注册
登录
注册
首页
专家团队
智能助手
精选案例
新闻资讯
云市场
微信扫码
复制链接
新浪微博
分享数说
采集到收藏夹
分享到数说
首页
/
第二讲:变量的作用范围(域)的详细解读
第二讲:变量的作用范围(域)的详细解读
VBA语言専攻
2023-04-08
140
【分享成果,随喜正能量】得到需要的,是福;过多的贪求,反累。人生的需求如同吃饭,只能吃两碗的饭量,如果贪图饭菜的美味多吃两碗,不但不能正常享受多吃的好处,相反,倒会因为胃承受不了而带来痛苦。可见,非分的贪婪,得到未必就是享受。只会徒增烦恼与业力。。
《VBA中类的解读及应用》教程【10165646】是我推出的第五套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。
类,是非常抽象的,更具研究的价值。随着我们学习、应用VBA的深入,有必要理解这些抽象的理论知识。对象,类,过程,方法,属性,事件,接口,接口如何实现等等。掌握了这些理论,不仅对于VBA这种寄生语言的实质有所深入的理解,也对自然界的很多事物将同样有所感悟。目前,这套教程程序文件已经通过32位,64位两种office系统测试。
这套教程共两册,八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是:第二讲:变量的作用范围(域)的详细解读
第二讲 变量的作用范围(域)的详细解读
大家好,今天继续讲解VBA中类的解读及应用,今日讲解第2讲:变量的作用范围(域)的详细解读。当你深入地学习VBA后,会发现VBA涉及到的内容非常之多,我们这讲讲解的是变量,在简单的VBA代码中你或许可以不必考虑变量的作用范围,但如果你做一个大型的程序,需要涉及到各个知识点的时候,就必须要考虑变量的作用范围了。
变量,因为声明的位置和方式不同,有着不同的作用范围,或者叫作用域。作用域是指变量在多大范围内能被代码识别。根据作用的范围不同,可以划分为过程级、模块级和全局变量。
1 过程级变量
在过程中声明,过程指的是一个Sub或Function,也包括后面提到的属性过程。通常用Dim或Static进行变量声明。
1) Dim声明的变量,只在该过程执行时存在,过程结束,变量的值也就消失了。
2) Static声明的变量称为静态变量,这个值在整个程序运行期间都存在。
理解其中的含义:
① [Dim] 是动态变量,过程一旦结束,该变量所占有的内存就会被系统回收,而变量所储存的数据就会被破坏。
② [Static] 是静态变量,这意味着在过程结束后这个变量所占有的内存不会被回收,数据当然也不会被破坏了,这样当你下次再调用该过程的时候,数据就依然存在。
2 模块级变量
对命名变量的整个模块所有过程都有效,对其它模块不可用。可以在模块顶部声明。
声明模块级变量用Private关键字和直接使用Dim没有区别。但推荐使用Private进行声明,这样可以与后面的全局变量区分开来。
3 全局变量
是对整个VBA工程的所有过程都有效的变量,使用Public关键字在标准模块的顶部来声明。
理解Public和Private的含义:
① [Public] 是公共变量,如果在一个模块当中使用,那么整个应用程序都能使用它所定义的变量,如果在类中使用,那么它就是一个共有属性。
② [Private] 是私有变量,如果在一个模块中使用,那么只有这个模块才能访问到它所定义的变量,如果在类中使用,那么它就是一个私有属性。
本讲用到的测试代码:
Sub mynzclass2_1() '第2讲变量的作用范围
Dim K As Integer
Static ZZZ As Integer
K = K + 1
ZZZ = ZZZ + 1
VVV = VVV + 1
YYY = YYY + 1
MsgBox "过程变量K值为: " & K & Chr(10) & "过程级别静态变量ZZZ值为:" & ZZZ & Chr(10) & "全局变量VVV值为:" & VVV & Chr(10) & "模块变量YYY值为:" & YYY
End Sub
Sub mynzclass2_2() '第2讲变量的作用范围
Dim K As Integer
Static ZZZ As Integer
K = K + 1
ZZZ = ZZZ + 1
VVV = VVV + 1
YYY = YYY + 1
MsgBox "过程变量K值为: " & K & Chr(10) & "过程级别静态变量ZZZ值为:" & ZZZ & Chr(10) & "全局变量VVV值为:" & VVV & Chr(10) & "模块变量YYY值为:" & YYY
End Sub
Sub mynzclass2_3() '第2讲 变量的作用范围
Dim K As Integer
Static ZZZ As Integer
K = K + 1
ZZZ = ZZZ + 1
VVV = VVV + 1
YYY = YYY + 1
MsgBox "过程变量K值为: " & K & Chr(10) & "过程级别静态变量ZZZ值为:" & ZZZ & Chr(10) & "全局变量VVV值为:" & VVV & Chr(10) & "模块变量YYY值为:" & YYY
End Sub
代码截图:在两个模块中我分别加入了过程Sub mynzclass2_1() Sub mynzclass2_2() Sub mynzclass2_3();同时在模块1的开始定义了全局变量VVV和模块变量YYY
这讲的内容比较有意思,下面我们看代码的运行:在工作表中,我分别给出了执行上述三个过程的按钮,我们每个按钮都执行一次看看结果:
我们仅对最后一次的结果进行分析:在最后一次点击按钮时,K是过程变量,为1;ZZZ已经在内存中存在,已经存在数值为1再加上1为2;VVV是全局变量,这是第四次执行所以是4;yyy 是模块级别变量,由于在模块1中是执行的第三次操作,所以是3。读者可以试着自己分析一下上述的结果。
今日内容回向:
1 DIM 、Static、Public、Private 含义是否理解?
2 上面再次点击第三个按钮的结果,请分析。
本讲内容参考程序文件:VBA-CLASS(1-28).xlsm
我20多年的VBA实践经验,全部浓缩在下面的各个教程中
:
【分享成果,随喜正能量】不要和别人攀比,学会不贪婪,不奢求,平和宁静,知足常乐。报一颗平常心,做自己能掌控的事,赚自己认知范围内的钱。不要报有天上会掉馅饼的想法,这是赌博人生,活在幻想世界里的人,终其一生只会碌碌无为,福慧没能积攒,修行没有进步,生死之轮又如何能解脱。。
vba
静态变量
变量
sub
文章转载自
VBA语言専攻
,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
领墨值
有奖问卷
意见反馈
客服小墨