你不”不需要使用选择将公式应用于形状。选择应尽可能避免,因为它膨胀代码,并可能产生意想不到的后果 - 例如触发事件
相反,您可以使用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我希望有人会找到包含'.Formula'属性的对象。 –