Excel 宏 - 用户表单

有时,您可能不得不反复从他人那里收集信息。 Excel VBA 为您提供了一种处理此任务的简单方法 - UserForm。 与您填写的任何其他表格一样,UserForm 使您可以轻松理解要提供的信息。 UserForm 是用户友好的,因为所提供的控件是不言自明的,并在必要时附有附加说明。

UserForm 的主要优点是您可以节省花在填写信息的内容和方式上的时间。


创建一个用户表单

要创建一个 UserForm,请按以下步骤进行 −

  • 单击功能区上的"开发人员"选项卡。
  • 点击 Visual Basic。 工作簿的 Visual Basic 窗口打开。
  • 点击插入,
  • 从下拉列表中选择 UserForm。
创建用户表单

UserForm 出现在窗口的右侧。

用户表单出现

了解用户表单

最大化 UserForm.xlsx – UserForm1 窗口。

您现在处于设计模式。 您可以在用户表单上插入控件并为相应的操作编写代码。 这些控件在工具箱中可用。 UserForm 的属性位于"属性"窗口中。 UserForm1(UserForm 的标题)在 Projects Explorer 的 Forms 下给出。

了解用户表单
  • 在属性窗口中将 UserForm 的标题更改为 Project Report – Daily。
  • 将 UserForm 的名称更改为 ProjectReport。
ProjectReport

更改反映在用户表单、属性和项目资源管理器中。


工具箱中的控件

用户表单将具有不同的组件。 当您单击任何组件时,您将获得有关提供信息的内容和方式的说明,或者您将获得可供选择的选项(选择)。 所有这些都是通过用户表单的工具箱中的 ActiveX 控件提供的。

Excel 提供两种类型的控件——表单控件和 ActiveX 控件。 您需要了解这两种控件之间的区别。

表单控件

表单控件是与Excel 5.0 版本开始兼容的Excel 早期版本的Excel 原始控件。 表单控件也设计用于 XLM 宏表。

您可以使用表单控件运行宏。 您可以将现有的宏分配给控件,或者编写或录制新的宏。 单击控件时,宏。 您已经了解了如何从工作表中的窗体控件插入命令按钮以运行宏。 但是,不能将这些控件添加到用户表单。

ActiveX 控件

ActiveX 控件可用于 VBA 用户表单。 ActiveX 控件具有广泛的属性,您可以使用这些属性自定义它们的外观、行为、字体和其他特征。

用户表单工具箱中有以下 ActiveX 控件 −

  • Pointer
  • Label
  • TextBox
  • ComboBox
  • ListBox
  • CheckBox
  • OptionButton
  • Frame
  • ToggleButton
  • CommandButton
  • TabStrip
  • MultiPage
  • ScrollBar
  • SpinButton
  • Image

除了这些控件之外,Visual Basic 还为您提供了 MsgBox 函数,可用于显示消息和/或提示用户执行操作。

在接下来的几节中,您将了解这些控件和 MsgBox。 然后,您将能够选择需要哪些控件来设计您的用户表单。

标签

您可以通过显示描述性文本(例如标题、说明和/或简要说明)将标签用于识别目的。

示例

标签

文本框

您可以使用作为矩形框的 TextBox 来键入、查看或编辑文本。 您还可以将 TextBox 用作呈现只读信息的静态文本字段。

示例

TextBox

列表框

您可以使用列表框来显示一个或多个文本项的列表,用户可以从中进行选择。 使用列表框显示数量或内容不同的大量选项。

  • 在用户表单上插入一个列表框。
  • 单击列表框。
  • 在列表框的属性窗口中为名称键入项目代码。

列表框分为三种 −

  • 单选列表框 − 单选列表框只允许一个选择。 在这种情况下,列表框类似于一组选项按钮,只是列表框可以更有效地处理大量项目。

  • 多选列表框 − 多选列表框支持一个选择或连续(相邻)选择。

  • 扩展选择列表框 − 扩展选择列表框支持单选、连续选择和非连续(或脱节)选择。

您可以从"属性"窗口中选择这些类型的列表框之一。

列表框
  • 右键单击用户表单。
  • 从下拉列表中选择查看代码。 用户表单的代码窗口打开。
  • 单击代码窗口右上角框中的"初始化"。
  • 在 Private Sub UserForm_Initialize() 下键入以下内容。
ProjectCodes.List = Array ("Proj2016-1", "Proj2016-2", "Proj2016-3", "Proj20164", "Proj2016-5") 

初始化
  • 单击功能区上的"运行"选项卡。
  • 从下拉列表中选择运行子/用户表单。
选择运行

接下来,您可以为选择列表中的项目的操作编写代码。 否则,您可以只显示选中的文本,在报表中填写项目代码就是这种情况。

组合框

您可以使用 ComboBox 组合文本框和列表框来创建下拉列表框。 组合框比列表框更紧凑,但需要用户单击向下箭头以显示项目列表。 使用组合框仅从列表中选择一项。

  • 在用户表单上插入一个 ComboBox。
  • 单击组合框。
  • 在 ComboBox 的"属性"窗口中键入 ProjectCodes2 作为名称。
组合框
  • 右键单击用户表单。
  • 从下拉列表中选择查看代码。
  • 用户表单的代码窗口打开。

键入以下内容,如下所示。

ProjectCodes2.List = Array ("Proj2016-1", "Proj2016-2", "Proj2016-3", "Proj20164", "Proj2016-5") 

代码窗口
  • 单击功能区上的"运行"选项卡。
  • 从下拉列表中选择运行子/用户表单。
运行选项卡

单击向下箭头以显示项目列表。

单击向下箭头

单击所需项目,例如 Project2016-5。 所选选项将显示在组合框中。

必填项

复选框

您可以使用复选框来选择通过单击复选框显示的一个或多个选项。 这些选项将带有标签,您可以清楚地看到选择了哪些选项。

复选框可以有两种状态 −

  • 选中(开启),在框中用勾号表示
  • 已清除(关闭),用透明框表示

您可以使用复选框来选择组合框中的选项以节省空间。 在这种情况下,复选框也可以有第三种状态 −

  • 混合,表示开启和关闭状态的组合,由方框中的黑点表示。 这将显示以指示在带有复选框的组合框中进行多项选择。

  • 在用户表单中插入复选框,如下所示。

复选框
  • 单击功能区上的"运行"选项卡。
  • 从下拉列表中选择运行子/用户表单。
  • 单击所选选项的框。
框

选项按钮

您可以使用选项按钮(也称为单选按钮)在一组有限的互斥选项中做出单一选择。 选项按钮通常包含在组框或框架中。

选项按钮由一个小圆圈表示。 选项按钮可以具有以下两种状态之一 −

  • 选中(打开),用圆圈中的点表示
  • 清除(关闭),用空白表示

框架

您可以使用框架控件(也称为组框)将相关控件分组到一个可视单元中。 通常,选项按钮、复选框或密切相关的内容被分组在一个框架控件中。

框架控件由带有可选标签的矩形对象表示。

  • 插入带有标题"选择"的框架。

  • 在框架控件中插入两个带有标题"是"和"否"的选项按钮。 选项是和否是互斥的。

框架
  • 单击功能区上的"运行"选项卡。
  • 从下拉列表中选择运行子/用户表单。
  • 点击您选择的选项。
选定选项

切换按钮

您可以使用切换按钮来指示状态(例如是或否)或模式(例如打开或关闭)。 单击该按钮时,该按钮会在启用和禁用状态之间交替。

在用户表单上插入一个切换按钮,如下所示 −

切换按钮
  • 单击功能区上的"运行"选项卡。

  • 从下拉列表中选择运行子/用户表单。 默认情况下,切换按钮将处于启用状态。

默认

单击切换按钮。 切换按钮将被禁用。

切换按钮

如果您再次单击切换按钮,它将被启用。

命令按钮

您可以使用命令按钮来运行宏,当用户单击它时执行某些操作。 您已经学习了如何使用工作表上的命令按钮来运行宏。

命令按钮也称为按钮。 在用户表单上插入一个命令按钮,如下所示 −

命令按钮
  • 右键单击命令按钮。
  • 在子 Commandbutton1_click() 中键入以下代码。
ProjectCodes2.DropDown 

命令按钮
  • 单击功能区上的"运行"选项卡。
  • 从下拉列表中选择运行子/用户表单。
每日报告

单击命令按钮。 组合框的下拉列表打开,因为它是您在代码中编写的操作。

组合框

标签条

您可以在用户表单上插入类似于 Excel 选项卡的选项卡条。

滚动条

您可以使用滚动条通过单击滚动箭头或拖动滚动框来滚动一系列值。

通过在需要的位置绘制滚动条,在用户表单上插入滚动条,并调整滚动条的长度。

滚动条
  • 右键单击滚动条。
  • 从下拉列表中选择查看代码。 代码窗口打开。
  • 在 sub ScrollBar1_Scroll() 下添加以下行。
TextBox2.Text = "Scrolling Values" 

滚动值
  • 单击功能区上的"运行"选项卡。
  • 从下拉列表中选择运行子/用户表单。
滚动条报告

拖动滚动框。 Text – Scrolling Values 将显示在文本框中,因为您将其指定为滚动条滚动的动作。

文本框

MsgBox ()

您可以使用 MsgBox() 函数在您单击某个内容时显示一条消息。 它可以是指南或一些信息或警告或错误警报。

例如,您可以在开始滚动滚动框时显示一条消息,告知值正在滚动。

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 教程。