Excel 宏用户窗体


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

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

创建用户窗体


要创建一个用户窗体,请执行以下操作:

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

用户窗体出现在窗口的右侧。

UserForm Appears

了解用户窗体


最大化 UserForm.xlsx – UserForm1 窗口。

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

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

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

工具箱中的控件


用户窗体将具有不同的组件。当你单击任何组件时,将向你提供有关提供什么和如何提供信息的说明,或者为你提供可供选择的选项(选项)。所有这些都是通过 UserForm 的 ToolBox 中的 ActiveX 控件提供的。

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

表单控件

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

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

ActiveX 控件

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

用户窗体工具箱中有以下 ActiveX 控件:

  • Pointer
  • Label
  • TextBox
  • ComboBox
  • ListBox
  • CheckBox
  • 选项按钮
  • Frame
  • 切换按钮
  • 命令按钮
  • TabStrip
  • 多页
  • 滚动条
  • 旋转按钮
  • Image

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

在接下来的几节中,你将了解这些控件和 MsgBox。然后,你将能够选择设计用户窗体所需的这些控件中的哪一个。

Label

你可以通过显示描述性文本(例如标题、说明和/或简要说明)来使用标签进行识别。

例子

Label

TextBox

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

例子

TextBox

List Box

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

  • 在用户窗体上插入一个列表框。
  • 单击列表框。
  • 在 ListBox 的“属性”窗口中为 Name 键入 ProjectCodes。

列表框分为三种:

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

  • 多选列表框 : 多选列表框可以选择一个选项或连续(相邻)选项。

  • 扩展选择列表框 : 一个扩展的选择列表框允许一个选择,连续的选择和不连续的(或不相交的)选择。

你可以从“属性”窗口中选择其中一种类型的列表框。

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

Initialize
  • 单击功能区上的运行选项卡。
  • 从下拉列表中选择运行子/用户窗体。
Select Run

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

ComboBox

你可以使用 ComboBox 它将文本框与列表框结合起来创建一个下拉列表框。组合框比列表框更紧凑,但需要用户单击向下箭头才能显示项目列表。使用组合框从列表中仅选择一项。

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

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

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

Code Window
  • 单击功能区上的运行选项卡。
  • 从下拉列表中选择运行子/用户窗体。
Run Tab

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

Click Down Arrow

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

Required Item

CheckBox

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

一个复选框可以有两种状态:

  • 选中(打开),在框中用勾号表示
  • Cleared(关闭),由一个清除框表示

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

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

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

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

选项按钮

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

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

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

Frame

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

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

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

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

Frame
  • 单击功能区上的运行选项卡。
  • 从下拉列表中选择运行子/用户窗体。
  • 单击你选择的选项。
Selected Option

切换按钮

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

在 UserForm 上插入一个切换按钮,如下图:

TogglebButton
  • 单击功能区上的运行选项卡。

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

Default

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

Toggle Button

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

命令按钮

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

命令按钮也称为按钮。在 UserForm 上插入命令按钮,如下图:

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

CommandButton1
  • 单击功能区上的运行选项卡。
  • 从下拉列表中选择运行子/用户窗体。
Daily Report

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

Combo Box

TabStrip

你可以在用户窗体上插入类似于 Excel 选项卡的选项卡条。

滚动条

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

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

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

Scrolling Value
  • 单击功能区上的运行选项卡。
  • 从下拉列表中选择运行子/用户窗体。
ScrollBar Report

拖动滚动框。文本 - 滚动值将显示在文本框中,因为你将其指定为滚动条滚动的操作。

Text Box

消息框 ()

你可以使用 MsgBox() 函数在单击某物时显示一条消息。它可以是指导方针或一些信息或警告或错误警报。

例如,你可以在开始滚动滚动框时显示正在滚动值的消息。

MsgBox Function

消息框图标显示


你可以使用描述特定消息的消息框图标显示。你有多个消息框图标来满足你的目的:

  • 在 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" 
  • 单击功能区上的运行选项卡。
  • 从下拉列表中选择运行子/用户窗体。
  • 拖动滚动框。

你将依次收到以下消息框。

Message Boxes

设计用户表单

现在,你已经了解了可以在用户窗体上使用的不同控件。选择控件,根据需要对它们进行分组,并按照一些有意义的顺序将它们排列在用户窗体上。将所需的操作编写为对应于各个控件的代码。

有关 UserForm 的示例,请参阅本教程库中的 VBA 教程。