Excel 宏 - 用户表单
有时,您可能需要反复从其他人那里收集信息。Excel VBA 为您提供了处理此任务的简单方法 - UserForm。与您填写的任何其他表单一样,用户表单使您可以轻松理解要提供哪些信息。UserForm 是用户友好的,因为所提供的控件是不言自明的,并在必要时附有附加说明。
用户表单的主要优点是您可以节省在填写信息的内容和方式上花费的时间。
创建用户表单
要创建用户窗体,请按以下步骤操作 -
- 单击功能区上的“开发人员”选项卡。
- 单击“Visual Basic”。工作簿的 Visual Basic 窗口打开。
- 单击插入,
- 从下拉列表中选择用户窗体。
用户窗体出现在窗口的右侧。
了解用户表单
最大化 UserForm.xlsx – UserForm1 窗口。
您现在处于设计模式。您可以在用户窗体上插入控件并为相应的操作编写代码。这些控件位于工具箱中。UserForm 的属性位于“属性”窗口中。UserForm1(用户窗体的标题)在项目资源管理器的窗体下给出。
- 在属性窗口中将用户窗体的标题更改为“项目报告 - 每日”。
- 将 UserForm 的名称更改为 ProjectReport。
这些更改反映在用户窗体、属性和项目资源管理器中。
工具箱中的控件
用户窗体将具有不同的组件。当您单击任何组件时,您将收到有关提供什么信息以及如何提供信息的说明,或者您将收到可供选择的选项(选项)。所有这些都是通过用户窗体工具箱中的 ActiveX 控件提供的。
Excel 提供两种类型的控件 - 表单控件和 ActiveX 控件。您需要了解这两种类型的控件之间的区别。
表单控件
表单控件是 Excel 原始控件,从 Excel 5.0 版本开始与早期版本的 Excel 兼容。表单控件也设计用于 XLM 宏表。
您可以使用表单控件来运行宏。您可以将现有宏分配给控件,或者编写或录制新宏。当单击该控件时,宏。您已经了解了如何从工作表中的表单控件插入命令按钮来运行宏。但是,这些控件无法添加到用户窗体中。
ActiveX 控件
ActiveX 控件可在 VBA 用户窗体上使用。ActiveX 控件具有广泛的属性,您可以使用它们来自定义其外观、Behave、字体和其他特征。
用户窗体工具箱中有以下 ActiveX 控件 -
- 指针
- 标签
- 文本框
- 组合框
- 列表框
- 复选框
- 选项按钮
- 框架
- 切换按钮
- 命令按钮
- 标签条
- 多页
- 滚动条
- 旋转按钮
- 图像
除了这些控件之外,Visual Basic 还提供了 MsgBox 函数,可用于显示消息和/或提示用户执行操作。
在接下来的几节中,您将了解这些控件和MsgBox。然后,您将能够选择设计用户窗体时需要哪些控件。
标签
您可以通过显示描述性文本(例如标题、说明文字和/或简短说明)来使用标签来进行识别。
例子
文本框
您可以使用矩形文本框来键入、查看或编辑文本。您还可以使用文本框作为显示只读信息的静态文本字段。
例子
列表框
您可以使用列表框来显示一个或多个文本项的列表,用户可以从中进行选择。使用列表框显示大量数量或内容各异的选项。
- 在用户窗体上插入一个列表框。
- 单击列表框。
- 在列表框的属性窗口中键入 ProjectCodes 作为名称。
有三种类型的列表框 -
单选列表框- 单选列表框仅支持一个选择。在这种情况下,列表框类似于一组选项按钮,只不过列表框可以更有效地处理大量项目。
多重选择列表框- 多重选择列表框可以实现一项选择或连续(相邻)选择。
扩展选择列表框- 扩展选择列表框支持一项选择、连续选择和非连续(或不相交)选择。
您可以从“属性”窗口中选择这些类型的列表框之一。
- 右键单击用户窗体。
- 从下拉列表中选择查看代码。用户窗体的代码窗口打开。
- 单击代码窗口右上角框中的“初始化”。
- 在 Private Sub UserForm_Initialize() 下键入以下内容。
ProjectCodes.List = Array ("Proj2016-1", "Proj2016-2", "Proj2016-3", "Proj20164", "Proj2016-5")
- 单击功能区上的“运行”选项卡。
- 从下拉列表中选择运行子/用户窗体。
接下来,您可以编写代码以执行在列表中选择项目的操作。否则,您可以只显示所选的文本,这就是在报告中填写项目代码的情况。
组合框
您可以使用将文本框与列表框组合在一起的ComboBox来创建下拉列表框。组合框比列表框更紧凑,但需要用户单击向下箭头才能显示项目列表。使用组合框仅从列表中选择一项。
- 在用户窗体上插入组合框。
- 单击组合框。
- 在 ComboBox 的“属性”窗口中键入 ProjectCodes2 作为“名称”。
- 右键单击用户窗体。
- 从下拉列表中选择查看代码。
- 用户窗体的代码窗口打开。
键入以下内容,如下所示。
ProjectCodes2.List = Array ("Proj2016-1", "Proj2016-2", "Proj2016-3", "Proj20164", "Proj2016-5")
- 单击功能区上的“运行”选项卡。
- 从下拉列表中选择运行子/用户窗体。
单击向下箭头可显示项目列表。
单击所需的项目,例如 Project2016-5。所选选项将显示在组合框中。
复选框
您可以使用复选框来选择一个或多个通过单击复选框而显示的选项。这些选项将带有标签,您可以清楚地看到选择了哪些选项。
复选框可以有两种状态 -
- 选定(打开),在框中用勾号标记表示
- 已清除(关闭),由清除框表示
您可以使用复选框来选择组合框中的选项以节省空间。在这种情况下,复选框也可以有第三种状态 -
混合,表示开和关状态的组合,用方框中的黑点表示。这将显示以指示带有复选框的组合框中的多个选择。
在用户窗体中插入复选框,如下所示。
- 单击功能区上的“运行”选项卡。
- 从下拉列表中选择运行子/用户窗体。
- 单击所选选项的框。
选项按钮
您可以使用选项按钮(也称为单选按钮)在一组有限的互斥选项中做出单一选择。选项按钮通常包含在组框或框架中。
选项按钮由小圆圈表示。选项按钮可以具有以下两种状态之一 -
- 选定(打开),用圆圈中的点表示
- 清除(关闭),用空白表示
框架
您可以使用框架控件(也称为组框)将相关控件分组到一个视觉单元中。通常,选项按钮、复选框或密切相关的内容都分组在框架控件中。
框架控件由带有可选标签的矩形对象表示。
插入一个标题为“选择”的框架。
在框架控件中插入两个标题为“是”和“否”的选项按钮。选项“是”和“否”是互斥的。
- 单击功能区上的“运行”选项卡。
- 从下拉列表中选择运行子/用户窗体。
- 单击您选择的选项。
切换按钮
您可以使用切换按钮来指示状态(例如“是”或“否”)或模式(例如“打开”或“关闭”)。单击该按钮时,该按钮会在启用和禁用状态之间交替。
在用户窗体上插入一个切换按钮,如下所示 -
单击功能区上的“运行”选项卡。
从下拉列表中选择运行子/用户窗体。默认情况下,切换按钮处于启用状态。
单击切换按钮。切换按钮将被禁用。
如果再次单击切换按钮,它将启用。
命令按钮
您可以使用命令按钮来运行宏,该宏在用户单击它时执行某些操作。您已经学习了如何使用工作表上的命令按钮来运行宏。
命令按钮也称为按钮。在用户窗体上插入命令按钮,如下所示 -
- 右键单击命令按钮。
- 在子 Commandbutton1_click() 中键入以下代码。
ProjectCodes2.DropDown
- 单击功能区上的“运行”选项卡。
- 从下拉列表中选择运行子/用户窗体。
单击命令按钮。组合框的下拉列表将打开,因为它是您在代码中编写的操作。
标签条
您可以在用户窗体上插入类似于 Excel 选项卡的选项卡条。
滚动条
您可以通过单击滚动箭头或拖动滚动框,使用滚动条滚动一系列值。
通过在所需位置绘制滚动条,在用户窗体上插入滚动条,并调整滚动条的长度。
- 右键单击滚动条。
- 从下拉列表中选择查看代码。代码窗口打开。
- 在子 ScrollBar1_Scroll() 下添加以下行。
TextBox2.Text = "Scrolling Values"
- 单击功能区上的“运行”选项卡。
- 从下拉列表中选择运行子/用户窗体。
拖动滚动框。当您将其指定为滚动条滚动操作时,文本 - 滚动值将显示在文本框中。
消息框()
您可以使用 MsgBox () 函数在单击某项时显示一条消息。它可以是指南或某些信息或警告或错误警报。
例如,当您开始滚动滚动框时,您可以显示一条消息,表明值正在滚动。
消息框图标显示
您可以使用消息框图标显示来描绘特定消息。您有多个消息框图标来满足您的目的 -
- 在 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"
- 单击功能区上的“运行”选项卡。
- 从下拉列表中选择运行子/用户窗体。
- 拖动滚动框。
您将陆续看到以下消息框。
设计用户表单
现在,您已经了解了可以在用户窗体上使用的不同控件。选择控件,根据需要对它们进行分组,并按照一些有意义的顺序将它们排列在用户窗体上。将所需的操作编写为与各个控件相对应的代码。
有关 UserForm 的示例,请参阅本教程库中的 VBA 教程。