📜  Excel 宏中的用户窗体

📅  最后修改于: 2021-09-23 05:00:12             🧑  作者: Mango

UserFrom 是指屏幕上的表单或对话框,使用户能够将数据输入到 Excel 的用户界面中。它可以使用 Visual Basic 编辑器创建,用于控制数据输入和避免错误。

1. 创建用户表单:

要创建用户表单,请前往Developer tab-> Visual Basic->Insert->UserForm。

您也可以转到左侧的“项目”窗口,右键单击要使用的工作簿,然后选择“插入”->“用户窗体”。这会打开一个空白的用户表单 (UserForm1) 和一个工具箱(如果工具箱没有弹出到视图>工具箱)。

2. 命名用户窗体:

默认情况下,excel 会打开一个名为 UserForm1 的用户表单以更改该名称:

  • 前往属性窗口( view>Properties window ),这会在左侧打开一个窗格。
  • 单击“名称”部分并输入您选择的名称。 (不要加空格)
  • 当您这样做时,名称不会反映在用户表单上,因为这是表单的不同属性。
  • 前往“Caption”属性并输入名称,它将反映在您的用户窗体上。

现在让我们使用一些控件并学习如何将它们添加到我们的用户窗体中。

3. 在用户窗体中添加一个文本框:

文本框用于使用户能够将信息输入到表单中。

  • 将 TextBox 头部添加到ToolBox 上。如果默认情况下不可见,请单击(查看->工具箱)。
  • 选择文本框按钮
  • 单击用户窗体以放置它或将其拖动到您选择的位置。
  • 您可以将文本框的大小调整为您喜欢的尺寸

重命名文本框选择新文本框后,双击“属性”窗口中的“名称”属性并重命名(此处已重命名为“文本框”)。

4. 向用户窗体添加标签:

标签可用于描述输入到文本框、消息或说明中的数据类型。

  • 将 Label 头添加到ToolBox 上
  • 选择“标签”按钮
  • 单击用户窗体以放置它或将其拖动到您选择的位置。
  • 您可以将其调整为您喜欢的尺寸或将其保留为标准尺寸。

重命名标签 选择新标签后,双击“属性”窗口中的“名称”属性并重命名。此外,相应地更改“标题”属性。它已被重命名为“LblSelectSheet”,并标题为“请选择工作表”。

5. 向用户表单添加按钮:

为了使表单具有交互性,您可以放置按钮来执行某些操作。

  • 在 ToolBox上添加一个 Button 头。
  • 选择“命令按钮”按钮
  • 单击用户窗体以放置它或将其拖动到您选择的位置。
  • 您可以将其调整为您喜欢的尺寸或通过将它们拖动到表单上的新位置来重新定位按钮。

重命名按钮 选择新按钮后,双击“属性”窗口中的“名称”属性并重命名。然后更改“标题”属性,将按钮命名为与其将要执行的操作相关的名称。例如下图中的 AddSheet 和 CloseFom 按钮。在下面的图片中,2 个按钮已添加并重命名为“CmdAddSheet”和“CmdCloseFrm”,标题为“Add Sheet”和“Close Form”。

6. 给按钮添加代码:

为确保按钮执行我们需要在 VBA 中编写代码的操作,并为特定控件添加代码,双击表单中的控件,它会将您定向到特定的代码段。为每个控件添加必要的代码后,单击运行按钮以显示用户窗体。

  • 在此示例中选择按钮,例如添加工作表按钮
  • 在菜单栏上,选择查看 > 代码。
  • 这将创建一个过程,您可以在其中添加代码。
  • 输入以下代码以将另一个工作表添加到您的工作簿并根据您的选择命名。
Private Sub CmdAddSheet_Click()
Worksheets.Add before:=Worksheets(1)
ActiveSheet.Name = InputBox("please enter the name for the worksheet")
End Sub

7. 给关闭按钮添加代码

添加以下代码以通过单击“关闭自”按钮并重定向到 VBE 来关闭表单。

Private Sub CmdCloseFrm_Click()
  Unload Me
End Sub

8. 测试用户表单:

要测试用户窗体,只需转到菜单栏并点击运行按钮。它运行用户窗体并将其显示在屏幕上。例如,从组合框中选择一个工作表并将您定向到它的用户窗体,有 2 个按钮添加工作表和关闭窗体按钮在工作簿中添加一个额外的工作表,并显示关闭用户窗体。

运行上述用户表单的完整代码包括一个组合框,其中包含当前存在于工作簿中的工作表列表和按钮的功能:

Private Sub CmdAddSheet_Click()
Worksheets.Add before:=Worksheets(1)
ActiveSheet.Name = InputBox("please enter the name for the worksheet")
End Sub

Private Sub CmdCloseFrm_Click()
Unload Me
End Sub

Private Sub combobox_Change()
Worksheets(Me.combobox.Value).Select


End Sub

Private Sub UserForm_Initialize()
   
    Dim i As Integer
    i = 1
    Do While i <= Worksheets.Count
    Me.combobox.AddItem Worksheets(i).Name
    i = i + 1
    Loop
   
   
End Sub

要自动化用户表单体验或在打开工作簿时立即显示它,需要完成以下操作:

利用工作簿事件

  • 前往开发人员选项卡>Visual Basic。
  • 双击项目窗口中的“此工作簿”。
  • 将左上角的下拉菜单从常规更改为工作簿。
  • 将此行代码添加到过程“formname.show”(在下面的示例 frmFinalReport.show 中)。
  • 保存并运行。