VBA入门指南文档格式.docx
- 文档编号:21391127
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:40
- 大小:642.84KB
VBA入门指南文档格式.docx
《VBA入门指南文档格式.docx》由会员分享,可在线阅读,更多相关《VBA入门指南文档格式.docx(40页珍藏版)》请在冰豆网上搜索。
更简单的方法是,通过【ALT】+【F11】的快捷键,打开VBA代码编辑窗口,看到了吧,原来代码就是藏在这里的哦~~~
怎么写代码呢?
你也太心急了点吧,你还没掌握命令、语法、关键字、对象、事件、属性等等内容,就想写代码?
一口是吃不成个胖子的,还是让我来带你先认识下这里的每个角落吧,就像进了一间陌生的屋子,总归每个角落都得转到吧?
最上面的几行,和EXCEL以及每一个微软平台下的应用程序都一样,总归是标题栏、菜单栏、工具栏等,接下来,看左边,有一个纵栏,写着“工程---VBAProject”,这里是工程资源管理窗口,里面通过树形列表展示了这个XLS文件(或者标准的应该叫“工作簿”)所包含的各个工作表对象以及工作簿对象本身。
有什么用呢?
你双击任何一个SHEET,比如SHEET1,试试?
是不是在右侧打开了一个文档编辑窗口?
那么你就能明白,如果是SHEET1的代码,就应该写在这里了,那么SHEET2的呢?
当然就写在双击SHEET2后打开的窗口里咯~那么SHEET3呢?
你烦不烦啊~~~人家都明白了!
!
再看看右侧的文档窗口吧,顶上有两个下拉列表框,一个写着“通用”,一个写着“声明”,什么东东啊?
左边的那个是对象列表框,可以让你选择在这个SHEET里面包含的所有对象,右边的那个是过程列表框,可以让你选择和左侧当前选中的对象关联的系统或自定义过程。
那么什么是对象?
什么又是过程呢?
今天没时间了,什么?
领导要我马上去开会?
不会加工资了吧?
哈哈,明天继续!
2、初识VBA(续)
看到这么多朋友的支持和期待,倍感压力啊!
怎么感觉写不好就对不起观众呢?
哎,书到用时方恨少,大家将就着看吧……
昨天我们在VBA代码编辑器里转了一圈,是不是有别有洞天的感觉啊?
可是,这里对于大家都是陌生的环境,到底该怎么用这里的每一个工具呢?
别心急,且听我慢慢道来。
在讲代码之前,我首先必须介绍一下OOP的概念和基本知识。
去去去,怎么你也学着那些教材里挑些专用名词来忽悠我们啊?
呵呵,因为这样才能体现作者,也就是本人的水平啊!
(别扔鸡蛋,说你呢!
下次不说了,还不行吗?
)所谓OOP就是指ObjectOrientedProgramming,即面向对象的程序设计方法,这种程序设计思想主要是相对于以前的面向过程的程序设计方法而言的。
下面我就给大家讲个故事,很久很久以前,写程序还是很专业很神秘的一种技术活,这个时候的程序员写出来的东西,是必须要按照他给你安排好的步骤来执行的,比方说,你运行一个程序,必须先输入一条打开数据表的命令,然后才能对这个数据表进行操作,否则就会报错,甚至对于有些设计不完善的程序就会崩溃。
这样写出来的程序一个是缺乏灵活性,难道作为用户就不能自己决定先浏览还是先打印?
另一方面,对于那时候写出来的程序,如果将来要修改或扩充功能,那将牵一发而动全身,也为在设计这些功能的时候是一步一步安排好的,如果要修改后面的步骤,必然会影响到前面的代码,这样导致了程序员非常累。
(所以高薪啊~~其实也不过是重复劳动,呵呵)。
后来,出来了一个聪明人,写出了一个叫“Smalltalk”的语言,这个语言本身并没有什么特别的地方,但其中其中表现出来的接近现实形态描述的对象思想却让整个软件设计理论提升了一个新的层次。
说这些和我有什么关系啊?
呵呵,下面的东西就和你有关了,也为现在的基于可视化架构的程序设计基本都引入了OOP的思想,所以如果你将OOP中最主要的概念搞清楚了,那么将对以后的学习奠定扎实的基础。
面向对象的程序设计思想中主要包含四个概念。
对象、事件、方法和属性。
别看这些概念这么复杂,我给大家举个例子就明白了。
对象是什么?
就像现实中看得见摸得着的东西一样,是实实在在的东西。
比如,一个苹果,就可以作为一个对象,围绕对象概念,延伸了一个“类”的概念,什么是类呢?
苹果就是一个类。
晕,刚才还说苹果是对象呢,怎么一会又成了类了?
其实作为类而言的苹果的概念,就是指区别于梨和橘子的苹果类的概念,而不是具体指某一个苹果。
红苹果、绿苹果都属于苹果这个类,哪怕烂苹果也是。
(别扔啊!
)我们在设计程序的时候,可以定义一个自己的类,这样以后要用到这类对象的时候,就可以通过这个类来派生出来,而不用每次都去写定义。
还有个好处是,以后修改对象属性的时候,就可以通过修改类的属性来达到同时修改通过这个类派生的所有对象的属性的目的。
对象的基本概念还有三个,属性、方法和事件。
苹果的颜色可以看作苹果这个对象的一个属性,苹果的大小也可以看作他的一个属性,你自己还能说出什么属性吗?
恩,重量、好坏、产地等等。
慢点,价格是不是啊?
这个问题留给大家思考吧。
从上面的例子可以看出,属性是描述对象在某一方面的特征的,通过不同属性的值就可以区别开不同的对象。
方法呢?
对于苹果来说“吃”就是方法,啥?
吃苹果也是方法?
恩,别馋啊,对苹果而言,吃就是方法,因为这个是可以作用于这个对象的,还能举个例子吗?
比方相对于表格对象的方法就可以是打开、关闭、修改等。
方法是用来作用于对象,使其产生某种变化的。
事件是什么呢?
事件就是被设计用来触发某些代码来自动执行的,这个就叫做事件驱动机制。
还记得刚才我们谈到的面向过程的程序设计方法的缺点吗?
对,代码的执行顺序是由设计者在设计时指定的。
这种吃力不讨好的事情,劝大家以后还是少做做。
我们有了事件驱动机制以后,这样的情况就可以避免了。
现在,可以通过将代码写在可能发生的事件中的办法,由用户决定啥时候运行这些代码,只要程序运行时,用户的操作行为触发了相应的事件,那么该事件中定义的代码,就会被自动执行了。
好了,该吃午饭了,有朋友回复说最好图文并茂,现在讲的是理论,在以后讲到代码时候,会加上插图和动画的。
明天见!
3、便于对“类”进行理解的只言片语
类是抽象的,不仅仅在程序中有,生活中到处都是。
你的衣服是按照春夏秋冬分门别类整理存放的,到超市购物,商品也是按各种大类,小类摆放的
类就是分类、种类的意思。
类是人为的、按照一定的特性进行区分的一组对象(大白话就是“东西”)
你我也都是一“类”
生物类--》动物类--》人类--》会使用电脑的那一类人--》会用EXCEL的一类人--》上EH的一类人
类还可以设计,创建,重复使用,这回不拿人说事了拿电脑吧
电脑粗分一下台式机、笔记本。
但是电脑都没有点烟(就是汽车上的点烟器)这个功能,但是我需要这样一个电脑,于是我就设想有这么一台,并且做了简单的设计图纸。
于是一个新类---点烟电脑就设计好了(这就等于在类模块中写代码),
现在“点烟电脑”还只处于设计图纸中,我要想使用就必须创建,我把图纸交给厂家,厂家按设计图生产。
这我才能使用(这就等于用NEW关键字实体化一个类)。
我的朋友也想要一个点烟电脑,我就不用再设计了,直接叫厂家再生产一个就行了(再NEW一个,类的重复使用)。
整个过程当中设计图纸这一步是关键(在类模块中写代码)。
整个Windows系统中有很多种“类”,用于实现各种功能。
VBA可以直接调用。
但有些功能是我们自己想出来的,我们就只有设计一个新类,然后再调用。
谢谢LDY老师的精彩注释!
欢迎更多的版主、朋友发表自己的想法和见解。
快过年了,早晨去了趟超市,那个人叫挤啊!
本来想早点回来的,结果午饭到了2点才吃到。
打开电脑,看到好多朋友都在关心这个帖子,而且好几位朋友提出了自己的见解和疑惑,想到昨天讲了“类”,今天真的感到了好“累”。
因为大家都刚接触VBA,可能光听我介绍还没有直观的感受,为了帮助大家理解,下面先介绍两个方法,可以让大家看到更多的东西。
首先要介绍的是对象浏览器。
打开这个对话框有三种方法。
(中国的教材和教育模式下的考试,最喜欢列举完成一件事情的方法,我就纳闷,只要能解决问题,知道了一条路,干嘛还要打破沙锅问到底?
)一个是通过【视图】菜单的【对象浏览器】项目,另一个是在工具栏上点击【对象浏览器】按钮。
最方便的是按【F2】快捷键。
打开了以后,大家看到了一个新的窗口,这里列举了三种信息,最上面的部分是用来搜索和查找信息的,中间的部分分了三栏来分别列举“库”、“类”和“成员”信息。
最下面是提示和说明部分,用来说明当前选中对象的信息。
为什么要介绍对象浏览器呢?
大家通过这个工具可以搜索到和EXCEL以及VBA有关的各种各样的“类”和“对象”。
顺便说一下,这里说的“成员”基本相当于对象、属性、方法和事件;
类是成员的上级;
很多类又组成了一个类库,在这里叫做“库”。
以后大家如果有不明白的类,就可以在这里找到这个类有哪些对象、属性、方法和事件,以及他们之间是什么层级关系。
其次,简单介绍下如何使用帮助。
其实按照微软的体系,VBA的帮助包括了两个部分,一个是本地脱机帮助,也就是安装完OFFICE软件就自带的帮助,这里只是简单的介绍了VBA的基本信息。
另一个部分则被微软放在了MSDN里面,这是微软单独提供给微软平台的开发人员的独立帮助工具,其中包含了非常详细的各种编程信息、技巧和案例。
通过仔细研读MSDN里的内容,可以快速掌握之前不了解的编程知识,并且MSDN总是被微软的工程师们不断更新并保持着最新的状态。
下面,我们就继续昨天的内容,接着讲面向对象的编程。
什么?
昨天的已经都忘记了?
那就先回头去看看再继续吧。
今天主要给大家介绍VBA中最常用到的一些关键字。
什么是关键字,关键字就是那些在OFFICE软件里已经被定义好了特定含义和用法的字符串。
比方说,“IF”这个字符串,表示“如果”的意思,在VBA里用来表示条件语句的起始,那么关键字和普通字符串有什么区别呢?
关键字被规定为不可以用来表示变量名、过程名、函数名等用户定义的信息,只能根据系统规定的含义使用。
也就是说,你如果有个变量起个名字叫“IF”,你写一条赋值语句“IF=1”,这样系统在编译的时候就会提示一个错误,而不能通过编译和运行。
想看看VBA里一共有多少个关键字吗?
从明天开始,我们将开始一一给大伙讲解,欢迎继续关注。
对于VBA,我觉得比较烦的一点儿是:
对里面的对象(类)的用法不大好自学与理解。
原有的帮助常常是分断的、原则性的,缺乏针对性。
没有一个系统的、全面的、有较强针对性的帮助内容!
或许找一本书来看,您会发现:
书的知识还不如帮助呢!
所以至今还未深入学习VBA。
4、【2009.1.19】代码起步——关键字
“同学们好!
”,“老——师——好——”,“请坐下,把书翻到25页,今天我们讲......”,才三岁的儿子已经开始模仿和憧憬着学校的生活了~~哈哈,当我们回忆起儿时上课的情景,亲切吧?
那就让我们重温一下这份感受吧。
今天开始,我们将正式进入代码的学习阶段。
我多年以来的授课经验告诉我,学代码应该从关键字开始。
下面列举了一些常见的关键字给大家先了解下。
【框架类关键字】
工程(Project):
是指用于创建一个应用程序的文件的集合。
对象(Object):
可控制的某个东西,例如窗体和控件。
窗体(Form):
应用程序的用户界面。
控件(Control):
指的是各种按钮、标签、文本框等。
属性(Property):
是指对象的特征,如大小、标题或颜色。
工作表(Worksheet):
指EXCEL文件里的工作表,例如sheet1、sheet2等。
模块(Module):
指在VBA工程中存放独立于用户定义对象代码的容器。
过程(Sub):
容纳和组织代码的限定符号,一般和EndSub联用,不返回结果。
函数(Function):
容纳和组织代码的限定符号,一般和EndFunction联用,并返回结果。
【控件类关键字】
标签(Label):
用来显示文本。
文本框(Textbox):
用来提供给用户输入文本。
命令按钮(CommandButton):
用来组织和提供程序功能。
列表框(ListBox):
用来提供给用户选择列表中的数据。
组合框(ComboBox):
用来提供给用户下拉选择列表中的数据。
选项按钮(OptionButton):
用来提供给用户指定单项数据,一般成组使用。
复选框(CheckBox):
用来提供给用户指定多项数据,一般成组使用。
【声明类关键字】
Public:
声明公共类型的数据;
Private:
声明私有类型的数据;
Static:
声明静态类型的数据;
Dim:
声明数据类型;
如:
DimmyCellAsRange
reDim:
定义未显式声明的数组的维数和元素;
Const:
声明常量数据;
ConstlimitAsInteger=33
As:
一般用于声明数据类型中的“AsType”子句;
Type:
声明用户自定义数据类型;
【数据类型关键字】
Byte:
字节类型;
Integer:
整型数值类型;
Long:
长整型数值类型;
String:
字符串类型;
Boolean:
逻辑类型;
Single:
单精度类型;
Double:
双精度类型;
Currency:
货币数值类型;
Decimal:
可以容纳小数的数值类型;
Variant:
任何数字值或字符串值;
Object:
对象类型;
用户自定义:
利用TYPE语句由用户自己定义的数据类型。
【运算符关键字】
这类关键字太多了,而且有很多种分类方法,比如按参数个数分为单目运算符、双目运算符、三目运算符和多目运算符等,按参与运算的参数类型可以分为数值运算符、字符运算符、逻辑运算符、日期运算符、字节运算符等,按照运算符的作用范围可以分为过程级运算符、函数级运算符和模块级运算符。
【程序结构类】
IF...ELSE...ENDIF:
分支判断选择语句;
DOWHILE...LOOP:
先判断后执行循环语句;
DO...LOOPWHILE:
先执行后判断循环语句;
FOR...NEXT:
限定次数循环语句;
GOTO...:
无条件转移语句。
一下子列举了这么多的关键字,是不是眼睛都花了?
是不是对这些关键字还是没搞明白该怎么用?
没关系,下面就给大家一一介绍。
哎呀,今天的时间又快到了,明天继续吧,别换频道啊~~
4、【2009.1.20】代码起步——关键字(续)
大伙的热情支持,真的让我很感动,提出的很多建议对我也非常有启发,今后的帖子里将会不断吸收各位的好的意见和建议,尽我所能把这篇入门指南写好。
什么今天讲?
不,今天讲什么?
哎太过激动以至于有点语无伦次了。
对了,今天先说说框架类关键字。
列举如下:
【框架类关键字】
工程(Project):
对象(Object):
窗体(Form):
控件(Control):
属性(Property):
工作表(Worksheet):
模块(Module):
过程(Sub):
函数(Function):
记得我在学写程序的时候(那是很久很久以前的事情了),我最怕的就是看到这些E文字母。
我经常去看HELP里面的例子,然而那里面居然连变量和过程的名字都是很长的E文。
没办法,谁叫人家微软是美国公司呢!
(记得之前有过几个用中文写程序的编辑器,甚至还热过一阵某语言,但随着时间的流逝,好像现在也不知去向了......)那么怎么样才能记住这些又长又难记的单词呢?
不用记,你如果用VBA编程,你会发现只要你输入了正确的第一个关键字之后,可以通过支持VBA语言的编辑器自动提示输入接下来的单词,是不是很简单啊~其实多使用几次,你也就记住了。
还有一个可以判断是否输入正确的方法,就是你总是用小写字母书写关键字,如果正确,编辑器会自动修正你录入的关键字的第一个字母为大写。
Project,中文翻译为工程、项目等。
这个关键字在VBA中表示一个工作簿所关联的代码的总容器。
所有和这个工作簿(XLS文件)关联的代码,都装在这个容器里。
但这个容器不仅仅装代码,还能装好多东西,比如工作表、模块、过程、函数等。
那么这个容器是不是一个对象呢?
请大家结合前面的讲解思考下这个问题?
答案是肯定的。
(如果你答错了,请接着往下看;
否则请跳过下一段。
Object,对象,实体。
在VBA中,工程、窗体、控件、工作表、模块等无一不是对象,因为这些都是实体,具备了独立存在的所有条件。
比如,我问你书是对象嘛?
是,因为书可以独立存在。
那么颜色是对象嘛?
不是,因为你无法单单拿出来一个叫“颜色”的东西,它只能作为其他东西的一种属性而存在。
同样,工程,在VBA中是独立存在的,可以作为对象来看待。
窗体、控件、工作表、模块也是一样。
还有个小提示给大家,大家以后看到代码中某个对象名称后面跟了个S,在E文里应该表示复数,即多于一个的意思。
那么在VBA中表示什么意思呢?
表示多个对象放在一起,我们给它们一个名字叫“集合”。
集合是对象嘛?
不是,是多个对象放在一起。
这个千万要注意,因为中文是没有复数的表示方法的,所以不能理解为“一个人是人嘛?
是;
一群人是人嘛?
当然是!
”,那就错了,在VBA里“一群人”不是人,是人的集合!
那么你可能又会将集合同我们之前讲的“类”搞在一起了,类是对象的抽象,还拿书做例子,一本实实在在的书是一个对象,它可能是文学书,也可能是计算机书,当然可能是红色的,也可能是绿色的。
而如果你脱离了具体的书而说“书”的概念,那么这时就指书这个类了。
一个典型的例子是来自于生物界的分类。
比如某只麻雀和某只鸽子,都是具体对象,而麻雀和鸽子都可以作为独立的一类鸟这个概念来描述,这时应该说成是麻雀类和鸽子类,同时它们又都属于鸟类这个概念,所以在类这个东西里,是可以分很多层次的,但除非具体到某一只鸟,不然就都是类的概念,而不是对象。
集合呢?
一群麻雀或者一群鸽子,就是集合,因为它们是由具体的很多只麻雀或鸽子组成的。
干嘛费那么大劲说这些概念呢?
可能你听得都快睡着了。
但我还是要说,因为如果你不弄清楚类、对象和集合等概念,那么在以后写代码的时候,你就会犯糊涂,“怎么我写了一个‘对象’,就是不能用它的某个属性或方法呢?
”,其实,很有可能你把对象写成了类或集合,因为他们就差一点点。
(比如Row可以作为一个类,也可以作为一个对象,就看你如何声明它,同时,Rows就是一个集合)。
我还要讲一下如何使用类、对象和集合。
类一般在声明部分使用,比如DIMAAsRange,这里Range就表示“行”这个“范围”类,而A被声明为属于“行”这个类的类型的变量,换句话说,A在经过这样的声明以后,就可以用来引用某个具体的行对象了。
比如SetA=Sheet1.rows
(1)。
那么这时,A就可以代表第一行这个对象了。
这里的ROWS代表Sheet1的所有行对象的集合。
一般集合有一个属性,叫做COUNT,表示在这个集合中的对象的个数。
同时,要用集合表示具体对象时,要在集合名称后加上一对括号,里面填写对象的索引值或名称。
Form,窗体。
你一般在Windows里运行的程序,都具备可视化的功能。
那么这就是Form的功劳。
通过引用FORM对象,你可以对这个工程里的一些窗体进行属性的设置、事件的定义以及运行某些方法。
Control,控件。
它们可以装饰你的窗体,并在窗体中提供用户各种功能。
从某种意义上讲,窗体也可以看做是控件的容器。
Worksheet,工作表。
通过引用这个对象,可以对工作表以及下级对象的属性进行设置、事件进行定义、方法进行执行。
Module,模块。
如果你想定义一些变量、过程或函数,并且想在各个对象(比如Sheet1、Sheet2等)中都能使用,并且可以互相传递值。
那么就应该将这些声明或代码写在模块中。
详细的以后用到再详述。
以上讲的都是对象,请大家参考对象的用法,具体操作一下如何声明、如何引用它们。
至于如何通过对象设置属性、定义事件和执行方法,我们在具体讲解各类对象的时候再详细阐述。
Sub,过程。
Function,函数。
这两个概念,本来应该在代码里讲的,这里只是提示一下。
大家只要明白一个概念,除声明语句外其他代码都应该放在这两种容器内。
Property,属性。
最后讲讲这个。
还记得上面讲到的对象的声明和引用的例子吗?
刚讲过,应该不会忘吧,否则应该回头重新看下这篇文章了。
现在,A已经被声明为一个Range类对象,并且已经赋予A引用为Sheet1的第一行了。
那么如果想对Sheet1表的第一行设置为值都等于0,应该如何做呢?
其实只要对Range类对象的一个Value属性
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VBA 入门 指南