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

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

5 голосов
/ 19 ноября 2011

В 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 ]

5 голосов
/ 19 ноября 2011

Вам не нужно использовать 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
0 голосов
/ 19 ноября 2011

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

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

. Конечно, это приведет к ошибке, если фигура на листе не поддерживает свойство .Formula

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...