ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: yagi2008

[分享] VBA入门指南——献给在这里得到帮助但看不懂代码的朋友(已建电梯)

  [复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-1-22 16:52 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

【2009.1.22】代码起步——关键字(续)

本帖已被收录到知识树中,索引项:开发帮助和教程
新年的脚步离我们越来越近了,越是临近过年,事情就越忙,办年货、筹备年夜饭......好不容易跑出来写点东西,不知道一会还会有啥事等着我呢!
    不知道昨天讲的关于控件类的关键字大家有没有掌握,如果没搞清楚也没关系,我们接下来会专题详细讲解每一个控件的用法,只要大家耐心听下去。今天继续聊关键字的话题。今天要讲的是声明类关键字。先列示如下:
    【声明类关键字】
    Public:声明公共类型的数据;
    Private:声明私有类型的数据;
    Static:声明静态类型的数据;
    Dim:声明数据类型;如:Dim myCell As Range
    reDim:定义未显式声明的数组的维数和元素;
    Const:声明常量数据;如:Const limit As Integer = 33
    As:一般用于声明数据类型中的“As Type”子句;
    Type:声明用户自定义数据类型。
    考虑到该类关键字属于一个相互联系的整体,并且一般在写代码的时候都会遇到,因此我想分三个部分来讲解。首先我们先了解下VBA代码的语法结构。每一种编程语言都有各自的语法组织结构,什么内容就应该放在什么地方,就像人身上的“部件”,如果鼻子长到了眼睛的上面,那就不属于正常的人了。VBA代码一般都按照事件、过程、函数、模块、类模块等来组织,不管是系统内部定义好的还是开发人员自定义的过程、函数或模块,使用前都必须声明。声明也就是告诉VBA代码的编译器,我下面的程序中会用到这些变量、过程、函数和模块等。声明分两种,一种是显式声明,也就是将声明部分代码明确的写出来。另一种是非显式声明,意思正好和前一种相反。当您的模块中含有这条语句“Option Explicit”,那么系统就强制规定您必须显式声明该模块中的所有变量,否则将编译出错。如果没有出现上述语句,那么您可以在使用变量前不显式声明该变量,系统编译时将默认该变量类型为Variant。
    声明语句可以命名和定义过程、变量、数组以及常数。当声明一个过程、变量或常数时,也同时定义了它的作用范围,而此范围是取决于声明位置以及用什么关键字来声明它。这就是我要讲的第二个问题。先说声明的位置,如果你在某个工作表的某个过程中声明了一个变量或函数,那么这个变量或函数的作用范围就局限于这个过程;如果你在一个工作表的(通用)部分声明了一个变量或函数,那么这个变量或函数的作用范围就局限于该工作表代码模块中。这就表明声明的位置可以决定变量或函数的作用范围。除了声明位置外,采用哪个关键字也可以决定被声明对象的作用范围。比如,如果你在一个自定义模块中,采用PUBLIC这个关键字来声明一个变量,那么这个变量在所有应用程序的所有没有使用 Option Private Module 的模块的任何过程中都是可用的(若该模块使用了 Option Private Module,则该变量只是在其所属工程中是公用的)。而采用PRIVATE声明的变量,其作用范围就只有该模块内部,称为私有变量。上述两个关键字只能在模块级别代码中使用。(所谓模块级别就是只在过程外部的代码,即某个工作表的<通用>部分中写的代码,区别于过程级别的代码,即过程中书写的代码)除此以外,还有一个DIM关键字,用这个关键字可以在模块级别中声明变量,也可以在过程级别中声明的变量;前者声明的变量对该模块中的所有过程都是可用的,而后者则只在过程内是可用的。STATIC关键字是用来声明静态类型变量的,这是什么意思呢?举个例子你就清楚了,一般声明的过程级别变量,在程序代码运行完该过程之后,该变量的值就自动清空了,该变量也由于所在过程的运行完毕而结束了其生存周期。这样的过程级别的变量称为动态变量。那么有另外一种变量,虽然也是在过程级别中被声明的,但在该过程运行结束以后,该变量的值仍然保持不变,直至该变量所在过程所在的模块运行中止为止。这样的变量就叫做静态变量。静态变量只能在过程级别中使用,用于声明变量并分配存储空间。在整个代码运行期间都能保留使用 Static 语句声明的变量的值,并且其生命周期与包含该过程定义的模块相同。从作用范围来讲,这类变量由于在过程级别的代码中被声明,因此其作用范围只是局限于其所在的过程内部。
  如下图所示:
变量关系图.jpg
    今天的内容可能比较枯燥,但绝对重要。正确理解声明类关键字的用法,对把握变量、过程、函数等对象的作用范围和生命周期有着非常总要的作用。希望今天的讲解能对大家正确理解这部分关键字带来帮助。
    “什么?要定年夜饭的菜单?这就来~~~”各位,明天见!

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2009-1-23 10:56 | 显示全部楼层
先谢谢楼主的无私奉献,前面都好,希望能坚持下去。只是声明类关键字的讲解好生涩,搞不懂哦。

TA的精华主题

TA的得分主题

发表于 2009-1-23 11:14 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

回复 53楼 yagi2008 的帖子

楼主加油啊!今天等着你的更新

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-1-23 23:20 | 显示全部楼层
原帖由 天堂的孩子 于 2009-1-23 11:14 发表
楼主加油啊!今天等着你的更新


不好意思,让大家久等了,今天刚回到家,因为临近年关,很多事务需要处理,决定自今日(2009.1.23)至年初一(2009.1.26)暂停更新,2009年1月27日(年初二)起继续讲解,多谢大家的支持!!同时,给各位拜个早年,祝大家学习进步、事业兴旺、身体健康、万事如意!!!

TA的精华主题

TA的得分主题

发表于 2009-1-23 23:25 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
祝楼主新年快乐。

TA的精华主题

TA的得分主题

发表于 2009-1-24 00:08 | 显示全部楼层
谢谢楼主无私奉献,好贴学习了,同时祝楼主新年快乐

TA的精华主题

TA的得分主题

发表于 2009-1-24 12:54 | 显示全部楼层

祝楼主牛年快乐

牛牛牛
感谢楼主,祝楼主牛年更牛,多多发帖

TA的精华主题

TA的得分主题

发表于 2009-1-24 13:11 | 显示全部楼层

祝楼主牛年快乐

牛牛牛
感谢楼主,祝楼主牛年更牛,多多发帖

TA的精华主题

TA的得分主题

发表于 2009-1-24 15:41 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
祝楼主新年快乐。

TA的精华主题

TA的得分主题

发表于 2009-1-24 21:09 | 显示全部楼层
带上崇高的敬意,向楼主拜年啦!!!!!
祝愿楼主开的这个VB入门贴成为牛年里的最牛气的贴.
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-22 06:52 , Processed in 0.035251 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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