界面,单击控件工具箱的左侧第一个按钮,即退出设计模式。这时候,在A1单元格输入一个值后,只要按一下命令按钮,在文本框中就会出现A1单元格的值。
由于时间关系,今天只是简要的讲述了一些常见控件的常见属性、方法和事件,至于其他一些控件和大家以后遇到的新的控件的属性、事件和方法,可以参照我上面讲述的过程和方法自己去学习、练习和使用。 明天继续。
【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 语句声明的变量的值,并且其生命周期与包含该过程定义的模块相同。从作用范围来讲,这类变量由于在过程级别的代码中被声明,因此其作用范围只是局限于其所在的过程内部。 如下图所示:
今天的内容可能比较枯燥,但绝对重要。正确理解声明类关键字的用法,对把握变量、过程、函数等对象的作用范围和生命周期有着非常总要的作用。希望今天的讲解能对大家正
确理解这部分关键字带来帮助。
“什么?要定年夜饭的菜单?这就来~~~”各位,明天见!
2009.1.27】代码起步——关键字(续)
小别数日,今日终于回来了。先给大伙道一声“新年好”!
早晨一早驱车三个多小时,赶到了孩子他外婆家。到达的时候已然到了中午,自然免不了应酬一番。喝了点小酒,一下午头都昏昏的。到此时日落西山,方突然想起年前许下的今日之约,立即开机上网、奋起疾书,至此,才有了下面的文字,望诸位海涵!
还记得年前我们说完了声明类关键字,今天我们要讲的是数据类型关键字,列举如下。 【数据类型关键字】 Byte:字节类型; Integer:整型数值类型; Long:长整型数值类型; String:字符串类型; Boolean:逻辑类型; Single:单精度类型; Double:双精度类型; Currency:货币数值类型;
Decimal:可以容纳小数的数值类型; Variant:任何数字值或字符串值; Object:对象类型;
用户自定义:利用TYPE语句由用户自己定义的数据类型。
首先,我们先谈谈VBA中大伙见到的文字有哪些。大家在VBA中能够见到的文字,除了之前列举的几大类关键字(保留字)外,就是些数据和注释了。注释是以西文半角方式的单引号开头的文字,在VBA编辑器里显示为绿色。这些字主要用来注释解说变量或代码的用途。数据则有很多种,这才是我们今天要讲的主要内容。在VBA中,数据按照形态大致分为三类,常量、变量和数组。常量就是指在程序中已经指定的值,并且常量的值在程序中保持不变。举个例子,我们声明一个常量名字叫“Name”,我们在可以在声明的时候直接赋予这个常量一个值比如“张三”。那么在这个程序里,我们就不用直接引用“张三”这个名字了,我们在需要引用的时候只要用Name这个常量就可以替代了。可能有的朋友会说,既然Name就是代表“张三”,那我们为什么不直接在程序里写“张三”呢?这里有这么几个原因。一是有可能直接使用“张三”不方便,如果起个有意义的名字更便于阅读和维护代码。二是如果以后需要修改程序,需要将程序中使用到“张三”的地方都改成“李四”,那么如果用引用一个常量的这种方式的话,就只需要修改Name这个常量的值就可以了。变量和常量有点类似,都是以一个名字来命名并赋予一个值给它,不同之处在于,常量的值在整个应用程序代码中
是不变的,而变量的值会随着代码位置的不同而发生变化。在这里提供一个小建议,在给变量起名字的时候最好起一些有意义的名字,否则在今后维护代码的时候会遇到困难。比如可以给整型变量加上INT的前缀,如果这个变量用来保存“编号”的,那么可以起这样的名字“INT_name”,如果是保存“生日”的日期型变量呢?可以这样起“DATE_birthday”,等等。再来说说数组,数组也是变量,不同之处是数组是一组变量的集合而不是单个变量。因此,数组一般由变量名和下标组成,例如:NAME(2)、k(5)等。数组按照下标的个数分为一维数组(只有一个下标)、二维数组(有两个下标)和多维数组(有多于2个下标)。除了普通变量能采用数组形式外,对象、控件、单元格等都可以采用数组的形式来表示。对于有规律的变量或对象采用数组的形式可以方便的配合循环语句来简化代码、提高执行效率,不过会占用更多的内存资源,因此是一种空间换时间的方法。
其次,在学习具体变量之前,我们还要谈谈计算机是如何保存和处理各类数据的。按照数据的种类和载体我们大致可以分为这么几类,数字、西文字符、中文字符、图形、动画、视频、音频等。这些数据在计算机中都被翻译为2进制来保存。比如数字,分为整形、浮点型、单精度、双精度、长整形等,按照2的N次幂的方法计算所能保存的最大数和最小数来确定范围;再比如数字型字符和西文字符,都是按照ASCII编码来保存的,一个字符占用一个字节(8位二进制);中文字符由于数量众多,就采用国际标准交换代码来保存,一个字符占用二个字节(16位二进制);图形、动画、视频和音频数据就更为复杂,一般通过引用(在变量中保存能找到这些数据的地址)的方法保存。
最后,我们来看看学习变量需要重点掌握哪些内容。一是要十分清楚每种变量类型所对应的取值范围。根据我们第二点讲解的计算机保存各类数据的方法,对应不同类别变量的取值范围是存在不同的。BYTE字节型变量,只能存放1个字节的内容,因此你不能将一个汉字字符保存到一个字节型变量中,也为一个汉字字符需要占用2个字节的空间,如果用BYTE型变量保存就会发生溢出错误。具体上述关键字所对应的每种变量的取值范围详见联机帮助。二是变量的本质是一块特定内存区域的名称,我们通过引用这个名称(即变量名)来使用这块系统分配给应用程序的特定内存存放数据。明白了这一点可以帮助我们更好地在程序中使用变量。三是变量的生存周期和作用范围。这点就是我们上一讲所重点讲述的内容。 今天太晚了,先简单谈几点吧,有关内容将在今后用到的时候详细表述。 【2009.1.29】代码起步——关键字(续)
今天一天都在带儿子,因为昨天老婆的腰闪了。哎,好在明天可以回自己家了,真是“归心似箭”啊~
今天是关键字的最后一讲,按照惯例,还是先将该类关键字列举如下: 【程序结构类】
IF...ELSE...END IF:分支判断选择语句; DO WHILE...LOOP:先判断后执行循环语句; DO...LOOP WHILE:先执行后判断循环语句;

