您好,欢迎访问三七文档
VisualBasicforApplication(VBA)培训铸管部@2006目录什么是VBA对象、属性和方法数据类型、变量和常量赋值语句、运算符和内部函数内部对话框程序流程控制语句模块、子程序和函数用户窗体和控件自定义菜单与工具条若干实例0什么是VBA像BorlandDelphi、VC++及其它的应用程序一样,VBA是一种应用程序开发工具,但是与它们不同,VBA是唯一由其他应用程序控制的应用程序开发工具,它可以增强其他应用程序的功能。VBA实际上是建立在Office中的标准宏语言,可以有效的自定义和扩展那些使用了VBA应用程序的功能。VBA实际上是VB的派生体,为了在应用程序中使用方便而有针对性的优化和设置了VB。1对象、属性和方法目前,面向对象程序设计(object-orientedprogramming,简称OOP)被广泛使用,主要是因为它采用了模块化设计,可以实现四个目标:可检验的(verifiable);可修正的(revisable);可重复使用的(reusable);可移植的(transportable)。或说具有三个基本概念的支持:数据封装、继承性和多态性。在OOP中,代码对象是一个容器(container),容器中包括数据和处理该数据的代码,即对象的属性和方法都包含在对象的定义中。代码对象具有属性和方法。属性(properties)是对象的外部可见数据(visible-data);方法(methods)是对象处理数据的过程。其中,外部可见数据是在对象外部可以存取的数据,属性可以是对象处理的数据,或者用来控制对象的行为和外观。当执行一个方法时,该方法仅处理对象所包含的属性,一个对象的方法不能直接改变另一个对象的属性值,但是一个对象的方法可以请求其他对象自行改变它们自己的属性值。一个对象可以基于对另一个对象的描述。代码对象还可以是其他较大代码对象的组成部分,即对象可以组合。当一个对象是另一个对象的组成部分时,后者就要继承(inheritance)前者的所有属性和方法。为存取组合对象的属性和方法,书写格式必须从最外层容器对象开始向内层写,直至需要存取属性和方法的那个对象,对象名间用小数点分隔。许多对象可以具有相同的方法,不同对象调用该方法都会产生正确的操作。每个对象是一个特定的、唯一的事物。一个类(class)则是指具有特定类型的所有对象,所以类是对象定义的最高级别,可以用一个类来创建一个对象。Excel对象包括工作表、工作簿、图表和单元格区域等,菜单、工具条以及Excel工作表函数库也都是对象。对象集合在VBA中使用集合(collection)来存取大多数工作表对象。如Workbooks,Worksheets等。格式为:集合(“成员名称”);或:集合(“整数值”),其中整数值表示成员位置序号。如工作簿名为Sales,且工作表West位于该工作簿的第二个表,则下列代码用于存取同一工作表。Workbooks(“Sales”).Worksheets(“West”)Workbooks(“Sales”).Worksheets(2)获取集合的信息SubGetInformation()Worksheets(1).Range(B2).Value=Worksheets.Count'Count属性是统计该集合中成员的个数Worksheets(1).Range(B3).Value=Worksheets.Parent.Name'Parent属性包含集合的父对象的名称Worksheets(1).Range(B4).Value=Worksheets(3).NameEndSub在集合中增加、删去成员Worksheets.Add'在工作表集合的开头添加一个缺省类型的新工作表Worksheets(3).Delete'删去第3个工作表用Range对象存取单元格工作表上的单个单元格并不是对象,工作表上的单元格是通过Range对象来存取的。一个Range对象是工作表上的任意单元格或单元格的矩形组。通过Union函数将互不连通的单元格组合成一个Range对象。生成Range对象的三种可用方法是:Range方法Cells方法Offset方法Range方法Range方法是用途最广的一种方法。SubtheRanges()Worksheets(1).Range(B1).Value=1'单个单元格Worksheets(1).Range(D2,B2).Value=2'矩形区域Worksheets(1).Range(B3:D3).Value=3'矩形区域Worksheets(1).Range(B4,E5,D6).Value=4'三个孤立的单元格Union(Worksheets(1).Range(“B7:D7”),Worksheets(1).Range(“C8”)).Value=5'两个不连通的区域Worksheets(1).Range(B9:D9,F9).Value=6'两个不连通的区域EndSub注意:矩形区域的表示方法有二:①Range(“列1行1:列2行2”)②Range(“列1行1”,“列2行2”)注意:若把Range方法用于Range对象,不管单元格引用是否是直接单元格名,Range方法对Range对象的引用都是相对于Range对象的左上角的。例如:Range(B1).Range(A2).Value=1实际上是B2单元格的值为1。Cells方法Cells方法的格式为:Cells(i,j)其中:i表示单元格行号;j表示列号,有时j可以用“字母”替代。注意事项同上。Offset方法Offset方法是专门相对于当前单元格创建的Range对象,格式为:Range(“”)或Cells(i,j).Offset(m,n)其中:m表示行偏移量;n表示列偏移量。相对偏移方法比较:.Range(“B4”).Cells(4,2).Offset(3,1)Range方法的简写Range方法可以采用一种简写的形式。如:Worksheets(1).Range(“E7”)可简写为:Worksheets(1).[E7]活动属性VBA拥有应用软件对象的几个特殊属性,即其活动属性(activeproperties)。活动属性的取值总是取决于特定类的当前活动对象,活动对象可以是工作簿和工作表重叠窗口中的最顶层的表,或是Range对象的活动单元格,或是图形对象中被选中的对象。活动属性经常和Select方法、Activate方法一起使用。Select用以选择一个单元格区域或一个表;Activate用以激活当前选择对象中的一个单个单元格或选择一个表(此时同于Select)。ActiveWorkbook属性值取决于当前显示的工作簿;ActiveSheet属性值取决于活动工作簿中最顶层的表,可以是工作表(worksheet)、图表(chartsheet)、宏表(macrosheet)或模块表(modulesheet)。ActiveCell属性值取决于一单个单元格Range对象。Selection属性与ActiveCell属性紧密相关,但Selection属性值取决于所有被选中的单元格,而不是单个活动单元格。SubActiveProperty()ActiveWorkbook.Worksheets(1).Select'活动工作簿的第一张工作表被选中ActiveSheet.Range(B3).Select'活动工作表的单个单元格B3被选中ActiveCell.Value=23'活动单元格的数值ActiveCell.NumberFormat=0.00'活动单元格数据格式ActiveCell.HorizontalAlignment=xlCenter'活动单元格数据位置水平居中ActiveCell.BorderAroundWeight:=xlThick,ColorIndex:=4'一种方法,与属性Borders.LineStyle相对应,单元格外框厚的绿色ActiveCell.Interior.ColorIndex=6'单元格背景黄色ActiveSheet.Range(“B5:D6”).Select‘活动工作表的一片单元格被选中Selection.Value=23Selection.NumberFormat=0.00Selection.HorizontalAlignment=xlCenterSelection.BorderAroundWeight:=xlThick,ColorIndex:=4Selection.Interior.ColorIndex=6ActiveSheet.Range(A1).Select'将活动单元格置于A1EndSub格式属性上例已经引入了格式属性,实际中强烈建议用记录宏的办法获取其格式。内容属性工作表单元格中放入数据有两种途径:一是使用Range对象的Value属性;二是使用Formula属性。Range(B2).FormulaR1C1=宋Range(B3).Formula=杰Range(B4).Value=鲲Range(B5).Formula==2*3Range(B6).FormulaR1C1==R[-1]C+2Range(B7).Value==2*3Range(B8).Formula==B5+2一样的效果一样的效果一样的效果2数据类型、变量和常量变量(variable)和数据类型(datatype)决定着数据在计算机内存中的存储方式及存放地点。数据类型是指数据值在内存中的存储方式,包括数据值大小、有效位及是否有小数部分。VBA中,有11种内部数据类型:布尔型(Boolean)整数(Integer)长整数(Long)单精度浮点数(Single)双精度浮点数(Double)货币(Currency)日期(Date)字符串(String)对象(Object)数组(Array)变体(Variant)创建自定义数据类型:将几个现有的数据类型联合在一起组成一个结构,可能更便于使用。用Type语句可定义一个数据结构,格式为:Type结构名结构内元素1As数据类型结构内元素2As数据类型………EndType注意:Type不能放在Sub、Public、Function、Function中,而应单独在最初的变量声明中创建。变量是内存中被命名的存储位置,即在内存地址和变量名之间建立了一种线性映射关系。变量名可由字母、数字及标点符号组成。必须以字母打头,且不能包含空格、小数点及类型声明符(#、$、%、&、!)。可以在变量名中使用大写字母,在VBA中并不区别大小写字母。通常将多个词用下划线或大写字母连起来构成具有含义的变量名。变量的声明强制声明变量:应在每个模块的开始处加入一条OptionExplicit,这样程序运行时遇到未定义类型的变量,会显示出错信息。用Dim语句声明变量,格式有:当没有“As数据类型”或为“AsVatiable”时,意味着该变量为变体类型。Dim变量名As数据类型[,变量名As数据类型,…]用Public声明全局变量:Public声明的变量在应用软件的任何子程序中都是有效的。定义数组变量:建议用格式:Dim数组名(number1tonumber2)As数据类型定义和使用常量,格式为:Const常量名=常数值变量和常量都有一定的有效作用范围(也称作用域)。注意:一旦使用常量,绝不可再给常量赋值。OptionExplicitDimokAsString'ok的有效作用范围为整个模块PublicConstz=15'z的有效作用范围为整个模块,且不可再赋值Subsjk1()DimxAsInteger'x的作用域为该子程序x=10ok=yesMsgBoxx=&xEndSubSubsjk2()MsgBoxokMsgBoxz=&zEndSub说明:在未运行sjk1之前,ok=“”。3赋值语句、运算符和内部函数定义了变量,即可使用变量进行实际工作。赋值语句格式为:变
本文标题:VBA)培训
链接地址:https://www.777doc.com/doc-961030 .html