Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 17842|回复: 10

[分享] vba类模块浅显学习之一,定义变量与作用域

[复制链接]
发表于 2011-3-17 23:57 | 显示全部楼层 |阅读模式
本帖最后由 wbzxz 于 2011-4-16 08:27 编辑

在vba的入门过程中,学到了些皮毛,但是很多东西还是没有搞清楚。这两天试着了解类模块,发现自己的概念真的不清晰,连最简单的定义变量都没有搞清楚,试着翻看帮助,似乎理解了一下,但是不知道理解的对不对,书写下来,请各位老师指出我的错误与不足。
之所以要搞清楚定义变量与作用域,是因为如果你不搞清楚这个,在类模块的学习中,你会思路很混乱。

我仅仅是写出浅显的我的理解,肯定有很多不足,请大家帮我指出,我会慢慢修改,以免误导初学vba的童鞋。

1.定义变量有四个语句:Public,Private,Dim,Static

2.每种语句定义的变量适用于不同的范围(作用域),这些范围包括哪些:
   第一级:工程(VBAPorject)
   第二级:Microsoft Excel 对象,模块,窗体,类模块
   第三级:过程

   每一级都含有下一级的内容

3.每种语句应该写在什么位置呢?对哪些范围(作用域)有效呢?

  (1) Public:声明于模块或是类模块中,定义公有变量,可用于工程中的任何过程。
       如果你想在过程中使用Public语句定义变量,对不起,会报错的,下面是错误代码
      
  1. sub test()
  2.   Public a as string
  3. end sub
复制代码
     为什么会出错呢,因为你把他写在了过程中,如果写在过程之外,就不会出现错误,但是记住,一定是在模块和类模块中去声明啊,不要声明到”Microsoft Excel 对象和窗体“中去;

  (2) Private:声明于模块中,定义私有变量,只能在包含其声明的模块中使用。
       他的作用范围就小了一些,只能在当前模块中用啦;同Public一样,你可不要把Private语句写到过程中去,否则就出错啦。

  (3) Dim:声明于模块或过程中,定义私有变量。在模块级别中用 Dim 声明的变量,对该模块中的所有过程都是可用的;在过程级别中声明的变量,只在过程内是可用的。
      这个语句是我最常用的变量定义语句啦,因为我总是在过程中进行变量定义;dim确实使用起来比较宽松,因为他既能在模块级别定义,也能在过程级别定义。
      其实在模块级别中用Dim语句定义变量,和Private语句是一模一样的。

  (4) Static:声明于过程中,定义私有变量。
     我没有用过这个语句进行定义,也理解的不深入,只是把vba帮助的东西搬出来和大家共享。
     模块的代码开始运行后,使用 Static 语句声明的变量会一直保持其值,直至该模块复位或重新启动。可以在非静态的过程中使用 Static 语句显式声明只在该过程内可见,但具有与包含该过程定义的模块相同生命期的变量。
     不要把Static语句写在过程之外,因为,会报错的。

写了这么多,也不知道说清楚了没有,错误和不足,请大家一定给我指出,非常感谢大家。

评分

参与人数 1 +30 收起 理由
兰色幻想 + 30 学习就是这样的,边学习边总结,很好!!

查看全部评分

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2011-3-18 23:29 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2011-3-19 11:35 | 显示全部楼层
嘿嘿,谢谢兰版指点,我慢慢的学习,请您多指点啊。
回复

使用道具 举报

发表于 2011-4-8 23:00 | 显示全部楼层
谢谢楼主分享
回复

使用道具 举报

发表于 2011-4-16 18:40 | 显示全部楼层
谢谢分享
正在学习类模块
回复

使用道具 举报

发表于 2014-12-11 21:39 | 显示全部楼层
看了一天vba类模块,也没有什么思路.
回复

使用道具 举报

匿名  发表于 2015-1-23 07:41
我是菜,看了文章,很有帮助,个人认为还是很详细的,且通俗易懂;关于static,我认为是定义 常量的。好象很多语言对常量都有特有的定义关键字。是不是?? ……。谢谢了。
回复

使用道具

发表于 2015-4-13 15:07 | 显示全部楼层
谢谢您,辛苦老师了!!!!
回复

使用道具 举报

发表于 2015-8-13 14:01 | 显示全部楼层
谢谢分享,写得易懂,正在学习类模块
回复

使用道具 举报

发表于 2016-10-17 15:50 | 显示全部楼层
static 是静态变量,const定以常理
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-2 10:18 , Processed in 0.314603 second(s), 8 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表