首页 > 解决方案 > 使用 VBA 的用户表单输入

问题描述

因此,我有一个用户表单,其中包含以下内容 - 输入框、下拉菜单、提交按钮和关闭 (X) 按钮;在一个名为“A”的工作簿中。

我想在一个新的工作簿“B”中编写一个 VBA 代码,它将在 A 中打开用户表单,使用 B 中的值填写输入框和下拉列表,然后单击表单上的提交按钮。这可能吗?

注意:我不想更改工作簿 A 中用户表单后面已经编写的代码。

标签: excelvbaformsuser-controls

解决方案


这是可能的。

在工作簿“B”中,您需要使用 Application.Run 来运行宏(有关更多详细信息,请参阅帮助),并传递您要用于填充用户窗体的信息:

Sub CallUserFormInOtherDoc()
  Dim aList() As Variant
  Dim wb1 as Workbook
  Dim wb2 as Workbook

  Set wb1 = ThisWorkbook
  Set wb2 = Workbooks("Workbook With UserForm")

  aList = Array(1, 2, 3) 'substitute your code to populate the array for the listbox
  wb2.Activate
  Application.Run "OpenPopulateUserForm", "abc", aList
  wb1.Activate
End Sub

在工作簿“A”中,您需要一个带有打开和填充用户窗体的代码的模块:

Public Sub OpenPopulateUserForm(tbVal As String, aList() As Variant)
  Dim f As UserForm1
  Set f = New UserForm1
  f.TextBox1.Text = tbVal
  f.ListBox1.list = aList
  f.Show
End Sub

注意:

  1. 两个工作簿都必须打开
  2. 用户窗体将在工作簿“A”上工作

推荐阅读