23.1 VBA编程概述
23.1.1 VBA编程环境
Visual Basic工具栏
在Excel工具栏的任意一处点击鼠标右键,从弹出菜单中选择“Visual Basic”,出现Visual Basic工具栏,如下图:

图 23‑1 Visual Basic工具栏
VBA编辑器
点击Visual Basic工具栏上的


图 23‑2 Visual Basic编辑器
还有一种进入VBA编辑器的方法:点击菜单“工具 宏 Visual Basic编辑器”
通过帮助学习VBA编程
在VBA编辑器中点击“帮助”菜单,可看到打开Visual Basic联机帮助,您可以系统、完整地学习VBA编程的有关内容。
利用按钮和窗体等控件
点击Visual Basic工具栏上的


图 23‑3控件工具栏
23.1.2 Excel对象模型
从编程的角度来看,Excel的各个组成部分都称为对象,一个工作簿是一个Workbook对象,其中的每个工作表是Worksheet对象,一个单元格是range对象,等等。每种对象都有一定的“属性”。比如说,Range对象有一个value属性,代表单元格中的内容,这样,当我们想得到A4单元格的值时,就可以写这样一行代码:
x=range(“A4”).value
对象还有一定的“事件”和“方法”,比如说,workbook对象有一个beforePrint事件,当用户打印工作簿文件时发生,这样,如果我们希望在打印前提醒用户检查打印机,就可以写下面的这段代码。
Private Sub Workbook_BeforePrint(Cancel As Boolean)
MsgBox "请检查打印机,然后按确定。"
End Sub
下表列举了Excel的常用对象及其属性和方法
对象名 |
含义 |
属性 / 方法 |
|
属性 / 方法含义 |
Workbook |
工作簿 |
Worksheets |
属性 |
属性,所包含的工作表集合 |
Worksheets |
工作表集合 |
Count |
属性 |
集合中包含的工作表数 |
Worksheet |
工作表 |
Name |
属性 |
工作表名称 |
|
|
PrintOut |
方法 |
打印 |
|
|
PrintPreview |
方法 |
打印预览 |
Range |
单元区域 ( 格 ) |
Address |
属性 |
区域地址 |
|
|
Row |
属性 |
左上角行号 |
|
|
Column |
属性 |
左上角列号 |
|
|
Rows |
属性 |
包含的所有行 |
|
|
Columns |
属性 |
包含的所有列 |
|
|
Value |
属性 |
值 |
|
|
Formula |
属性 |
公式内容 |
|
|
Select |
方法 |
选中区域 |
打开Excel的联机帮助,在目录树中展开“编程信息”,可看到Excel的对象模型,如下图所示。从中您可以详细了解每一种对象及其属性和方法的含义、用法。

图 23‑4 Excel对象模型
23.1.3 事件驱动的编程
如前所述,Excel中的工作簿、工作表、单元区域、单元格、工具栏等都是对象,每类对象都有自己的一套属性、方法和事件。“事件”在用户操作后发生,比如“保存”是一个事件,“打开”某个工作簿是一个事件,在某单元格中“输入”内容是一个事件,点击一个按钮还是一个事件。如果我们希望在完成某项操作的时侯执行某段程序,就要把这段程序写在该操作对应的事件处理程序中。
常用的事件有
对象 |
操作 |
事件处理程序 |
工作簿 |
打开 |
Workbook_Open |
|
关闭 |
Workbook_BeforeClose |
|
保存 |
Workbook_BeforeSave |
|
打印 |
Workbook_BeforePrint |
工作表 |
双击 |
Worksheet_BeforeDoubleClick |
|
右击 |
Worksheet_BeforeRightClick |
|
选中区域 / 单元格 |
Worksheet_SelectionChange |
|
改变单元格内容 |
Worksheet_Change |
|
激活 |
Worksheet_Activate |