Vba Excel:是否可以克隆表单控件?

Vba Excel:是否可以克隆表单控件?,excel,vba,Excel,Vba,我必须生成数百个具有相同项值的表单控件下拉列表。如果可能的话,我想克隆它们。而且我应该能够更改一些属性,如名称、操作任何想法都将非常感激 Sub Macro1() Dim c As Range, i As Long, nm As String Dim sht As Worksheet Set sht = ActiveSheet i = 0 For Each c In sht.Range("A2:A20") i = i + 1 nm = "

我必须生成数百个具有相同项值的表单控件下拉列表。如果可能的话,我想克隆它们。而且我应该能够更改一些属性,如名称、操作任何想法都将非常感激

Sub Macro1()
Dim c As Range, i As Long, nm As String
Dim sht As Worksheet

    Set sht = ActiveSheet
    i = 0
    For Each c In sht.Range("A2:A20")
        i = i + 1
        nm = "dd_" & i
        On Error Resume Next
        sht.Shapes(nm).Delete
        On Error GoTo 0

        With sht.DropDowns.Add(c.Left, c.Top, c.Width, c.Height)
            .Name = nm
            .ListFillRange = "K1:K6"
            .LinkedCell = ""
            .DropDownLines = 8
            .Display3DShading = False
            .OnAction = "HandleClick"
        End With

    Next c

End Sub
处理程序:

Sub HandleClick()
    Debug.Print Application.Caller
End Sub

以编程方式创建它们(即在运行时而不是设计时)。如果@steve040发布了一些工作代码,我会对他的答案进行投票。在运行时创建控件并不容易,因此举个例子会很有帮助。代码运行良好,但我想知道表单控件克隆是否可行?我认为您唯一的选择可能是通过复制/粘贴,这不是很整洁。