【问题标题】:Pass a parameter to an event handler in Vba将参数传递给 Vba 中的事件处理程序
【发布时间】:2016-12-28 20:57:54
【问题描述】:

我需要将参数(ref 或 val 无关紧要)传递给与运行时生成的控件(复选框)关联的事件。我似乎无法找到方法。 (我不得不承认我什至尝试了一些肮脏的公开声明......无济于事) 另一方面,我如何从事件中访问控件的属性?

我生成复选框的部分:

For Each distinctClientList In Range("DA3:DA" & LastRow).Cells

    Dim MaTextBox As Object
    Set MaTextBox = Client_picking.Controls.Add("Forms.TextBox.1")
    With MaTextBox
        .Text = CStr(distinctClientList.Value)
        .Left = 20
        .top = topref + (20 * Client_picking.i)
        .Width = 90:
        .Height = 20
    End With

    Dim MaCheckBoxfile As Object
    Set MaCheckBoxfile = Client_picking.Controls.Add("Forms.CheckBox.1")
    With MaCheckBoxfile
        .Caption = "fichier"
        .Left = 140
        .top = topref + (20 * Client_picking.i)

    End With


    ReDim Preserve ButArray(1 To Client_picking.i)

    Set ButArray(Client_picking.i).butEvents() = MaCheckBoxfile
    Client_picking.i = Client_picking.i + 1
Next

我的处理程序

Public WithEvents butEvents As MSForms.CheckBox    
Private Sub butEvents_click()If Checked Then
    MsgBox "checked" & /*This is where i would put my parameter... IF I HAD ONE!*/
End If

结束子

【问题讨论】:

  • 参数是什么?你可以在类中使用属​​性吗?
  • 您还可以在将类添加到数组时传入对象,例如使用用户表单,传入对父对象的引用,用户表单?
  • 谢谢小费,我要试试这些。我希望我能够完成一项工作。

标签: vba events userform


【解决方案1】:

该控件在类中分配给一个名为 butEvents 的变量,因此您可以通过它访问它的所有属性:

butEvents.BackColor = vbRed

【讨论】:

    猜你喜欢
    • 2012-08-30
    • 1970-01-01
    • 2021-05-30
    • 2011-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多