Excel Macros 简明教程
Excel Macros - UserForms
有时,您可能需要反复收集他人的信息。Excel VBA 为您提供了一种处理此任务的简单方法 - UserForm 。与您填写的任何其他表单一样,用户窗体让您可以轻松了解要提供哪些信息。用户窗体非常友好,因为它提供的控件不言自明,必要时还附有其他说明。
用户窗体的主要优点是,您可以节省您花在信息填充方式和内容上的时间。
Creating a UserForm
要创建用户窗体,请按照以下步骤进行 −
-
在功能区上单击“开发工具”选项卡。
-
单击 Visual Basic。将为工作簿打开一个 Visual Basic 窗口。
-
Click Insert,
-
从下拉列表中选择 UserForm。
用户窗体出现在窗口右侧。
Understanding the UserForm
最大化 UserForm.xlsx – UserForm1 窗口。
你现在处于设计模式。您可以在用户窗体上插入控件,并为相应的操作编写代码。控件在工具箱中提供。用户窗体的属性在属性窗口中。UserForm1(用户窗体的标题)在项目资源管理器中的“窗体”下给出。
-
在属性窗口中将用户窗体的标题更改为 Project Report – Daily。
-
将用户窗体的名称更改为 ProjectReport。
这些更改反映在用户窗体、属性和项目资源管理器中。
Controls in the ToolBox
用户窗体将具有不同的组件。当您单击任何组件时,系统会指示您提供什么信息以及如何提供信息,或者您会看到可供选择的选项。所有这些都是通过用户窗体的工具箱中的 ActiveX 控件提供的。
Excel 提供两种类型的控件——窗体控件和 ActiveX 控件。您需要了解这两种类型的控件之间的区别。
Form controls
窗体控件是与较早版本的 Excel(从 Excel 5.0 版本开始)兼容的 Excel 原始控件。窗体控件还设计为在 XLM 宏表上使用。
您可以使用窗体控件运行宏。您可以向控件分配现有宏,或编写或记录新宏。单击控件时,宏将运行。您已了解如何从窗体控件中插入命令按钮到工作表中来运行宏。然而,这些控件无法添加到用户窗体中。
ActiveX controls
ActiveX 控件可用于 VBA 用户窗体上。ActiveX 控件具有丰富的属性,您可以使用这些属性来自定义它们的外观、行为、字体和其他特性。
您在用户窗体工具箱中拥有以下 ActiveX 控件 −
-
Pointer
-
Label
-
TextBox
-
ComboBox
-
ListBox
-
CheckBox
-
OptionButton
-
Frame
-
ToggleButton
-
CommandButton
-
TabStrip
-
MultiPage
-
ScrollBar
-
SpinButton
-
Image
除了这些控件外,Visual Basic 还为您提供了 MsgBox 函数,该函数可用于显示消息和/或提示用户采取操作。
在接下来的几节中,您将了解这些控件和 MsgBox。然后,您将能够选择需要哪些控件来设计您的用户窗体。
List Box
可以使用列表框来显示一个或多个用户可以选择文本项目列表。使用列表框显示数量或内容不同的众多选择。
-
在 UserForm 中插入一个 ListBox。
-
Click on the ListBox.
-
在 ListBox 的属性窗口中,输入 ProjectCodes 以获得名称。
列表框有三种类型 −
-
Single-selection List box − 单选列表框只允许一种选择。在这种情况下,列表框类似于一组单选按钮,只不过列表框可以更有效地处理大量项目。
-
Multiple selection List Box − 多选列表框允许一种选择或连续(相邻)选择。
-
Extended-selection List Box − 扩展选择列表框允许一种选择、连续选择和非连续(或独立)选择。
可以在属性窗口中选择这些列表框类型之一。
-
右键单击 UserForm。
-
从下拉列表中选择“查看代码”。UserForm 的代码窗口会打开。
-
单击代码窗口右上角框中的“初始化”。
-
在 Private Sub UserForm_Initialize() 下键入下列代码。
ProjectCodes.List = Array ("Proj2016-1", "Proj2016-2", "Proj2016-3", "Proj20164", "Proj2016-5")
-
单击功能区上的“运行”选项卡。
-
从下拉列表中选择“运行 Sub/用户窗体”。
接下来,你可以编写在列表中选择某项后执行操作的代码。否则,你可以仅仅显示选中的文本,例如在报表中填写项目代码的情况亦是如此。
ComboBox
你可以使用 ComboBox ,它将文本框与列表框组合起来以创建下拉列表框。与列表框相比,组合框更紧凑,但要求用户单击向下箭头以显示项列表。使用组合框从列表中仅选择一项。
-
在 UserForm 上插入“组合框”。
-
Click the ComboBox.
-
在组合框的“属性”窗口中,为“名称”键入 ProjectCodes2。
-
右键单击 UserForm。
-
从下拉列表中选择“查看代码”。
-
UserForm 的代码窗口会打开。
按下方所示键入以下内容。
ProjectCodes2.List = Array ("Proj2016-1", "Proj2016-2", "Proj2016-3", "Proj20164", "Proj2016-5")
-
单击功能区上的“运行”选项卡。
-
从下拉列表中选择“运行 Sub/用户窗体”。
单击向下箭头显示项目列表。
单击所需的项目,例如 Project2016-5。选择框中将显示已选项。
CheckBox
您可以使用复选框选中单击框中显示的一个或多个选项。这些选项会有标签,您可以清晰地看到已选选项。
复选框可以有两种状态 −
-
选择(已启用),表示为框内对勾
-
清除(已禁用),表示为空白框
在组合框中使用复选框选择选项可以节省空间。在此情况下,复选框还可以有第三个状态 −
-
混合,表示“开启”和“关闭”状态的组合,在框内显示一个黑点。这用于表示组合框中使用复选框进行的多选。
-
如下所示,在 UserForm 中插入复选框。
-
单击功能区上的“运行”选项卡。
-
从下拉列表中选择“运行 Sub/用户窗体”。
-
单击框中已选选项。
OptionButton
您可以使用选项按钮(也称为单选按钮),在有限的互斥选项集中进行单选。选项按钮通常包含在组框或框架中。
选项按钮用一个小圆圈表示。选项按钮可以有以下两种状态之一 −
-
选择(已启用),表示为圆圈内的圆点
-
清除(已禁用),表示为空白
Frame
您可以使用框架控件(也称为组框),将相关控件组合到一个可视化单元中。通常,选项按钮、复选框或密切相关的控件会被分组到一个框架控件中。
框架控件由一个带有可选标签的矩形对象表示。
-
插入带有标题“选择”的框架。
-
在框架控件中插入带有标题“是”和“否”的两个选项按钮。选项“是”和“否”是互斥的。
-
单击功能区上的“运行”选项卡。
-
从下拉列表中选择“运行 Sub/用户窗体”。
-
单击已选选项。
ToggleButton
你可以使用一个切换按钮指示一个状态,比如是或否,或一个模式,比如开或关。这个按钮在被点击时会在启用和禁用状态之间切换。
如下图所示在 UserForm 中插入一个切换按钮 −
-
单击功能区上的“运行”选项卡。
-
从下拉列表中选择运行子/UserForm。这个切换按钮默认处于启用状态。
点击切换按钮。切换按钮将被禁用。
如果你再次点击切换按钮,它将被启用。
CommandButton
你可以使用一个命令按钮运行一个宏,当用户点击它时执行一些操作。你已经学会如何在工作表中使用一个命令按钮来运行一个宏。
命令按钮也被称为推送按钮。如下图所示在 UserForm 中插入一个命令按钮 −
-
右击命令按钮。
-
在 sub Commandbutton1_click 中输入以下代码。
ProjectCodes2.DropDown
-
单击功能区上的“运行”选项卡。
-
从下拉列表中选择“运行 Sub/用户窗体”。
点击命令按钮。组合框的下拉列表打开,因为这是你在代码中编写的操作。
Message Box Icon Displays
你可以使用消息框图标显示来描绘具体的消息。你有各种消息框图标,以满足你的目的 −
-
在 ScrollBar1_scroll 下键入以下代码。
MsgBox "Select Ok or Cancel", vbOKCancel, "OK - Cancel Message"
MsgBox "It's an Error!", vbCritical, "Run time result"
MsgBox "Why this value", vbQuestion, "Run time result"
MsgBox "Value Been for a Long Time", vbInformation, "Run time result"
MsgBox "Oh Is it so", vbExclamation, "Run time result"
-
单击功能区上的“运行”选项卡。
-
从下拉列表中选择“运行 Sub/用户窗体”。
-
Drag the scroll box.
你将依次收到以下消息框。