将代码分配给动态创建的按钮

将代码分配给动态创建的按钮

我正在尝试获取一个我在excel userform表单上动态创建的按钮来运行一个宏transfer,我在Module 1项目的“模块”部分写了这个宏。

下面我已经粘贴了我迄今为止在userform中编写的代码,它实际上设法Transfer to Sheet在框架中创建按钮(我也是动态创建的)但是出于某种原因,当我运行VBA时,我得到一条438 error消息说Object doesn't support this property or method

谁能告诉我怎么解决这个问题?

这是代码:

Dim framecontrol1 As ControlSet workitemframe = Controls.Add("Forms.Frame.1")With workitemframe    .Width = 400
    .Height = 400
    .Top = 160
    .Left = 2
    .ZOrder (1)
    .Visible = TrueEnd Withworkitemframe.Caption = "Test"Set framecontrol1 = workitemframe.Controls.Add("Forms.commandbutton.1")With framecontrol1    .Width = 100
    .Top = 70
    .Left = 10
    .ZOrder (1)
    .Visible = True
    .Caption = "Transfer to Sheet"End Withframecontrol1.OnAction = "transfer"


RISEBY
浏览 507回答 2
2回答

MM们

这是一个例子。请修改它以满足您的需求:)此示例将创建一个命令按钮并为其分配代码,以便在按下它时,它将显示“Hello World”。将此代码粘贴到命令按钮的单击事件中,该按钮将动态创建新的命令按钮并为其分配代码。Option ExplicitDim cmdArray() As New Class1Private Sub CommandButton1_Click()    Dim ctl_Command As Control    Dim i As Long    i = 1    Set ctl_Command = Me.Controls.Add("Forms.CommandButton.1", "CmdXYZ" & i, False)    With ctl_Command        .Left = 100        .Top = 100        .Width = 255        .Caption = "Click Me " & CStr(i)        .Visible = True    End With    ReDim Preserve cmdArray(1 To i)    Set cmdArray(i).CmdEvents = ctl_Command    Set ctl_Command = NothingEnd Sub并将此代码粘贴到类模块中Option ExplicitPublic WithEvents CmdEvents As MSForms.CommandButtonPrivate Sub CmdEvents_Click()    MsgBox "Hello Word"End Sub
打开App,查看更多内容
随时随地看视频慕课网APP