介绍Excel中“控件”与VBA的基本知识
一、“控件”的基本知识
(一)什么是“控件”
“控件”是“控件工具箱”提供的一系列对象,拥有自己的名称,存储于文档中。
“控件”具有“属性”、“方法”和“事件”
“属性”是描述其所属控件的某个可量化特征的变量,在 VBA 程序中,“属性”是使用点标记引用的:首先写下控件名称,输入小数点,将列出“属性名”和“方法名”清单,然后可以选择或输入“属性”名称,如:TextBox1.Text
“方法”是控件“知道”如何执行的某种操作,在 VBA 程序中,“方法”也是使用点标记引用的:首先写下“控件”名称,输入小数点,将列出“属性名”和“方法名”清单,然后可以选择或输入方法“名称”,如:TextBox1.Activate
“事件”是一种被对象“意识到”已经发生的操作,用户一般通过“事件”来完成一系列的程序运行,用户在Office中开发VBA应用,主要工作就是编制各种“控件”的各种“事件”对应的VBA程序(如单击“命令按钮”控件对应事件的VBA程序代码)。
(二)什么时候使用控件
如果需要在Microsoft Office中交互地完成某一任务,那么可以编写控件方法对应的VBA程序。
例如,编写单击“命令按钮”的“方法”对应的更名保存文件的VBA程序
二、Visual Basic编辑器与控件
(一)什么是Visual Basic编辑器
Visual Basic编辑器是一个用于编写和编辑VBA 的功能强大的工具,它使用户得以扩展宏的功能和多用性,而非局限于通过简单的录制就可以完成的任务。
要打开该工具,执行“工具/宏/Visual Basic 编辑器”(或按 Alt+F11)。
(二)Visual Basic编辑器窗口
Visual Basic 编辑器可在不同的窗口中显示不同的信息。开始查看与编辑宏时,需要重点了解以下几个窗格。
1.“项目资源管理器”窗格
(1)作用
在直接打开 Visual Basic 编辑器时,可以使用“项目资源管理器”窗口来选择要处理的VBA
执行“视图/工程资源管理器”命令即可使之显示,
右击窗格,“可连接的”选项用于控制该窗格是否可嵌入编辑器窗口
(2)结构
“项目资源管理器”采用树状视图(类似于 Windows® 资源管理器中的树状视图)中显示所有项目的“代码”和“宏”。
该树状结构中的根对象(项目)是您所处理的当前工作簿以及其他一些打开的工作簿和外接程序
项目使用的主要元素分别存储在每个项目的独立文件夹中,包括:
①MicroSoft Excel对象列表(各Sheet、ThisWorkBook)
②模块(如果有的话),用户录制的与工作表相关的宏代码
③类模块(如果有的话),用户为工作簿创建的用户定义对象的定义
④用户窗体(如果有的话),提供了一个可视界面,用户可以在其上放置图形控件,例如按钮、图像和文本区域
2.“代码”窗格
“代码”窗口是 Visual Basic 编辑器中最大的窗口,其顶部有两个下拉框
①左侧的下拉框(即“对象”框)选择要处理的对象
②右侧的下拉框(即“方法”框)用于选择当前对象中的各种方法
3.“属性”窗格
作用:用于查看和更改与选定对象相关的各种“属性”。对于控件而言,通常有包括“名称”在内的许多“属性”是可用的。
操作:对“属性”窗口中的“属性”的更改通常直接选择相应“属性项”直接更改;此外,也可以通过VBA程序设置或修改。
(三)如何手工编写VBA程序
在“项目资源管理器”窗格选中要添加“VBA”程序的“项目”
单击“代码”窗格左上角“控件”下拉列表框,单击要编写其对应程序的控件;
再单击该窗格右上角“方法”下拉列表框,单击要编写其对应程序的控件,即可在代码窗格中输入与编辑VBA程序源代码。
三、控件与VBA程序
㈠“控件”与“VBA程序”的关系
控件的“方法”通过其对应的VBA程序实现;当在Excel中添加”控件”后,可以通过编写该“控件”某一“事件”对应的VBA程序。
㈡Excel中的“控件”工具栏
右击Excel的工具栏,选择“控件工具栏”即可使之“显示|消隐”。
Excel的控件工具栏从左至少右依次为:
设计模式|退出设计模式、属性、查看代码、复选框、文本框、按钮、选项按钮、列表框、组合框、切换按钮、滚动条、微调项、标签、图像、其他控件。
⒈“标签”和“文本框”
⑴标签
用于显示文本信息,本身不具有可输入功能;标签的默认属性是Caption属性,标签的默认事件是Click事件。
标签的基本属性包括:
名称
Caption:标签文本内容
BackColor:背景色
ForColor:前景色
WordWrap:词绕转
Width:宽度
Height:高度
Font:字体
……
⑵文本框
用于交互输入与显示文本信息,本身具有交互性;文本框的默认属性是Value属性,文本框的默认事件是Change事件。
文本框的基本属性包括:
名称
Text:文本
Value:数据
ScrollBars:滚动条
BackColor:背景色
ForColor:前景色
WordWrap:词绕转
MultiLine:多行
MaxLength:最大长度
Width:宽度
Height:高度
Font:字体
……
⒉ “选项按钮”和“复选框”
⑴选择按钮
用于显示组中的某一项是否被选中,请注意框架中的各个选项按钮是互斥的;选项按钮默认属性是 Value 属性,选项按钮默认事件是 Click 事件。
选择按钮的基本属性包括:
名称
Value:选中否
Caption:显示选项文本信息
BackColor:背景色
ForColor:前景色
GroupName:组名
WordWrap:词绕转
Width:宽度
Height:高度
Font:字体
……
⑵复选框
可以允许用户从两个值中选择一个,例如从 Yes/No、True/False 或 On/Off 中进行选择;复选框的默认属性是 Value 属性,复选框的默认事件是 Click 事件。
复选框的基本属性包括:
名称
Caption:显示选项文本信息
Value:选中否
BackColor:背景色
ForColor:前景色
GroupName:组名
WordWrap:词绕转
Width:宽度
Height:高度
Font:字体
……
⒊“命令按钮”
通过选用其某种事件对应的VBA程序来启动、结束或中断一项操作或一系列操作;在命令按钮上可以显示文本或图片,或者二者同时显示;命令按钮的默认属性是AutoSize属性,命令按钮的默认事件是Click事件。
“命令按钮”的基本属性包括:
名称
Picture:显示的图像
Caption:显示的文本
BackColor:背景色
ForColor:前景色
Width:宽度
Height:高度
Font:字体
……
⒋“列表框”和“组合框”
⑴列表框
用于显示若干个值的列表,用户可以从中选择一个或多个值;列表框的默认属性是 Value 属性,列表框的默认事件是 Click 事件。
注意:不能在下拉列表框中放入文本。主要用于列出多项供选择(单项选择或多项选择均可)的文本信息。
列表框的基本属性包括:
名称:ListBox
Text:文本
Value:数据
TopIndex:顶部选项索引值
BackColor:背景色
ForColor:前景色
MultiSelect:多选
Width:宽度
Height:高度
Font:字体
……
列表框的赋值方法
①用AddItem属性加载单列数据到ListBox1,并取值到文本框与标签
②用AddItem、List属性加载双列数据到ListBox1,并取值到标签
③用数组、List属性或Column属性赋值ListBox1和2
⑵组合框
主要用于列出多项供选择(单项选择)的文本信息;组合框将列表框和文本框的特性结合在一起,用户可以像在文本框中那样输入新值,也可以像在列表框中那样选择已有的值;组合框的默认属性是Value属性,组合框的默认事件是 Change 事件。
注意:如果希望在任何时候都将列表中的各行数据显示出来,那么可以使用列表框代替组合框;如果希望在使用组合框时,只使用列表中列出的值,可设置组合框的 Style 属性,以使该控件看上去像下拉列表框
组合框的基本属性包括:
名称:ComboBox
Text:文本
Value:数据
TopIndex:顶部选项索引值
BackColor:背景色
ForColor:前景色
Width:宽度
Height:高度
Font:字体
……
组合框的赋值方法
①AddItem方法对组合框赋值
②用数组和List属性对组合框赋值
⒌ “切换按钮”
显示项目的选中状态。
说明:用切换按钮显示某个项目是否被选中;也可在框架中使用切换按钮,以在一组相关项目中选择一个或多个项目;切换按钮的默认属性是 Value 属性,切换按钮的默认事件是Click事件。
“切换按钮”的基本属性包括:
名称:ToggleButton1(默认)
BackColor:背景颜色
Caption:显示的文本内容
ForeColor:前景颜色
Value:True和False
AutoSize:自动调整大小(True和False)
Enable:使能(True和False)
WordWrap:词绕转
Height:高度
Width:宽度
Font:字型
……
⒍“数值调节钮”和“滚动条”
⑴数值调节钮
主要用于增加及减少数值。
说明:单击数值调节钮只会更改数值调节钮的值。可以编写代码来用数值调节钮更新其他控件的显示值,例如标签控件的Caption属性或文本框的Text属性。若要创建横向或纵向的数值调节钮,请在窗体中沿横向或纵向拖动数值调节钮的尺寸控点;数值调节钮的默认属性是 Value 属性,数值调节钮的默认事件是 Change 事件。
数值调节钮的基本属性包括:
名称:SpinButton1
Delay:50
Max:100
Min:0
SmallChange:1
BackColor:背景色
ForColor:前景色
Value:值
Width:宽度
Height:高度
Font:字体
……
数值调节钮的赋值:“直接赋值”与“数组赋值”。
⑵滚动条
根据滚动块的位置,返回或设置另一控件的值;滚动条是可放置在窗体中的独立控件。
为了用滚动条设置或读取其他控件的值,必须为滚动条的事件和方法编写代码。例如,为了用滚动条更新文本框的值,可编写代码读取滚动条的Value属性,然后设置文本框的Value属性;滚动条的默认属性是 Value 属性,滚动条的默认事件是 Change 事件。
滚动条的基本属性包括:
名称:ScrollBar
Max:2767
Min:0
SmallChange:1
BackColor:背景色
ForColor:前景色
Value:值
Width:宽度
Height:高度
Font:字体
……
滚动条的赋值:“直接赋值”与“数组赋值”。
四、进一步学习需要的预备知识
㈠激活工作表时发生的事件
Private Sub Worksheet_Activate()
……
End Sub
㈡选中“组合框”时发生的事件
Private Sub ComboBoxClass_GotFocus()
……
End Sub
㈢“组合框(ComboBox2_1~ComboBox2_12)”的典型循环赋值程序代码
Dim ComboBox As Object
Dim i As Integer
Dim c(1 To 3) As String
c(1) = ""
c(2) = "正确"
c(3) = "错误"
For i = 1 To 12 '循环对12个“是非题组合框”赋值
Set ComboBox = Sheets("基于控件的自测练习").Shapes.Item("ComboBox2_" & i).OLEFormat.Object.Object
ComboBox.List() = c()
Next i
㈣两个工作表之间数据的转换
⒈基本语句
Sheets("A工作表名").Cells(行序号, 列序号) = Sheets("B工作表").Cells(列序号, 行序号2)
作用:把“B工作表”中指定单元格的数据赋值给“A工作表”的指定单元格。
⒉案例
由“参考答案”工作表向“基于控件的试卷”工作表复制参考答案的典型语句如下:
'获取“单选题”参考答案
For i = 2 To 15
Sheets("基于控件的自测练习").Cells(i + 5 * (i - 1) - i + 5, 3) = Sheets("参考答案").Cells(i, 2)
Next i