为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

RISEBY 2019-07-31 09:24:48
将代码分配给动态创建的按钮我正在尝试获取一个我在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"
查看完整描述

2 回答

?
MM们

TA贡献1886条经验 获得超2个赞

这是一个例子。请修改它以满足您的需求:)


此示例将创建一个命令按钮并为其分配代码,以便在按下它时,它将显示“Hello World”。


将此代码粘贴到命令按钮的单击事件中,该按钮将动态创建新的命令按钮并为其分配代码。


Option Explicit


Dim cmdArray() As New Class1


Private 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 = Nothing


End Sub

并将此代码粘贴到类模块中


Option Explicit


Public WithEvents CmdEvents As MSForms.CommandButton


Private Sub CmdEvents_Click()


    MsgBox "Hello Word"


End Sub


查看完整回答
反对 回复 2019-07-31
  • 2 回答
  • 0 关注
  • 506 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信