0
我需要创建将在运行时创建的代码CommandButton
。这个命令按钮是动态的,因为它基于用户数据。在运行时创建的命令按钮代码不起作用[Excel VBA]
User_From代码
Private Sub UserForm_Activate()
Dim ctlTXT As Control
For RevNo = 1 To RevCounter
Set ctlTXT = Me.Controls.Add("Forms.CommandButton.1")
ctlTXT.name = RevNo
ctlTXT.Caption = Sheet4.Range("D" & RevNo + 4).value
ctlTXT.Left = 18
ctlTXT.Height = 18: ctlTXT.Width = 72
ctlTXT.Top = 15 + ((RevNo - 1) * 25)
Next
Me.Height = (RevNo * 17) + 50
ReDim Preserve cmdArray(1 To RevNo)
Set cmdArray(RevNo).CmdEvents = ctlTXT
Set ctlTXT = Nothing
End Sub
类模块代码
Private Sub CmdEvents_Click()
Dim i As Integer
i = CmdEvents.name
RevisionFormPrevious.LblResponsible.Caption = Sheet4.Range("C" & i +4).value
RevisionFormPrevious.LblEdition.Caption = Sheet4.Range("D" & i + 4).value
RevisionFormPrevious.LblTelNo.Caption = Sheet4.Range("E" & i + 4).value
RevisionFormPrevious.LblFeatures.Caption = Sheet4.Range("D" & i + 4).value
RevisionFormPrevious.Features.value = Sheet4.Range("F" & i + 4).value
Load RevisionFormPrevious
RevisionFormPrevious.Show
End Sub
的问题是,如果有创建了多个按钮,该代码只能用于创建最后一个按钮当第一个和第二个按钮被点击时,什么都没有发生。
RevCounter在哪里声明,填充和调用时它的值是什么? –
你的班级的名字是什么?在你的'Class'代码中,你需要在顶部添加'Public WithEvents CmdEvents As MSForms.CommandButton',然后,在你的'Sub'中,你需要使用'Dim ctlTXT As MSForms.CommandButton'来定义它。 –
@MarkFitzgerald RevCounter is在另一个模块中声明为公共。调用时的值是可用的修订版本总数 –