Link cell with Excel Shape

前端 未结 2 1401
盖世英雄少女心
盖世英雄少女心 2020-12-18 08:06

In excel, we insert a shape, and we can link it to a cells value, by selecting shape and typing the cell reference in formula bar. I want to know: How can we do that program

相关标签:
2条回答
  • 2020-12-18 08:28

    The simplest option is to programatically select the shape first, then apply the formula

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

    Or course this will error if a shape on the sheet does not support the .Formula property

    0 讨论(0)
  • 2020-12-18 08:50

    You don't need to use Select to apply formulas to Shapes. Select should be avoided wherever possible as it bloats code, and can have unintended consequences - for example triggering Events

    Instead you can work with the Formula directly by using DrawingOBject, seeFormAppwhich also will let you manipulate existing formula (ie add 6 cell to A2 to make it A8, A12 to A18 etc). The second code routine FormAdd makes this adjustment, it works on both cell addresses and range names

    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
    
    0 讨论(0)
提交回复
热议问题