因此,我有一个用户表单,其中包含以下内容-输入框,下拉菜单,提交按钮和关闭(X)按钮;在一个名为“ A”的工作簿中。
我想在新工作簿“ B”中编写VBA代码,这将在A中打开用户表单,使用B中的值填写输入框和下拉列表,然后单击表单上的提交按钮。这可能吗?
注意:我不想更改工作簿A中用户表单后面已经编写的代码。
答案 0 :(得分:0)
有可能。
在工作簿“ 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
请注意: