使用Excel Shape链接单元格

时间:2011-11-18 21:21:35

标签: excel excel-vba shape vba

在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是我想以编程方式执行的操作

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

2 个答案:

答案 0 :(得分:5)

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

相反,您可以使用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 :(得分:0)

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

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

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

,则会出错