关闭

关闭

关闭

封号提示

内容

首页 VBA入门指南.doc

VBA入门指南.doc

VBA入门指南.doc

lvxinzhi411 2010-12-18 评分 0 浏览量 0 0 0 0 暂无简介 简介 举报

简介:本文档为《VBA入门指南doc》,可适用于IT/计算机领域,主题内容包含VBA入门指南献给在这里得到帮助但看不懂代码的朋友(已建电梯)VBA入门指南献给在这里得到帮助但看不懂代码的朋友(已建电梯)TOCo""hzuVBA符等。

VBA入门指南献给在这里得到帮助但看不懂代码的朋友(已建电梯)VBA入门指南献给在这里得到帮助但看不懂代码的朋友(已建电梯)TOCo""hzuVBA入门指南、【】初识VBA、初识VBA(续)、便于对“类”进行理解的只言片语、【】代码起步关键字、【】代码起步关键字(续)、【】代码起步关键字(续)、【】代码起步关键字(续)、【】代码起步关键字(续)、【】代码起步关键字(续)、【】代码起步关键字(续)、【】代码起步我的程序、【】代码起步我的程序(续)、【】代码起步我的程序(续)、【】代码起步我的程序(续)、【】代码起步我的程序(续)、【】代码起步我的程序(续)、【】代码起步我的程序(续)、【】代码起步我的程序(续)此为EXCELHOME的yagi先生在年年关不辞辛劳进行的教学成果,在此全面摘录下来,做成电子书,以方便大家yagi为了方便大家查看本教程特制作了索引:【】初识VBA  http:clubexcelhomenetviewthd=#pid【】初识VBA(续)http:clubexcelhomenetviewthd=#pid【】初识VBA(续)  http:clubexcelhomenetviewthd=#pid【】代码起步关键字  http:clubexcelhomenetviewthd=#pid【】代码起步关键字(续)  http:clubexcelhomenetviewthd=#pid【】代码起步关键字(续)  http:clubexcelhomenetviewthd=#pid【】代码起步关键字(续)  http:clubexcelhomenetviewthd=#pid【】代码起步关键字(续)  http:clubexcelhomenetviewthd=#pid【】代码起步关键字(续)  http:clubexcelhomenetviewthd=#pid【】代码起步关键字(续)  http:clubexcelhomenetviewthd=#pid【】代码起步我的程序  http:clubexcelhomenetviewthd=#pid【】代码起步我的程序(续)  http:clubexcelhomenetviewthd=#pid【】代码起步我的程序(续)  http:clubexcelhomenetviewthd=#pid【】代码起步我的程序(续) http:clubexcelhomenetviewthreadphptid=page=fromuid=#pid【】代码起步我的程序(续) http:clubexcelhomenetviewthreadphptid=page=fromuid=#pid【】代码起步我的程序(续) http:clubexcelhomenetviewthreadphptid=page=fromuid=#pid【】代码起步我的程序(续) http:clubexcelhomenetviewthreadphptid=page=fromuid=#pid      来这里几天了回复了一些帖子但仔细想想发现很多朋友虽然得到了版主、高手们的帮助也拿到了可以实现其所要求的功能的范例XLS文件但往往并不能理解其中的原理和代码更不能举一反三化为自己的东西加以应用。为了能体现“授人以鱼不如授人以渔”的技术共享精神特开此帖希望本帖的一些介绍能带着您进入VBA的大门。当然由于水平有限难免出现错误希望各位版主、高手们加以批评指正写在开贴之初!、【】初识VBA今天阳光明媚清晨刚到办公室泡好香茗一杯便开始构思该如何组织这篇帖子看来我是作好了打持久战的准备不管最终出来的是又臭又长的裹脚布还是无厘头的流水账只要能对您带来一点帮助或者乐趣我就很满意了。   既然题目是初识VBA那么我想先给大家一个直观的感受什么是VBA?往往在一些EXCEL的教材中都会讲:VBA是一种自动化语言,它可以使常用的程序自动化,可以创建自定义的解决方案。就我看书学习的经验来说我感到这样的定义式的描述带有很典型的中国式教材的风格然而却不能让人立即理解那么这样的定义有什么用呢?我给VBA下的定义是:VBA是一些代码的组合。可能这个定义没有上面教材的定义那么严谨和准确但我想你一看就应该能明白原来VBA就是写代码或者说就是写程序。(如果掌握了VBA居然我也能写程序了~~惊喜吧?)     那么你用了这么久的EXCEL可能从来没在EXCEL的XLS文件中看到过代码难道就写在单元格里?那我就带你去找找VBA的代码藏在哪里吧这也正式我今天要谈的第二个问题。当你打开一个EXCEL文件你只能看到由许多单元格组成的工作表这时你可以通过【视图】菜单的【工具栏】项目打开一个工具栏名字叫“控件工具箱”从左往右属第三个按钮名字叫“查看代码”点一下就可以打开VBA代码编辑窗口。更简单的方法是通过【ALT】【F】的快捷键打开VBA代码编辑窗口看到了吧原来代码就是藏在这里的哦~~~ 怎么写代码呢?你也太心急了点吧你还没掌握命令、语法、关键字、对象、事件、属性等等内容就想写代码?一口是吃不成个胖子的还是让我来带你先认识下这里的每个角落吧就像进了一间陌生的屋子总归每个角落都得转到吧?最上面的几行和EXCEL以及每一个微软平台下的应用程序都一样总归是标题栏、菜单栏、工具栏等接下来看左边有一个纵栏写着“工程VBAProject”这里是工程资源管理窗口里面通过树形列表展示了这个XLS文件(或者标准的应该叫“工作簿”)所包含的各个工作表对象以及工作簿对象本身。有什么用呢?你双击任何一个SHEET比如SHEET试试?是不是在右侧打开了一个文档编辑窗口?那么你就能明白如果是SHEET的代码就应该写在这里了那么SHEET的呢?当然就写在双击SHEET后打开的窗口里咯~那么SHEET呢?你烦不烦啊~~~人家都明白了!!!再看看右侧的文档窗口吧顶上有两个下拉列表框一个写着“通用”一个写着“声明”什么东东啊?左边的那个是对象列表框可以让你选择在这个SHEET里面包含的所有对象右边的那个是过程列表框可以让你选择和左侧当前选中的对象关联的系统或自定义过程。那么什么是对象?什么又是过程呢?今天没时间了什么?领导要我马上去开会?不会加工资了吧?哈哈明天继续!、初识VBA(续) 看到这么多朋友的支持和期待倍感压力啊!怎么感觉写不好就对不起观众呢?哎书到用时方恨少大家将就着看吧……    昨天我们在VBA代码编辑器里转了一圈是不是有别有洞天的感觉啊?可是这里对于大家都是陌生的环境到底该怎么用这里的每一个工具呢?别心急且听我慢慢道来。在讲代码之前我首先必须介绍一下OOP的概念和基本知识。去去去怎么你也学着那些教材里挑些专用名词来忽悠我们啊?呵呵因为这样才能体现作者也就是本人的水平啊!(别扔鸡蛋说你呢!下次不说了还不行吗?)所谓OOP就是指ObjectOrientedProgramming,即面向对象的程序设计方法这种程序设计思想主要是相对于以前的面向过程的程序设计方法而言的。下面我就给大家讲个故事很久很久以前写程序还是很专业很神秘的一种技术活这个时候的程序员写出来的东西是必须要按照他给你安排好的步骤来执行的比方说你运行一个程序必须先输入一条打开数据表的命令然后才能对这个数据表进行操作否则就会报错甚至对于有些设计不完善的程序就会崩溃。这样写出来的程序一个是缺乏灵活性难道作为用户就不能自己决定先浏览还是先打印?另一方面对于那时候写出来的程序如果将来要修改或扩充功能那将牵一发而动全身也为在设计这些功能的时候是一步一步安排好的如果要修改后面的步骤必然会影响到前面的代码这样导致了程序员非常累。(所以高薪啊~~其实也不过是重复劳动呵呵)。后来出来了一个聪明人写出了一个叫“Smalltalk”的语言这个语言本身并没有什么特别的地方但其中其中表现出来的接近现实形态描述的对象思想却让整个软件设计理论提升了一个新的层次。说这些和我有什么关系啊?呵呵下面的东西就和你有关了也为现在的基于可视化架构的程序设计基本都引入了OOP的思想所以如果你将OOP中最主要的概念搞清楚了那么将对以后的学习奠定扎实的基础。  面向对象的程序设计思想中主要包含四个概念。对象、事件、方法和属性。别看这些概念这么复杂我给大家举个例子就明白了。对象是什么?就像现实中看得见摸得着的东西一样是实实在在的东西。比如一个苹果就可以作为一个对象围绕对象概念延伸了一个“类”的概念什么是类呢?苹果就是一个类。晕刚才还说苹果是对象呢怎么一会又成了类了?其实作为类而言的苹果的概念就是指区别于梨和橘子的苹果类的概念而不是具体指某一个苹果。红苹果、绿苹果都属于苹果这个类哪怕烂苹果也是。(别扔啊!)我们在设计程序的时候可以定义一个自己的类这样以后要用到这类对象的时候就可以通过这个类来派生出来而不用每次都去写定义。还有个好处是以后修改对象属性的时候就可以通过修改类的属性来达到同时修改通过这个类派生的所有对象的属性的目的。对象的基本概念还有三个属性、方法和事件。苹果的颜色可以看作苹果这个对象的一个属性苹果的大小也可以看作他的一个属性你自己还能说出什么属性吗?恩重量、好坏、产地等等。慢点价格是不是啊?这个问题留给大家思考吧。从上面的例子可以看出属性是描述对象在某一方面的特征的通过不同属性的值就可以区别开不同的对象。方法呢?对于苹果来说“吃”就是方法啥吃苹果也是方法?恩别馋啊对苹果而言吃就是方法因为这个是可以作用于这个对象的还能举个例子吗?比方相对于表格对象的方法就可以是打开、关闭、修改等。方法是用来作用于对象使其产生某种变化的。事件是什么呢?事件就是被设计用来触发某些代码来自动执行的这个就叫做事件驱动机制。还记得刚才我们谈到的面向过程的程序设计方法的缺点吗?对代码的执行顺序是由设计者在设计时指定的。这种吃力不讨好的事情劝大家以后还是少做做。我们有了事件驱动机制以后这样的情况就可以避免了。现在可以通过将代码写在可能发生的事件中的办法由用户决定啥时候运行这些代码只要程序运行时用户的操作行为触发了相应的事件那么该事件中定义的代码就会被自动执行了。  好了该吃午饭了有朋友回复说最好图文并茂现在讲的是理论在以后讲到代码时候会加上插图和动画的。明天见!、便于对“类”进行理解的只言片语类是抽象的不仅仅在程序中有生活中到处都是。你的衣服是按照春夏秋冬分门别类整理存放的到超市购物商品也是按各种大类小类摆放的类就是分类、种类的意思。类是人为的、按照一定的特性进行区分的一组对象(大白话就是“东西”)你我也都是一“类”生物类》动物类》人类》会使用电脑的那一类人》会用EXCEL的一类人》上EH的一类人类还可以设计,创建重复使用这回不拿人说事了拿电脑吧电脑粗分一下台式机、笔记本。但是电脑都没有点烟(就是汽车上的点烟器)这个功能但是我需要这样一个电脑于是我就设想有这么一台并且做了简单的设计图纸。于是一个新类点烟电脑就设计好了(这就等于在类模块中写代码)现在“点烟电脑”还只处于设计图纸中我要想使用就必须创建我把图纸交给厂家厂家按设计图生产。这我才能使用(这就等于用NEW关键字实体化一个类)。我的朋友也想要一个点烟电脑我就不用再设计了直接叫厂家再生产一个就行了(再NEW一个类的重复使用)。整个过程当中设计图纸这一步是关键(在类模块中写代码)。整个Windows系统中有很多种“类”用于实现各种功能。VBA可以直接调用。但有些功能是我们自己想出来的我们就只有设计一个新类然后再调用。谢谢LDY老师的精彩注释!!!欢迎更多的版主、朋友发表自己的想法和见解。快过年了早晨去了趟超市那个人叫挤啊!本来想早点回来的结果午饭到了点才吃到。打开电脑看到好多朋友都在关心这个帖子而且好几位朋友提出了自己的见解和疑惑想到昨天讲了“类”今天真的感到了好“累”。  因为大家都刚接触VBA可能光听我介绍还没有直观的感受为了帮助大家理解下面先介绍两个方法可以让大家看到更多的东西。首先要介绍的是对象浏览器。打开这个对话框有三种方法。(中国的教材和教育模式下的考试最喜欢列举完成一件事情的方法我就纳闷只要能解决问题知道了一条路干嘛还要打破沙锅问到底?)一个是通过【视图】菜单的【对象浏览器】项目另一个是在工具栏上点击【对象浏览器】按钮。最方便的是按【F】快捷键。打开了以后大家看到了一个新的窗口这里列举了三种信息最上面的部分是用来搜索和查找信息的中间的部分分了三栏来分别列举“库”、“类”和“成员”信息。最下面是提示和说明部分用来说明当前选中对象的信息。为什么要介绍对象浏览器呢?大家通过这个工具可以搜索到和EXCEL以及VBA有关的各种各样的“类”和“对象”。顺便说一下这里说的“成员”基本相当于对象、属性、方法和事件类是成员的上级很多类又组成了一个类库在这里叫做“库”。以后大家如果有不明白的类就可以在这里找到这个类有哪些对象、属性、方法和事件以及他们之间是什么层级关系。其次简单介绍下如何使用帮助。其实按照微软的体系VBA的帮助包括了两个部分一个是本地脱机帮助也就是安装完OFFICE软件就自带的帮助这里只是简单的介绍了VBA的基本信息。另一个部分则被微软放在了MSDN里面这是微软单独提供给微软平台的开发人员的独立帮助工具其中包含了非常详细的各种编程信息、技巧和案例。通过仔细研读MSDN里的内容可以快速掌握之前不了解的编程知识并且MSDN总是被微软的工程师们不断更新并保持着最新的状态。  下面我们就继续昨天的内容接着讲面向对象的编程。什么?昨天的已经都忘记了?那就先回头去看看再继续吧。今天主要给大家介绍VBA中最常用到的一些关键字。什么是关键字关键字就是那些在OFFICE软件里已经被定义好了特定含义和用法的字符串。比方说“IF”这个字符串表示“如果”的意思在VBA里用来表示条件语句的起始那么关键字和普通字符串有什么区别呢?关键字被规定为不可以用来表示变量名、过程名、函数名等用户定义的信息只能根据系统规定的含义使用。也就是说你如果有个变量起个名字叫“IF”你写一条赋值语句“IF=”这样系统在编译的时候就会提示一个错误而不能通过编译和运行。想看看VBA里一共有多少个关键字吗?从明天开始我们将开始一一给大伙讲解欢迎继续关注。对于VBA我觉得比较烦的一点儿是:对里面的对象(类)的用法不大好自学与理解。原有的帮助常常是分断的、原则性的缺乏针对性。没有一个系统的、全面的、有较强针对性的帮助内容!或许找一本书来看您会发现:书的知识还不如帮助呢!所以至今还未深入学习VBA。、【】代码起步关键字 “同学们好!”“老师好”“请坐下把书翻到页今天我们讲”才三岁的儿子已经开始模仿和憧憬着学校的生活了~~哈哈当我们回忆起儿时上课的情景亲切吧?那就让我们重温一下这份感受吧。  今天开始我们将正式进入代码的学习阶段。我多年以来的授课经验告诉我学代码应该从关键字开始。下面列举了一些常见的关键字给大家先了解下。【框架类关键字】工程(Project):是指用于创建一个应用程序的文件的集合。对象(Object):可控制的某个东西例如窗体和控件。窗体(Form):  应用程序的用户界面。  控件(Control):指的是各种按钮、标签、文本框等。属性(Property):是指对象的特征如大小、标题或颜色。工作表(Worksheet):指EXCEL文件里的工作表例如sheet、sheet等。模块(Module):指在VBA工程中存放独立于用户定义对象代码的容器。过程(Sub):容纳和组织代码的限定符号一般和EndSub联用不返回结果。函数(Function):容纳和组织代码的限定符号一般和EndFunction联用并返回结果。【控件类关键字】标签(Label):用来显示文本。文本框(Textbox):用来提供给用户输入文本。命令按钮(CommandButton):用来组织和提供程序功能。列表框(ListBox):用来提供给用户选择列表中的数据。组合框(ComboBox):用来提供给用户下拉选择列表中的数据。选项按钮(OptionButton):用来提供给用户指定单项数据一般成组使用。复选框(CheckBox):用来提供给用户指定多项数据一般成组使用。【声明类关键字】Public:声明公共类型的数据Private:声明私有类型的数据Static:声明静态类型的数据Dim:声明数据类型如:DimmyCellAsRangereDim:定义未显式声明的数组的维数和元素Const:声明常量数据如:ConstlimitAsInteger=As:一般用于声明数据类型中的“AsType”子句Type:声明用户自定义数据类型【数据类型关键字】Byte:字节类型Integer:整型数值类型Long:长整型数值类型String:字符串类型Boolean:逻辑类型Single:单精度类型Double:双精度类型Currency:货币数值类型Decimal:可以容纳小数的数值类型Variant:任何数字值或字符串值Object:对象类型用户自定义:利用TYPE语句由用户自己定义的数据类型。【运算符关键字】  这类关键字太多了而且有很多种分类方法比如按参数个数分为单目运算符、双目运算符、三目运算符和多目运算符等按参与运算的参数类型可以分为数值运算符、字符运算符、逻辑运算符、日期运算符、字节运算符等按照运算符的作用范围可以分为过程级运算符、函数级运算符和模块级运算符。【程序结构类】IFELSEENDIF:分支判断选择语句DOWHILELOOP:先判断后执行循环语句DOLOOPWHILE:先执行后判断循环语句FORNEXT:限定次数循环语句GOTO:无条件转移语句。  一下子列举了这么多的关键字是不是眼睛都花了?是不是对这些关键字还是没搞明白该怎么用?没关系下面就给大家一一介绍。哎呀今天的时间又快到了明天继续吧别换频道啊~~、【】代码起步关键字(续)大伙的热情支持真的让我很感动提出的很多建议对我也非常有启发今后的帖子里将会不断吸收各位的好的意见和建议尽我所能把这篇入门指南写好。  什么今天讲?不今天讲什么?哎太过激动以至于有点语无伦次了。对了今天先说说框架类关键字。列举如下:  【框架类关键字】  工程(Project):是指用于创建一个应用程序的文件的集合。  对象(Object):可控制的某个东西例如窗体和控件。  窗体(Form):  应用程序的用户界面。    控件(Control):指的是各种按钮、标签、文本框等。  属性(Property):是指对象的特征如大小、标题或颜色。  工作表(Worksheet):指EXCEL文件里的工作表例如sheet、sheet等。  模块(Module):指在VBA工程中存放独立于用户定义对象代码的容器。  过程(Sub):容纳和组织代码的限定符号一般和EndSub联用不返回结果。  函数(Function):容纳和组织代码的限定符号一般和EndFunction联用并返回结果。    记得我在学写程序的时候(那是很久很久以前的事情了)我最怕的就是看到这些E文字母。我经常去看HELP里面的例子然而那里面居然连变量和过程的名字都是很长的E文。没办法谁叫人家微软是美国公司呢!(记得之前有过几个用中文写程序的编辑器甚至还热过一阵某语言但随着时间的流逝好像现在也不知去向了)那么怎么样才能记住这些又长又难记的单词呢?不用记你如果用VBA编程你会发现只要你输入了正确的第一个关键字之后可以通过支持VBA语言的编辑器自动提示输入接下来的单词是不是很简单啊~其实多使用几次你也就记住了。还有一个可以判断是否输入正确的方法就是你总是用小写字母书写关键字如果正确编辑器会自动修正你录入的关键字的第一个字母为大写。  Project中文翻译为工程、项目等。这个关键字在VBA中表示一个工作簿所关联的代码的总容器。所有和这个工作簿(XLS文件)关联的代码都装在这个容器里。但这个容器不仅仅装代码还能装好多东西比如工作表、模块、过程、函数等。那么这个容器是不是一个对象呢?请大家结合前面的讲解思考下这个问题?答案是肯定的。(如果你答错了请接着往下看否则请跳过下一段。)  Object,对象实体。在VBA中工程、窗体、控件、工作表、模块等无一不是对象因为这些都是实体具备了独立存在的所有条件。比如我问你书是对象嘛?是因为书可以独立存在。那么颜色是对象嘛?不是因为你无法单单拿出来一个叫“颜色”的东西它只能作为其他东西的一种属性而存在。同样工程在VBA中是独立存在的可以作为对象来看待。窗体、控件、工作表、模块也是一样。还有个小提示给大家大家以后看到代码中某个对象名称后面跟了个S在E文里应该表示复数即多于一个的意思。那么在VBA中表示什么意思呢?表示多个对象放在一起我们给它们一个名字叫“集合”。集合是对象嘛?不是是多个对象放在一起。这个千万要注意因为中文是没有复数的表示方法的所以不能理解为“一个人是人嘛?是一群人是人嘛?当然是!”那就错了在VBA里“一群人”不是人是人的集合!那么你可能又会将集合同我们之前讲的“类”搞在一起了类是对象的抽象还拿书做例子一本实实在在的书是一个对象它可能是文学书也可能是计算机书当然可能是红色的也可能是绿色的。而如果你脱离了具体的书而说“书”的概念那么这时就指书这个类了。一个典型的例子是来自于生物界的分类。比如某只麻雀和某只鸽子都是具体对象而麻雀和鸽子都可以作为独立的一类鸟这个概念来描述这时应该说成是麻雀类和鸽子类同时它们又都属于鸟类这个概念所以在类这个东西里是可以分很多层次的但除非具体到某一只鸟不然就都是类的概念而不是对象。集合呢一群麻雀或者一群鸽子就是集合因为它们是由具体的很多只麻雀或鸽子组成的。干嘛费那么大劲说这些概念呢?可能你听得都快睡着了。但我还是要说因为如果你不弄清楚类、对象和集合等概念那么在以后写代码的时候你就会犯糊涂“怎么我写了一个‘对象’就是不能用它的某个属性或方法呢?”其实很有可能你把对象写成了类或集合因为他们就差一点点。(比如Row可以作为一个类也可以作为一个对象就看你如何声明它同时Rows就是一个集合)。  我还要讲一下如何使用类、对象和集合。类一般在声明部分使用比如DIMAAsRange这里Range就表示“行”这个“范围”类而A被声明为属于“行”这个类的类型的变量换句话说A在经过这样的声明以后就可以用来引用某个具体的行对象了。比如SetA=Sheetrows()。那么这时A就可以代表第一行这个对象了。这里的ROWS代表Sheet的所有行对象的集合。一般集合有一个属性叫做COUNT表示在这个集合中的对象的个数。同时要用集合表示具体对象时要在集合名称后加上一对括号里面填写对象的索引值或名称。  Form窗体。你一般在Windows里运行的程序都具备可视化的功能。那么这就是Form的功劳。通过引用FORM对象你可以对这个工程里的一些窗体进行属性的设置、事件的定义以及运行某些方法。  Control控件。指的是各种按钮、标签、文本框等。它们可以装饰你的窗体并在窗体中提供用户各种功能。从某种意义上讲窗体也可以看做是控件的容器。  Worksheet工作表。指EXCEL文件里的工作表例如sheet、sheet等。通过引用这个对象可以对工作表以及下级对象的属性进行设置、事件进行定义、方法进行执行。  Module模块。指在VBA工程中存放独立于用户定义对象代码的容器。如果你想定义一些变量、过程或函数并且想在各个对象(比如Sheet、Sheet等)中都能使用并且可以互相传递值。那么就应该将这些声明或代码写在模块中。详细的以后用到再详述。  以上讲的都是对象请大家参考对象的用法具体操作一下如何声明、如何引用它们。至于如何通过对象设置属性、定义事件和执行方法我们在具体讲解各类对象的时候再详细阐述。  Sub过程。容纳和组织代码的限定符号一般和EndSub联用不返回结果。Function函数。容纳和组织代码的限定符号一般和EndFunction联用并返回结果。这两个概念本来应该在代码里讲的这里只是提示一下。大家只要明白一个概念除声明语句外其他代码都应该放在这两种容器内。  Property属性。是指对象的特征如大小、标题或颜色。最后讲讲这个。还记得上面讲到的对象的声明和引用的例子吗?刚讲过应该不会忘吧否则应该回头重新看下这篇文章了。现在A已经被声明为一个Range类对象并且已经赋予A引用为Sheet的第一行了。那么如果想对Sheet表的第一行设置为值都等于应该如何做呢?其实只要对Range类对象的一个Value属性设置一下就可以了即:Avalue=。把上面所有的代码都放在Sheet的一个叫“WorksheetSelectionChange”的事件中然后随便用鼠标点一个单元格试一下是不是第一行的所有单元格都是?恭喜你写出了第一个完整的程序!不仅如此你还可以在设置属性的语句后面再写一句“ASelect”这个是什么意思?先运行下试试(别忘记先保存)。是不是在将第一行都赋值为以后又把第一行都选中了?这里执行了Range类对象的一个叫“Select”的方法作用是选中对象。回过头来想想事件是什么?看下这个事件的名称吧:WorksheetSelectionChange翻译过来就是“工作表的选中项目发生改变”也就是说只要该工作表(Sheet)中的选中位置发生了变化那么这个事件就会被触发其中的代码就会被自动执行。现在明白什么叫“事件触发机制”了吧?换了以前基于过程的编程方法那么必须规定啥时候这个单元格会被选中而用户必须在这个规定的时候选中这个单元格而现在有了事件触发机制随便什么时候只要满足事件触发的条件这个动作就会被执行。  今天讲的所有的代码总结如下你可以直接把它们复制粘贴到Sheet的代码集中:PrivateSubWorksheetSelectionChange(ByValTargetAsRange)'声明一个WorksheetSelectionChange事件的私有过程DimAAsRange  '声明一个变量A并制定为Range类型SetA=SheetRows() '将A赋值为(引用)Sheet工作表的第一行AValue= '设置A变量(表示Sheet工作表的第一行)的Value属性值为ASelect '执行A变量的Select方法EndSub '事件过程结束标志  具体示例程序见下面的附件。(打开EXCEL表格后可以通过按“【ALT】【F】”的方法打开代码编辑窗口并通过双击左侧Sheet工作表的方法打开该工作表下的代码集)。例rar(KB)  明天继续。、【】代码起步关键字(续)昨天刚洗了车今天就下雨了哎天意弄人~~“今年春节怎么过?出门嘛?”最近听得最多的就是这句话不管是经济危机的影响还是交通拥堵一票难求的作用今年明显出门的人少了许多昨天偶然听到了广播里张信哲的《逃生》其中一首“牡丹忧”让我想起了父母立马跑去买了龙井和翡翠的平安扣晚上看着嘴上埋怨却掩饰不了脸上高兴的父母总算心安了一些。不管什么借口今年在家陪陪爸妈吧!所谓“娘生儿连心肉儿行千里母担忧儿思娘亲难叩首娘想儿来泪双流”  言归正传继续昨天的话题让我们来看看第二类关键字控件先列表如下:  【控件类关键字】  标签(Label):用来显示文本。  文本框(Textbox):用来提供给用户输入文本。  命令按钮(CommandButton):用来组织和提供程序功能。  列表框(ListBox):用来提供给用户选择列表中的数据。  组合框(ComboBox):用来提供给用户下拉选择列表中的数据。  选项按钮(OptionButton):用来提供给用户指定单项数据一般成组使用。  复选框(CheckBox):用来提供给用户指定多项数据一般成组使用。  先来说说什么是控件顾名思义控件就是提供给用户控制程序运行的组件。回忆一下以往我们用过的程序很多都用过哪些控件呢?可能之前都没有注意但现在既然要做程序给别人用就得注意了。我们看到一般在我们打开的窗口上都会有些文字这些文字只是提供了一些信息比如告诉你这里是输入姓名的那里是选择性别的等等这些文字用户并不能修改或删除那么这些文字是不是就是写在窗体上的呢?不是窗体只是一个容器里面是空的就像不能在空气里写文字一样。VBA给我们提供了一个可以写这些文字的控件我们给它一个名字叫“标签”E文叫“Label”。从我们上面描述的文字可以总结出标签控件的特点和作用:无法修改主要用于显示提示信息。这是第一个控件。  第二个控件叫做“文本框”E文叫做“Textbox”。这个控件和标签有点类似也是放文字的但这里的文字是让用户输入的而不是显示给用户看的所以我们把文本框的特点和作用做个总结就是:可以提供用户文字编辑功能主要用来供用户录入文字信息供程序处理或存入数据库。  第三个控件叫命令按钮E文叫“CommandButton”。这个控件的作用不用我多说了吧?当你之前每次用鼠标点击按钮你可曾想过为什么这么多按钮会有各种各样不同的功能?按钮除了能单击还能双击嘛?按钮的作用是在按下的时候发生还是放开的时候发生呢?所有这些问题的答案都在于事件是如何写的。按钮提供了单击、双击、按下、放开等事件如果代码写在了按钮的某个事件里那么在用户做出相应动作以后就会触发执行这些代码。  第四个控件叫列表框E文叫“ListBox”。这个控件的外观像一张一维表格(只有列标题)。这个控件的作用除了可以提供给用户一些整齐的列表信息外还可以通过选中、单击、双击等事件实现用户选择标准化录入的效果。  第五个控件叫组合框E文叫“ComboBox”。这个控件比较灵活有三种形态。第一种是下拉列表的形式主要提供给用户选择列表里的值用户的选择只能限于下拉列表提供的内容不能自己输入并且选择只能是单选。第二种是用户除了可以选择下拉列表提供的内容外还可以输入自定义的内容即兼具了文本框和下拉列表框的作用。第三种是用户可以对下拉列表框提供的内容进行复选。组合框是比较常用且功能较为强大的控件之一。  还有两个控件一个叫选项按钮就是我们平时说的单选按钮另一个叫复选框这两个控件经常被成组提供主要让用户选择某些项目而避免了文本框的不规则文本录入的问题达到了录入结果标准化的效果。  说了这么多控件还没看见呢!?别急下面就告诉你怎么添加控件。如图(jpg(KB):)单击“控件工具箱”工具栏中的某一个控件按钮然后在SHEET表上就可以按住左键拖动鼠标勾画出某种控件就这么简单。画好了看到了可没任何作用啊?呵呵接下来就是要给这些控件“赋予生命”了。  再次看到“控件工具箱”工具栏从左数第一个按钮(如图:jpg(KB):)这个按钮的作用是进入设计模式和退出设计模式如果在非设计模式下那么对于你添加的控件就会按照你所定义的事件代码触发执行如果要编辑这些按钮就必须确保这个切换设计模式的按钮处于被按下的状态这时候就进入了设计模式这时对上述你添加的控件进行操作就不会触发你定义的事件代码就可以提供给你编辑修改这些控件属性和代码的机会。请确认切换设计模式按钮处于按下状态双击你添加在当前工作表中的任何一个控件你就能看到自动打开了VBA编辑窗口并生成了与被双击控件关联的一个事件当前光标正在这个事件过程中一闪一闪的等你呢!请把目光移到代码编辑窗口的最顶端的两个下拉列表框那里(还记得前面讲的叫什么名字嘛?)左侧的下拉框显示的是当前控件的名称右侧下拉框显示的是该控件的默认事件(如图:jpg(KB):)比如文本框默认名称为“TextBox”默认事件为“Change”这个事件表示当文本框内容发生变化的时候被触发执行。你可以下拉右侧的列表框你会发现和当前控件关联的事件有很多至于如何用我们下面会逐个讲解。现在请重新回到SHEET工作表界面再重新选择另外一类控件添加这个控件并双击进入编辑窗口看看和这种(比如命令按钮)控件关联的事件有哪些?至此知道如何给控件添加代码了嘛?  还有个小问题你考虑过为什么这里出现的控件名称都是一样的只是在最后添加了数字以示区别嘛?因为你没有修改控件的名称所以就只能用默认的名称咯。其实每个控件都有名称因为每个控件都是对象嘛!所以设置控件的名称就是设置控件对象的一个属性。除了名称属性外常见的还有哪些属性呢?我在这里讲一个查看属性的方法大家不妨自己去看看各类对象的属性。所谓“师傅领进门修行在个人”嘛!上面提到的“控件工具箱”工具栏还在吗?刚才讲了从左边数第一个按钮的作用除了各类控件外还有个按钮也就是从左边数第个和第个按钮没用过你一定猜出来了不错第二个按钮是打开属性对话框的(如图:jpg(KB):)点了这个按钮就可以看到当前选中对象的属性而第三个按钮则和双击某个控件一样是打开代码编辑窗口的。  最后我想结合一个实例讲讲常见控件的常见属性和事件。(实例:例rar(KB)例rar(KB)下载次数::)  一般控件常见属性主要有如下几个:Enable取值为逻辑值通过设置该属性可以决定控件当前是否可用Visible,取值为逻辑值通过设置该属性可以决定控件当前是否可以被显示出来。对于标签控件常见属性就是Caption属性取值为文本该属性决定了标签当前显示出来的文本。对于文本框、列表框、组合框控件常见属性有Value属性取值为文本该属性决定了文本框、列表框和组合框的内容可读写。对于命令按钮控件常见属性有Caption属性取值为文本该属性决定了按钮当前显示出来的文本。  接下来大家新建一个空白的EXCEL文档在Sheet工作表中依次添加标签、文本框、命令按钮各一个如图:jpg(KB):。设置标签控件的名称属性为:LblACaption属性为“A单元格的值:”文本框控件的名称属性为:TxtA命令按钮控件的名称属性为:CmdACaption属性为“读取”接着双击命令按钮控件打开代码编辑器窗口并在CmdAClick()事件中添加如下代码:TxtAvalue=Cstr(SheetRange("A")value)。保存后回到Sheet工作表编辑界面单击控件工具箱的左侧第一个按钮即退出设计模式。这时候在A单元格输入一个值后只要按一下命令按钮在文本框中就会出现A单元格的值。  由于时间关系今天只是简要的讲述了一些常见控件的常见属性、方法和事件至于其他一些控件和大家以后遇到的新的控件的属性、事件和方法可以参照我上面讲述的过程和方法自己去学习、练习和使用。  明天继续。、【】代码起步关键字(续)新年的脚步离我们越来越近了越是临近过年事情就越忙办年货、筹备年夜饭好不容易跑出来写点东西不知道一会还会有啥事等着我呢!  不知道昨天讲的关于控件类的关键字大家有没有掌握如果没搞清楚也没关系我们接下来会专题详细讲解每一个控件的用法只要大家耐心听下去。今天继续聊关键字的话题。今天要讲的是声明类关键字。先列示如下:  【声明类关键字】  Public:声明公共类型的数据  Private:声明私有类型的数据  Static:声明静态类型的数据  Dim:声明数据类型如:DimmyCellAsRange  reDim:定义未显式声明的数组的维数和元素  Const:声明常量数据如:ConstlimitAsInteger=  As:一般用于声明数据类型中的“AsType”子句  Type:声明用户自定义数据类型。  考虑到该类关键字属于一个相互联系的整体并且一般在写代码的时候都会遇到因此我想分三个部分来讲解。首先我们先了解下VBA代码的语法结构。每一种编程语言都有各自的语法组织结构什么内容就应该放在什么地方就像人身上的“部件”如果鼻子长到了眼睛的上面那就不属于正常的人了。VBA代码一般都按照事件、过程、函数、模块、类模块等来组织不管是系统内部定义好的还是开发人员自定义的过程、函数或模块使用前都必须声明。声明也就是告诉VBA代码的编译器我下面的程序中会用到这些变量、过程、函数和模块等。声明分两种一种是显式声明也就是将声明部分代码明确的写出来。另一种是非显式声明意思正好和前一种相反。当您的模块中含有这条语句“OptionExplicit”那么系统就强制规定您必须显式声明该模块中的所有变量否则将编译出错。如果没有出现上述语句那么您可以在使用变量前不显式声明该变量系统编译时将默认该变量类型为Variant。  声明语句可以命名和定义过程、变量、数组以及常数。当声明一个过程、变量或常数时也同时定义了它的作用范围而此范围是取决于声明位置以及用什么关键字来声明它。这就是我要讲的第二个问题。先说声明的位置如果你在某个工作表的某个过程中声明了一个变量或函数那么这个变量或函数的作用范围就局限于这个过程如果你在一个工作表的(通用)部分声明了一个变量或函数那么这个变量或函数的作用范围就局限于该工作表代码模块中。这就表明声明的位置可以决定变量或函数的作用范围。除了声明位置外采用哪个关键字也可以决定被声明对象的作用范围。比如如果你在一个自定义模块中采用PUBLIC这个关键字来声明一个变量那么这个变量在所有应用程序的所有没有使用OptionPrivateModule的模块的任何过程中都是可用的(若该模块使用了OptionPrivateModule则该变量只是在其所属工程中是公用的)。而采用PRIVATE声明的变量其作用范围就只有该模块内部称为私有变量。上述两个关键字只能在模块级别代码中使用。(所谓模块级别就是只在过程外部的代码即某个工作表的<通用>部分中写的代码区别于过程级别的代码即过程中书写的代码)除此以外还有一个DIM关键字用这个关键字可以在模块级别中声明变量也可以在过程级别中声明的变量前者声明的变量对该模块中的所有过程都是可用的而后者则只在过程内是可用的。STATIC关键字是用来声明静态类型变量的这是什么意思呢?举个例子你就清楚了一般声明的过程级别变量在程序代码运行完该过程之后该变量的值就自动清空了该变量也由于所在过程的运行完毕而结束了其生存周期。这样的过程级别的变量称为动态变量。那么有另外一种变量虽然也是在过程级别中被声明的但在该过程运行结束以后该变量的值仍然保持不变直至该变量所在过程所在的模块运行中止为止。这样的变量就叫做静态变量。静态变量只能在过程级别中使用用于声明变量并分配存储空间。在整个代码运行期间都能保留使用Static语句声明的变量的值并且其生命周期与包含该过程定义的模块相同。从作用范围来讲这类变量由于在过程级别的代码中被声明因此其作用范围只是局限于其所在的过程内部。  如下图所示:变量关系图jpg(KB):今天的内容可能比较枯燥但绝对重要。正确理解声明类关键字的用法对把握变量、过程、函数等对象的作用范围和生命周期有着非常总要的作用。希望今天的讲解能对大家正确理解这部分关键字带来帮助。  “什么?要定年夜饭的菜单?这就来~~~”各位明天见!、【】代码起步关键字(续)  小别数日今日终于回来了。先给大伙道一声“新年好”!  早晨一早驱车三个多小时赶到了孩子他外婆家。到达的时候已然到了中午自然免不了应酬一番。喝了点小酒一下午头都昏昏的。到此时日落西山方突然想起年前许下的今日之约立即开机上网、奋起疾书至此才有了下面的文字望诸位海涵!  还记得年前我们说完了声明类关键字今天我们要讲的是数据类型关键字列举如下。  【数据类型关键字】  Byte:字节类型  Integer:整型数值类型  Long:长整型数值类型  String:字符串类型  Boolean:逻辑类型  Single:单精度类型  Double:双精度类型  Currency:货币数值类型  Decimal:可以容纳小数的数值类型  Variant:任何数字值或字符串值  Object:对象类型  用户自定义:利用TYPE语句由用户自己定义的数据类型。  首先我们先谈谈VBA中大伙见到的文字有哪些。大家在VBA中能够见到的文字除了之前列举的几大类关键字(保留字)外就是些数据和注释了。注释是以西文半角方式的单引号开头的文字在VBA编辑器里显示为绿色。这些字主要用来注释解说变量或代码的用途。数据则有很多种这才是我们今天要讲的主要内容。在VBA中数据按照形态大致分为三类常量、变量和数组。常量就是指在程序中已经指定的值并且常量的值在程序中保持不变。举个例子我们声明一个常量名字叫“Name”我们在可以在声明的时候直接赋予这个常量一个值比如“张三”。那么在这个程序里我们就不用直接引用“张三”这个名字了我们在需要引用的时候只要用Name这个常量就可以替代了。可能有的朋友会说既然Name就是代表“张三”那我们为什么不直接在程序里写“张三”呢?这里有这么几个原因。一是有可能直接使用“张三”不方便如果起个有意义的名字更便于阅读和维护代码。二是如果以后需要修改程序需要将程序中使用到“张三”的地方都改成“李四”那么如果用引用一个常量的这种方式的话就只需要修改Name这个常量的值就可以了。变量和常量有点类似都是以一个名字来命名并赋予一个值给它不同之处在于常量的值在整个应用程序代码中是不变的而变量的值会随着代码位置的不同而发生变化。在这里提供一个小建议在给变量起名字的时候最好起一些有意义的名字否则在今后维护代码的时候会遇到困难。比如可以给整型变量加上INT的前缀如果这个变量用来保存“编号”的那么可以起这样的名字“INTname”如果是保存“生日”的日期型变量呢?可以这样起“DATEbirthday”,等等。再来说说数组数组也是变量不同之处是数组是一组变量的集合而不是单个变量。因此数组一般由变量名和下标组成例如:NAME()、k()等。数组按照下标的个数分为一维数组(只有一个下标)、二维数组(有两个下标)和多维数组(有多于个下标)。除了普通变量能采用数组形式外对象、控件、单元格等都可以采用数组的形式来表示。对于有规律的变量或对象采用数组的形式可以方便的配合循环语句来简化代码、提高执行效率不过会占用更多的内存资源因此是一种空间换时间的方法。  其次在学习具体变量之前我们还要谈谈计算机是如何保存和处理各类数据的。按照数据的种类和载体我们大致可以分为这么几类数字、西文字符、中文字符、图形、动画、视频、音频等。这些数据在计算机中都被翻译为进制来保存。比如数字分为整形、浮点型、单精度、双精度、长整形等按照的N次幂的方法计算所能保存的最大数和最小数来确定范围再比如数字型字符和西文字符都是按照ASCII编码来保存的一个字符占用一个字节(位二进制)中文字符由于数量众多就采用国际标准交换代码来保存一个字符占用二个字节(位二进制)图形、动画、视频和音频数据就更为复杂一般通过引用(在变量中保存能找到这些数据的地址)的方法保存。  最后我们来看看学习变量需要重点掌握哪些内容。一是要十分清楚每种变量类型所对应的取值范围。根据我们第二点讲解的计算机保存各类数据的方法对应不同类别变量的取值范围是存在不同的。BYTE字节型变量只能存放个字节的

用户评论(0)

0/200

精彩专题

上传我的资料

每篇奖励 +1积分

资料评分:

/47
2下载券 下载 加入VIP, 送下载券

意见
反馈

立即扫码关注

爱问共享资料微信公众号

返回
顶部

举报
资料