在运行时添加控件

时间:2016-06-02 18:17:09

标签: excel excel-vba office365 vba

我非常沮丧。我想要一个按钮,允许用户在下一行复制两个ComboBox。 (单击,复制,在下面插入行,粘贴。)

到目前为止,我所做的一切都没有奏效。我已经尝试将OLE对象复制并粘贴到剪贴板,但也复制了该名称。我在创建后无法访问该对象。从头开始创建一个新对象也不起作用。有时它会默认复制组合框的名称(在运行时之前创建)。我甚至开始使用新副本。我注意到在创建第一个副本后,以下命名为ComboBox2,3,4等等。enter image description here

ActiveSheet.OLEObjects.Add ClassType:="Forms.ComboBox.1", Link:=False, DisplayAsIcon:=False, Left:=50, Top:=80, Width:=100, Height:=15

如果这是VB.NET,那就没问题了。 (创建实例,设置属性,添加处理程序,添加到控件集合。)MS Access是否更适合我的项目?可能,但目标用户没有。

1 个答案:

答案 0 :(得分:0)

上面使用的代码是创建一个新控件而不是复制控件。你想重命名你自己添加的控件吗? 如果我理解正确,我们可以获得我们添加的OleObject并根据需要更改其属性。

以下是使用VBA的示例布线,将组合框添加到下一行并重命名:

Dim combo As OLEObject

Selection.Offset(1, 0).Select

Selection.EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove

Set combo = ActiveSheet.OLEObjects.Add(ClassType:="Forms.ComboBox.1", Link:=False, _
    DisplayAsIcon:=False, Left:=Selection.Left, Top:=Selection.Top, Width:=48, Height _
    :=15)

combo.Name = "combox_newName"