Связать ячейку с 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
имущество