Связать ячейку с Excel Shape

В 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

Вот что я хочу сделать программно

Прошло уже несколько дней, я ищу это. Действительно нужна помощь, большое спасибо.

2 ответа

Решение

Вам не нужно использовать Select для применения формул к Shapes. Следует избегать выбора везде, где это возможно, так как он расширяет код и может привести к непредвиденным последствиям - например, запуску событий.

Вместо этого вы можете работать с формулой напрямую, используя DrawingOBject, см.FormAppчто также позволит вам манипулировать существующей формулой (т.е. добавить 6 ячеек в А2, чтобы сделать из них А8, А12 - А18 и т. д.). Вторая кодовая процедура 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

Самый простой вариант - сначала программно выбрать форму, а затем применить формулу

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

Или, конечно, это приведет к ошибке, если форма на листе не поддерживает .Formula имущество

Другие вопросы по тегам