如何复制组合框,以便自动更改单元格链接

时间:2011-02-16 12:09:59

标签: excel vba combobox hyperlink copy-paste

是否可以复制创建的组合框并将其粘贴到另一个单元格中 那个细胞链也改变了?

我使用Excel 2007进行此操作。

示例:我在A5中有组合框,单元链接指向B5。我要复制 组合框到单元格A4,单元格链接指向B4。

我需要复制超过50个组合框。当我按下包含宏的命令按钮来复制整行并将所有行插入新行时,我试图使用它。

我找到了一个答案,但VBA显示“编译错误:用户定义的类型未定义!”和“TypeOf cbo.Object Is msforms.ComboBox”是粗体。

Macro我发现:

Sub Test()
    Dim cbo As OLEObject

    For Each cbo In ActiveSheet.OLEObjects
        If TypeOf cbo.Object Is msforms.ComboBox Then
            cbo.LinkedCell = cbo.TopLeftCell.Offset(, 1).Address
        End If
    Next
End Sub

2 个答案:

答案 0 :(得分:1)

原始答案让我走上正轨并为“ActiveX控件”工作。我需要使用标准的Excel“Form control”组合框来做同样的事情,它非常相似,除了它是一个形状对象,需要选择进行操作。这是我的代码,对我有用:

Sub AllocateLinkedCellsToComobBoxes()

Dim myShape As Shape

For Each myShape In ActiveSheet.Shapes
    If myShape.Type = msoFormControl Then
        If myShape.FormControlType = xlDropDown Then
            myShape.Select
            Selection.LinkedCell = Selection.TopLeftCell.Address
        End If
    End If
Next

End Sub

答案 1 :(得分:0)

Reima,

如果您使用“控件工具箱”工具栏中的控件,则以下内容应该有效。唯一的区别是它不是MSForms.Combobox。 :

Sub Test()
Dim cbo As OLEObject

For Each cbo In ActiveSheet.OLEObjects
    If TypeOf cbo.Object Is ComboBox Then
        cbo.LinkedCell = cbo.TopLeftCell.Offset(, 1).Address
    End If
Next    
End Sub

如果您使用“表单”工具栏中的组合框,那么我不确定最佳方法是什么。我尝试使用上面的方法。