摘自:http://download.csdn.net/source/1529085
**************************************************************
八.
对象
VBA是一种语言,因此它具有一定的构造,它是通过属性和方法可以控制对象。属性是指对象的特征,改变属性的值可以改变对象的行为或者外观。方法是对象可以执行的操作。
Excel的对象模型中有100多个对象,在编程时只会用到其中的20个对象或者更少
尽管在Excel的对象模型中包括100多个对象,但你会发现程序设计主要集中在如下五个对象上:
* Application
* Workbook
* Worksheet
* Range
* Chart
Application对象代表Excel。使用Application对象可以控制应用程序级的设置、内置的Excel函数以及高级方法。
Workbook对象是指Excel中的工作簿,即是说Excel文件。在VBA环境中,不说打开一个文件,而称为打开一个工作簿;也不说保存一个文件,而称为保存工作簿。
Worksheet中包括单元格(Cell)。你也许会认为不得不编写大量的代码以对单元格对象进行控制,但是,实际上没有单元格这样的对象。有单元格属性,将在后面的学时中学到。相反,你将对范围(Range)对象进行处理。范围对象是指一个或者多个单元格。
图表(Chart)对象。用“图表向导”创建图表时所做的一切都可以通过VBA代码做到。
在代码中,并不总是需要使用完全限定的对象名。
当在代码中使用对象时,实际上是在做以下三种事情:
* 设置对象的属性。
* 获取对象的属性。
* 执行对象的方法。
对象变量是指向某个对象的变量。因为对象变量指向一个对象,所以它们可以使用相应对象的属性和方法。创建对象变量和其他变量完全类似,也通过使用Dim语句。可以使用通用的对象类型,也可以使用特定的对象类型。
Dim语句生命对象变量,如果知道将要创建的对象的类型,那么最好在定义对象变量时加以指明。对象变量声明后,可以用Set语句将一个对象指定给该变量。
在进行程序设计时,采用这样的原则:如果需要输入同样的对象的名字全称两次以上,就创建一个对象变量以节省输入时间。
一个集合是指一组相似的对象。要在一个集合中创建新的元素,可以使用Add方法。
集合支持一个非常有用的名叫Count的属性。Count属性保存集合中元素的数目。
**************************************************************
九,
常用对象
Application对象
Application对象处于Excel对象层次结构的顶层。这意味着你可以使用Application对象来控制应用程序级的设置和选项,诸如在“工具”、“选项”菜单中可以找到的项目一样。
Application对象并不仅限于应用程序级的设置和选项,它还是Excel的内置函数的拥有者。如果希望在你的VBA过程中使用SUM、AVERAGE、MAX、IRR或者任何其他的内置函数,必须使用Application对象。(Excel作为开发平台的主要优点是Excel具有大量的内置函数)
Application对象有几种非常有用的属性和方法。其中一些属性如下:
* ActiveWorkbook 返回当前活动的工作簿。
* ActiveSheet 返回当前活动的工作簿中活动的工作表。返回的工作表可以是Excel支持的任何工作表类型,包括工作表和图表工作表。
* ActiveCell 返回当前活动的工作簿中活动的工作表中活动的单元格。
* ThisWorkbook 返回正在执行的过程所驻留的工作簿。
* MailSystem 返回本系统所采用的邮件系统。当进行邮件自动化时本属性非常有用。
* MailSession 用于检测用户是否登录了电子邮件。
* OperatingSystem 当开发由Windows和Mac用户使用的VBA应用程序时,这个属性非常有用。可以用这个属性来决定所使用的操作系统,并且做出必要的改变。
* Selection 用于决定当前选中了什么,可以是单元格、图表、图形对象等等。
你已经使用过一个Application对象的方法—InputBox。InputBox方法可以显示一个输入框,并且可以指定返回值的数据类型。Application对象的其他有用的方法包括:
* MailLogon和MailLogoff和MailSystem和MailSession属性配合使用,这两个方法可以登录和退出电子邮系统。
* Quit 用于退出Excel。
* Run 用来执行Excel4.0宏。
Workbook对象的一些最常用的方法,而不是从这个对象的属性开始学习。
* Activate 本方法用来激活工作簿。
* Close 用于关闭工作簿。
* Save 用于保存工作簿。
如果在使用Save方法之前没有保存过该工作簿,该工作簿将以它当前的名字保存。这意味着它将被保存为诸如Book1这样的名字。 |
* SaveAs 用于保存工作簿。本方法和Save方法的区别在于本方法有几个有用的可选参数,包括Filename、FileFormat、Password、WriteResPassword和ReadOnlyRecommended。
* PrintOut 本方法用于打印整个工作簿。
* PrintPreview 本方法用于在打印预览中显示工作簿。
Worksheet对象
当对工作表进行处理时,常常要用到两个属性。其中一个是Name属性,在VBA中设置Name属性等价于双击一个工作表的标签并输入一个新的名字。
也许会用到以下三个Worksheet对象的方法:
* Activate 激活工作表。
* CheckSpelling 用于检查工作表中内容的拼写。
* Delete 用于删除某个工作表。
**************************************************************
十
range对象
对于一个excel程序员来说,在所有的Excel对象中,对Range对象的处理是最频繁的。
一个Range对象可以是:
* 一个单独的单元格。
* 对单元格的选择。
* 多个选择。
* 一行或者一列。
* 一个3D区域。
Range对象最有用的一些属性如下,实际上,Range对象的属性多达几十个:
* Address 本属性返回Range的当前位置。
* Count 本属性用于决定Range中单元格的数目。
* Formula 本属性返回用于计算显示值的公式。
* Offset 本属性对于从一个Range移动到另一个Range非常有用。
* Resize 通过它可设置当前选中的Range的大小。
* Value 返回Range的数值。
Range对象同样具有多种多样的方法,包括:
* Activate 激活一个Range。
* Clear 清除一个Range的内容。
* Copy 将一个Range的内容复制到剪贴板。
* Cut 将一个Range的内容剪切到剪贴板。
* PasteSpecial 将剪贴板的内容粘贴到Range中。
* Select 选择一个Range。
使用With语句
With语句的语法如下:
With object
[statements]
End With
需要注意的是,可以将With语句嵌套使用。
使用For Each语句
With语句是用来执行同一个对象的多个语句,而For Each语句则是用来对多个对象执行同一条语句。通过ForEach语句,可以对集合中的每个元素重复执行同样的语句。
For Each语句也可用于数组。 |
For Each语句的语法如下:
For Each element In group
[Statements]
[Exit For]‘可选项--可调出
[Statements]
Next
注意,该语法支持Exit For从句。和其他Exit从句一样,ExitFor从句通常位于一条If语句中。
**************************************************************
十一
visual basic 编辑器
...在线帮助系统不仅解释语句的语法,还提供各种实际的示例....
**************************************************************
十二
调试VBA代码
测试就是当编写完过程之后,运行该过程,并试图猜测用户可能对该过程做出的各种响应的阶段。
输入错误,如果存在这种情况,当你按下回车键时会显示一个消息框。
运行错误,指造成应用程序停止运行的任何错误。运行错误也可能是用户的操作所引起的,而用户的操作不是你所能控制和预测的。
逻辑错误,这种错误在VBA语言的语句上没有任何错误。问题在于代码的执行结果和预期的结果不同,这就意味着语句的逻辑出了问题。以后,你会发现大部分的调试时间都用在对逻辑错误的处理上。
查找错误的过程就称为调试。因为VBA是一个功能强大的开发环境,所以提供了几种调试工具供使用。这些工具包括:
* 立即窗口。
* Watch表达式。
* 断点。
* 单步执行代码。
当过程处于中断模式时,可以执行如下操作:
* 编辑应用程序的代码。
* 查看变量、属性的数值和语句。
* 为变量和属性输入不同的数值。
* 通过使用立即窗口运行Visual Basic语句。
立即窗口允许完成多种任务,具体包括:
* 当过程运行时打印变量和属性的数值。
* 当过程运行时改变变量和属性的数值。
* 当应用程序运行时查看调试输出。
* 和在程序代码中一样调用过程。
* 输入新的语句并立即执行,这样可以试验不同的代码。
* 将已有的代码行复制和粘贴到立即窗口中并加以执行。
**************************************************************
十三。错误处理
为了处理突发事件,开发人员需要编写错误处理程序。所谓错误处理程序,就是应用程序中用来捕获和处理错误的实用程序。
错误处理程序的开发过程可以分为下面三个步骤:
1)设置错误捕获 当设置错误捕获时,就是告诉程序当错误发生时,到什么地方去捕获错误,是通过OnError语句来实现的。
错误处理的两种不同处理方式中,不推荐使用内联错误处理方法,最好是采用错误捕获的处理方式,采用错误捕获能够跳转到错误处理实用程序,这样的方式使开发人员能够对各种各样的错误进行灵活的处理。为了设置能够跳转到错误处理实用程序的错误捕获,可以使用 On Error GoTo“行”语句,这里“行”代表的是位于错误处理代码前面的行标号。
2)编写错误处理实用程序 错误处理实用程序就是当错误发生时程序要跳转到的地方。
可以创建集中的错误处理程序来代替在每个过程中创建一个错误处理实用程序。集中式错误处理程序是一个函数,它对所发生的每个错误进行处理,然后基于不同的错误号码采取不同的措施。
3)提供从错误处理程序跳出的出口 换句话说,就是当错误处理完毕时,需要程序做的事情。
十四
使用用户窗体
用户窗体是应用程序的自定义窗口和对话框,用户窗体包含了一些控件,利用这些控件可以从用户那里获取信息。
frmGuestExpenses窗体上的控件一览 |
控件类型 | Name属性 | Caption属性 |
标签 | lblGuestName | Guest Name: |
文字框 | txtGuestName |
|
标签 | lblExpenseType | Expense Type: |
列表框 | lstExpenseType |
|
标签 | lblAmount | Amount: |
文字框 | txtAmount |
|
标签 | lblDate | Date: |
文字框 | txtDate |
|
框架 | fraPayment | Payment Method |
选项按钮 | optBillToRoom | Bill to Room |
选项按钮 | optCash | Cash |
选项按钮 | optCheck | Check |
选项按钮 | optCreditCard | Credit Card |
标签 | lblCardType | Card Type: |
列表框 | lstCardType |
|
标签 | lblCardNumber | Card No.: |
文字框 | txtCardNumber |
|
标签 | lblExpires | Expires: |
文字框 | txtExpires |
|
命令按钮(命令按钮) | cmdSave | Save |
命令按钮 | cmdCancel | Cancel |
框架 | fraTips | Tip Info |
复选框 | chkTipIncluded | Tip Included |
标签 | lblTipAmount | Tip Amount: |
文字框 | txtTipAmount |
|
TabIndex属性能够控制窗体上控件的Tab键切换顺序,该属性的起始值是0。
设置TabIndex属性值的一种方法是把第一个控件的TabIndex值设置为0,第二个控件设置为1,依此类推。
要添加加速键的话,需要使用Accelerator属性,在控件的标题字母中找出一个作为该控件的加速键,把该字母赋值给控件的Accelerator属性,当设置完成以后,控件标题中该字母下会有下划线
示例窗体中控件的加速键一览表 |
控件 | 加速键 |
lblRoomNumber | N |
lblGuestName | G |
lblExpenseType | E |
lblAmount | A |
lblDate | D |
chkTipIncluded | T |
lblTipAmount | i |
optBillToRoom | B |
optCash | C |
optCheck | h |
optCreditCard | r |
lblCardType | y |
lblCardNumber | o |
lblExpires | x |
cmdSave | S |
**************************************************************
十五.
用户窗体的自动功能
十六.
工具栏
**************************************************************
十七.
菜单
使用菜单时,实际上使用了三个对象:包容器、菜单和菜单项。包容器跟工具栏中的一样,叫做命令栏,也叫做菜单栏,位于命令栏中的就是菜单。菜单有“文件”、“编辑”、“帮助”菜单等等,每个菜单中内容的就是菜单项,比如,“文件”菜单包含了像“打开”、“保存”和“打印”之类的菜单项(或者叫做菜单命令)。
添加菜单栏的基本语法如下:
CommandBars.Add(Name,Position,MenuBar,Temporary)
Name参数指定了命令栏的名称;Position(位置)是另外一个可选的参数,这个参数允许选择新命令栏的位置或者类型。
十八.图表
十九。
数据透视表
Excel中最没有得到充分利用的数据分析特性很可能就是数据透视表。数据透视表通过把数据用三维格式表示出来的方式来对大量的数据进行总结。数据显示的格式允许用户把信息筛选到不同层次的细节。
数据透视表拥有几个特性:
* 内置筛选 数据透视表自动地内置了筛选,从而允许用户只浏览自己关心的细节。
* 动态布局 数据透视表具有动态布局功能,只要通过拖放数据透视表中的字段到数据透视表的其他区域,就能够轻易地改变数据的显示格式。
* 自动汇总报表数据 不管用户决定采用什么字段作为总结,数据都能够自动汇总。用户还能够改变数据汇总的计算类型。
* 支持各种数据源 用户能够基于各种各样的数据源创建数据透视表,这些数据源包括Excel程序清单、任何带有标签列的工作表区域和外部的数据库文件等等。
当创建数据透视表时,系统会要求用户为下面列出的四个区域选择字段:
* 页字段 页字段是数据表中主要层次的筛选。当用户选择页字段时,一定要弄清楚到底想怎样组织自己的数据。
* 行字段 行字段是更低一级的细节筛选,也是第二个层次的细节筛选。
* 列字段 列字段的筛选层次跟行字段一样。
* 数据项 数据项就是想要汇总的字段,通常比较适合用来作为数据项的字段,比如销售额、费用、库存数量等等。
**************************************************************
20
数据访问介绍
,使用MS Query能够创建从外部数据源导入数据的查询。MS Query这个工具的最大优势在于可以使用Excel的宏录制器来录制整个处理过程。在处理某些事情时,Excel比数据库能够做得更好,这些事情包括计算、分析和绘制图表等。通过把数据导入到Excel中以后,就可以利用Excel的这些优势来处理数据。
把外部数据导入到Excel的其他方法包括:
* MS Query
* ADO ( ActiveX Data Objects,ActiveX数据对象)
* DAO (Data Access Objects,数据访问对象)
* ODBC(Open Database Connectivity,开放数据库连接)
快速有效地访问Microsoft Access和其他数据库中数据的最好方法是采用ADO。支持DAO主要为了向后兼容早期版本的Access。ODBC可以用来连接各种各样的数据库,包括Microsoft SQL和Oracle等。
从Excel访问外部数据的最简单方法是使用叫做 MS Query的加载宏。
**************************************************************
二十一、
使用ADO访问数据
ActiveX Data Object(ActiveX数据对象,缩写为ADO)能够让开发人员开发通过OLE DB提供者来访问和操作数据的应用程序。我们不用使用数据透视表和MSQuery,而可以直接使用ADO同数据进行交互,这意味着只需要更少的系统开销,就能够对数据进行更多的控制。
OLE DB是一套ComponentObjectModel(组件对象模型,缩写为COM)接口,这套接口提供了访问存储在各种信息源中数据的统一接口。
ADO的目的是获取对数据源的访问、编辑和更新,这意味着可以使用ADO把数据导入到工作表中,然后更新数据,再把数据返回到表中。
在使用ADO这个模型时,将使用到下面这些关键的对象:
* Connection(连接)对象 这个对象代表了到达要使用的数据源的连接。有了到达数据源的连接以后,就能够对那个数据源执行命令了。
* Command(命令)对象 这个对象代表命令,命令就是能够被数据源处理的查询和语句。
* Parameter(参数)对象 这个对象需要同Command对象一起使用,它代表的是命令的参数。
* Recordset(记录集)对象 这个对象是ADO对象模型的真正核心。使用“记录集”对象来通过连接对数据进行操作。这个对象代表了来自表和查询结果的所有记录集合。
* Field(字段)对象 这个对象代表了“记录集”中的列。
* Error(错误)对象 这个对象代表了从数据源返回的错误。包含ADO对象的任何操作能够生成一个或者多个提供者错误。当每个错误发生时,就有一个或者多个“错误”对象放置到“连接”对象的Errors集合中。
绝大多数Excel开发人员在使用ADO时有一个目的:从数据库获取数据导入到工作簿中。
实现这个目的的基本步骤如下:
1)建立到数据源的连接。
2)获取对记录集的访问。
3)从记录集得到记录。
4)关闭到数据源的连接。
**************************************************************
二十二。
ADO 应用提高
二十三。
使用自动化
二十四
运行过程
**************************************************************
**************************************************************