我想用VBA声明和创建一个用户窗体



我正试图在VBA中借助创建一个新的用户表单

在用户表单上自动创建复选框,由阵列提供

Dim SelectionForm As Control
For r = 1 To UBound(individualValues)
SelectionForm.height = UBound(individualValues) * 30
Set c = SelectionForm.Controls.Add("Forms.CheckBox.1", "Checkbox" & r,True)
With c
.Caption = individualValues(r)
.Width = 100
.height = 20
.Top = r * 20
.Left = 10
End With
Next r
SelectionForm.Show

但我在Dim c as Control:上遇到了愚蠢的错误

用户定义类型未定义

我的想法是在VBA上创建一个新的用户表单,并用复选框填充它(来自数组,而不是链接中的范围(。

当我使用现有的用户表单时,代码是有效的,但我想与其他人共享我的代码,然后让他们手动创建一个名为UserForm1的新用户表单会有点麻烦——如果你知道我的意思的话。

因此,这里的主要问题是在宏中声明一个新的用户窗体。

我还想知道这是如何与URL中的那些人合作的,因为这只是从2014年开始的,而且当时似乎已经奏效了。所以我想知道是不是有更新导致某个图书馆停产,或者这里有什么问题。

请分析这个简单的代码,我想它会帮助你

Sub MyForm()
Dim myFRM   As Object
Dim myFRM2  As Object
' If Userform exists in workbook and its name is UserForm1
Set myFRM = UserForm1
' If You want to create userform on the fly
Set myFRM2 = ThisWorkbook.VBProject.VBComponents.Add(3)
Dim c As Object
' or
Dim d As MSForms.CheckBox
Set c = myFRM2.Designer.Controls.Add("Forms.CheckBox.1", "Checkbox1", True)
Set d = myFRM2.Designer.Controls.Add("Forms.CheckBox.1", "Checkbox2", True)
VBA.UserForms.Add(myFRM2.name).Show
ThisWorkbook.VBProject.VBComponents.Remove myFRM2
Set c = myFRM.Controls.Add("Forms.CheckBox.1", "Checkbox1", True)
Set d = myFRM.Controls.Add("Forms.CheckBox.1", "Checkbox2", True)
myFRM.Show

End Sub

最新更新