使用变量初始化 Excel 用户窗体

Initialize Excel Userform with Variable

新VBA-呃... 尝试初始化用户表单并使用来自两个主要用户表单之一的值填充字段。两个领先的用户表单都具有相同的命名列表框和相同的列数,并且这些列中的数据相同。理想情况下,我想调用 userform3 并引用 userform1 或 userform2。

主要用户表单 1:

Private Sub btEditAppt_Click()
fmEditAppt.UserForm_Initialize (Me)
End Sub

OR leading userform2(按钮同名):

Private Sub btEditAppt_Click()
fmEditAppt.UserForm_Initialize (Me)
End Sub

调用 userform3:

Public Sub UserForm_Initialize(formFORM As UserForm)
Me.lbSerial = Format(formFORM.listAppts.Column(0), "0000")
Me.lbPSerial = Format(formFORM.listAppts.Column(1), "0000")
Me.tbApptDate = Format(formFORM.listAppts.Column(2), "MM/DD/YYYY")
Me.lbFirst = formFORM.listAppts.Column(3)
Me.lbLast = formFORM.listAppts.Column(4)
Me.tbDetails = formFORM.listAppts.Column(5)
End Sub

Userform 变量显然不会飞。帮助?谢谢

像往常一样调用表单,然后您可以循环浏览已加载的表单,并在找到正确的表单后使用该变量。

Dim Obj As Object
For Each Obj In VBA.UserForms
    'Assuming you only have one form open prior to showing this one
    If StrComp(Obj.Name, Me.Name, vbTextCompare) = 0 Then
        Me.lbSerial = Format(Obj.listAppts.Column(0), "0000")
        Me.lbPSerial = Format(Obj.listAppts.Column(1), "0000")
        Me.tbApptDate = Format(Obj.listAppts.Column(2), "MM/DD/YYYY")
        Me.lbFirst = Obj.listAppts.Column(3)
        Me.lbLast = Obj.listAppts.Column(4)
        Me.tbDetails = Obj.listAppts.Column(5)
    End If
Next Obj