我使用以下代码在 Excel 用户窗体上动态创建按钮:
With Me.CurrentFrame.Controls.Add("Forms.CommandButton.1")
.Caption = "XYZ"
.name = "AButton"
.Font.Bold = True
.ForeColor = &HFF&
... blah blah blah
End With
我想指定一个函数在单击这些按钮时运行,但我找不到直接的方法来执行此操作,因为按钮本身没有属性。
有没有办法使用上面的习惯用法来做到这一点?我应该以不同的方式处理这整件事吗?
最佳答案
在Excel表单中动态添加控制事件;您需要首先在类模块中添加事件。对于我的示例,我将添加一个名为 clsTEST 的类模块,其中包含一个事件 btn_click()
'#### CLASS NAMED clsTEST
Public WithEvents btn As MSForms.CommandButton
Public frm As UserForm
Dim iCount As Long
Private Sub btn_Click()
iCount = IIf(iCount < 1, 1, iCount + 1)
btn.Caption = "Count " & Str(iCount)
End Sub
'### END CLASS
如您所见,唯一要做的就是将按钮上的标题设置为您单击它的次数。 接下来,在表单代码中输入以下内容:
Dim mColButtons As New Collection '## SET A NEW COLLECTION
Private Sub UserForm_Activate()
'
Dim btnEvent As clsTEST
Dim ctl As MSForms.Control
'
Set ctl = Me.Controls.Add("Forms.CommandButton.1")
'
With ctl
.Caption = "XYZ"
.Name = "AButton"
END With
'
Set btnEvent = new clsTEST
Set btnEvent.btn = ctl
set btnEvent.frm = Me
'
mColButtons.add btnEvent
'End Sub
当您激活表单时,它将创建一个按钮。每次单击该按钮时,标题都会更改。
关于excel - 将单击 VBA 函数分配给 Excel 用户窗体上动态创建的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/566770/