【问题标题】:How to copy combobox so cell link changes automatically如何复制组合框以便单元格链接自动更改
【发布时间】:2019-03-17 03:27:59
【问题描述】:

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

我使用 Excel 2007 完成这项工作。

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

我需要复制 50 多个组合框。当我按下包含宏的命令按钮以复制整行并将其全部插入新行时,我尝试使用它。

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

我找到的宏:

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

【问题讨论】:

    标签: excel vba combobox hyperlink copy-paste


    【解决方案1】:

    原来的答案让我走上了正确的轨道,适用于“ActiveX 控件”。我需要用标准的 Excel“表单控件”组合框做同样的事情,它非常相似,除了它是一个形状对象并且需要选择它才能进行操作。这是我的代码,对我有用:

    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
    

    【讨论】:

      【解决方案2】:

      雷马,

      如果您正在使用“控件工具箱”工具栏中的控件,那么以下应该可以工作。唯一的区别是它不是 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
      

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

      【讨论】:

        猜你喜欢
        • 2013-08-11
        • 2018-02-20
        • 2017-07-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-22
        • 1970-01-01
        相关资源
        最近更新 更多