【问题标题】:Link cell with Excel Shape使用 Excel 形状链接单元格
【发布时间】:2011-11-18 21:21:34
【问题描述】:

在 excel 中,我们插入一个形状,我们可以将它链接到一个单元格值,方法是选择形状并键入 编辑栏中的单元格引用。我想知道:我们如何以编程方式做到这一点。喜欢

For Each shape As Excel.Shape In workshet.Shapes
  'is there something like shape.Formula or any method from which I can do the above
   task.         
Next

Here 是我想要以编程方式执行的操作

已经好几天了,我正在寻找它。真的需要帮助,非常感谢。

【问题讨论】:

    标签: excel shape vba


    【解决方案1】:

    您无需使用“选择”将公式应用于形状。应尽可能避免选择,因为它会使代码膨胀,并可能产生意想不到的后果 - 例如触发事件

    相反,您可以使用 DrawingOBject 直接处理公式,请参阅FormApp,这也可以让您操作现有公式(即,将 6 个单元格添加到 A2 以使其成为 A8、A12 到 A18 等)。第二个代码例程FormAdd 进行了此调整,它适用于单元格地址和范围名称

    Sub FormApp()
        Dim Shp As Shape
        For Each Shp In ActiveSheet.Shapes
            'formula
             Shp.DrawingObject.Formula = "=A1"
            'range name
            Shp.DrawingObject.Formula = "=RangeName"
        Next
    End Sub
    
    Sub FormAdd()
        Dim Shp As Shape
        Dim rng1 As Range
        For Each Shp In ActiveSheet.Shapes
            Set rng1 = Nothing
            If Len(Shp.DrawingObject.Formula) > 0 Then
                On Error Resume Next
                Set rng1 = Range(Shp.DrawingObject.Formula)
                On Error GoTo 0
                If Not rng1 Is Nothing Then Shp.DrawingObject.Formula = "=" & rng1.Offset(6, 0).Address
            End If
        Next
    End Sub
    

    【讨论】:

    • +1 我希望有人能识别出包含.Formula 属性的对象。
    【解决方案2】:

    最简单的选择是先以编程方式选择形状,然后应用公式

    Dim Shp as Shape
    For each Shp in ActiveSheet.Shapes
        Shp.Select
        Selection.Formula = "=A1"
    Next
    

    如果工作表上的形状不支持.Formula 属性,这当然会出错

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-17
      • 2015-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-03
      • 1970-01-01
      相关资源
      最近更新 更多