分享

别怕,Excel VBA其实很简单(三)

 月球流氓兔 2015-01-03


各位表亲好,前些时间在咱们微信内容中,初步认识了VBA与宏,以及VBE的概念,(如果您还没有看到这些内容,只要回复数字 29 就可以了)今天继续来学习VBA的知识。

VBA过程

================

一个过程就是执行某些动作的代码组合。

VBA过程分Sub过程和Function过程。

1Sub过程总是以“sub过程名()”开头,以“EndSub”结尾,一个过程就是执行某项动作的一套指令,Sub过程不返回运行的结果。

2Function总是以“Function程序名()”开头,以“EndFunction”结尾,和Sub过程的区别是Function过程返回程序运行的值,值可以是一个值或一个数组,就像我们的工作表函数,Function过程也就是我们说的自定义函数。

在这里,叶枫主要要给大家讲的是Sub过程,Function过程如果需要的话,在后面我们再讲。结合前两期的内容,相信大家对VBA应该已有一个简单的认识了吧?

要设计一个过程,其实很简单,把需要的对象收集起来,看看我们要对他们的属性进行怎样的修改?我们需要做什么?需要用什么样的方法?要用哪些事件?收集起来就是一个完整的过程。

只要你肯动手,一定会觉得很简单,你不要被那一大堆的对象、属性、方法和事件给吓晕了,完全不必全部记住它们,需要的时候知道在哪里找就行,而代码也不必一个一个的去输入,还记得前面一贴我们说的录制宏吗?当你需要进行某项操作的时候,不妨先录一段宏,但是宏是呆板的,有许多我们不需要的东西,给它修修枝,剪剪叶,整理整理,一个程序就OK了。

同时,建议你在VBE窗口中,单击“工具——选项”,在弹出的“选项”对话框里勾选“自动列出成员”。

设置好后,试着在代码窗口里输入点代码,看看,有什么?呵呵......,不用我说了,对于初学的我们,很需要它吧?

了解了对象,属性,方法及事件后,猪八戒按门铃开门的过程我们都可以把它写成程序:

Sub门铃_单击()

如果嫦娥.位置=在家那么门.

Endsub

上面这个并不是真的程序,但都有了程序的思想了,程序里,事件、对象、属性及过程都有了,你能找出来吗?

多尝试,温故知新,你可以想着用程序去解决一些你在使用Excel过程中遇到的问题,每一个问题的解决,你都会发现自己得到了很大的进步.

好了,还是那句话,路在脚下,继续走,精彩会慢慢为你上演,让我们一起努力,共同进步。

在上面,我们简单介绍了VBA的开发环境、几个常用的窗口,并对对象、对象的属性、对象的方法、对象的事件等概念作了简单的介绍,贴子大家认真看了吗?有没有一点点的收获?学习成绩如何?

什么是对象?什么是集合?什么是属性?什么是方法?什么是事件?如何正确地表示它们?

这些,你都能回答了吗?

先沉思三秒钟,如果你不能回答,那请赶快回过头去,再看一遍,我们说VBA是采用面向对象的程序设计方式,这些都是很重要的概念,如果不弄清楚,实际应用时,你可能会感到手忙脚乱。

如果已经掌握了,那让我们一起继续本贴的内容。

这次,我们将继续单调的基本功练习,讲一些VBA里面的关键字,为程序设计打下基础,还是那句话,希望你不要嫌内容的单调,一口你永远也吞不下一个大胖子,学习是一个循序渐进的过程。

数据类型、变量、常量、数组

VBA的主要目的是什么?不用说了你也知道,当然是处理数据。某些数据存在于对象中,如工作表的单元格区域里,某些数据存在于我们自定义的变量中。


1、数据类型

数据类型告诉计算机如何将数据存储在内存中,如以整数、字符串、日期等。

数据类型是变量的特性,数据类型包括:

ByteBooleanIntegerLong(长整型)Single (单精度浮点型)Double (双精度浮点型)Currency(变比整型)DecimalDateObjectString(变长)String(定长)Variant(数字)Variant(字符)以及用户自定义。


2、变量

变量是用于保存在程序运行过程中需要临时保存的值或对象。就相当于我们在操作工作表的时候插入的辅助单元格、辅助列或辅助表一样。

同工作表的单元格一样,变量可以接纳很多种的数据类型,如其名,程序运行后,变量的值是可以改变的。

如何定义变量?

定义变量可以使用Dim语句:

Dim变量名As数据类型

变量名有一定的命名规则,这里我就不详细说明了,需要提醒的是在程序的设计过程中,你可能会定义很多的变量,为了阅读及修改程序的方便,你定义的变量名尽量能让人一看就明白这个变量具体代表的是什么。Dim语句中,我们可以不必声明变量的数据类型,直接输入“Dim变量名”此时定义的变量将被指定为Variant类型

但我们在程序设计的过程中,一般应该明确数据的类型,这是一个好的编程习惯,因为指定数据类型后会提高程序的运行速度。

我们可以在模块中输入“OptionExplict”作为第一句语句来强制声明所有变量。也可以点“工具——选项”,在选项对话框里勾选“要求声明变量”。这样,VBA在遇到没有声明的变量名称,该语句将导致程序停止。

定义变量除了可以使用Dim语句外,比较常的还有:static语句,Private语句,Public语句。使用不同的语句定义的变量不同的是它们的作用作用域不同,具体为:

1)如果在一个过程中包含了一个DimStatic语句,此时声明的变量作用域为此过程,即本地变量

2)如果在一个模块的第一个过程之前包含了DimPrvate语句,此时声明的变量作用域为此模块里所有的过程,也就是在此模块里所有的过程都可以使用它,即模块作用域下的变量

3)如果在一个模块的第一个过程之前包含了Public语名,此时声明的变量作用域为所有模块,即公有变量

变量的作用域是指变量保留其值的这段时间,也称为变量的生成周期,它决定变量可以用于哪个模块或过程中。

给变量赋值

用等号(=)是VBA里的赋值运算符。

比如我们把'我在学习VBA变量!'这个字符串赋给变量A,则直接输入:

A='我在学习VBA变量!'

对了,你可以在立即窗口里试一下逐条输入:

A='我在学习VBA变量!'

MgboxA

看一下效果。

注意,在VBA里文本是要用英语引号引起来的,还有日期要用#号,比如将日期2009-3-10赋给变量A,则为:

A=#2009-3-10#


3、常量

执行过程时,变量的值会发生改变,所以我们称它为“变量”,但有时候我们需要引用不会发生变化的数据,这就是常量。常量声明后,不以对它进行再赋值。

声明常量设定常量的值,需要用Const语句:

Const常量名As数据类型=常量的值


4、数组

除了变量和常量以外,数组也是我们常用到的。

什么是数组?

数组是具有相同数据类型并且共享一个名字的一组变量的集合。数组也是变量。

数组中的元素通过索引数字加以区分。

如何声明数组?

可以用Dim语句或者Public语句声明数组。

Dim/Public数组名(atob)as数据类型

ab是数组中元素的个数,数组元素素最小值为a,最大值为b,元素个数为(b-a+1)个,当然,你也可以直接输入个数,此时默认最小索引号为0

:Dimmyarr(5)AsInteger

这个数组的最小元素索引号为0,元素个数为6

上面定义的只是一维数组,你还可以定义二维、三维、四维…….

:Dimmyarr(1to5,1to10)AsInteger

这就是一个二维数组,元素个数为5*1050个。

在程序设计的过程中,定义数组的时候我们可能不能确定数组的元素个数,对数组进行声明后,可以在运行时用ReDim语句重新指定数组的大小。


今天的这一部分内容实在很枯燥,连叶枫都有点耐不住了,拉拉杂杂说了这么多,也不知道你看出点门道没?同前一贴讲的内容一样,这些基础都是非常重要的,多读几遍,扎好马才能修练更高深的武功,千万别嫌这个过程的漫长。

一个让你心仪的女孩子,想牵上她的小手,徜徉在公园里的林荫小道上,先前的送花、打电话等等那一串串巴结的行动你会不会嫌太漫长?

VBA不像函数那样直面我们,它躲在Excel的背后,像一个“养在深闺未得见”的美丽姑娘,她飘在墙角的那缕模糊却美丽的身影对我们充满了诱惑,现在我们正在想法设法寻找她的联系电话,要想成功俘虏她,这一步能少吗?

看的没有动的快,动手操作才是学习的正确方法。发现问题,解决问题,这岂不是一个快乐的过程?

本期封面照片为畅销图书《别怕,Excel VBA其实很简单》作者ggsmart


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多