我有以下链接到形状的宏(就像它是一个按钮一样):
Sub circulo()
Dim SSLeft As Double
Dim SSTop As Double
Dim SSWidth As Double
Dim SSHeight As Double
Dim shpOval As Shape
Dim SS As Range
Dim SS1 As String
Set SS = SS1
Set SS1 = Range("AO24").Text
SSLeft = SS.Left
SSTop = SS.Top
SSHeight = SS.Height
SSWidth = SS.Width
Set shp = ActiveSheet.Shapes.AddShape(msoShapeOval, SSLeft, SSTop, 20, 20)
End Sub
它应该做的是在单元格 ( C8
) 上创建一个从另一个单元格 ( ) 引用的形状 (椭圆形) AO24
。在单元格中AO24
我有以下公式:
=""""&SUSTITUTE(CELL("ADRESS",INDEX(B7:H7,1,MATCH(AN24,B7:H7,0))),"$","")&""""
它在某个范围 ( ) 内搜索单元格AN24
(日期)的值B7:H7
,并给出结果C8
。应该发生的是,宏将从单元格 ( AO24
) 中获取值并将其设为一个范围,以便将形状添加到公式给出的单元格 (C8
在本例中),但这并没有发生,我尝试这样做,因为 的值AO24
将动态变化。
任何有关如何正确执行此操作的帮助都将受到感谢。
编辑:这不是拼写,公式是翻译的,所以最初它是有效的。
答案1
您的代码的问题是,
Dim SS1 As String
和 Set SS1 = Range("AO24").Text
。
实际上变量 SS1 数据类型必须是范围和Set SS1 = Range("AO24")
。
现在您正在尝试创建一个动态范围来创建形状,但在这种情况下,Excel VBA 仅读取单元格地址并将在单元格 AO24 中创建形状。
我建议您使用,Range(Selection.Address)
这样您就可以选择想要绘制形状的单元格。
检查下面的代码可以帮助您在活动单元格中创建形状。
Private Sub CommandButton24_Click()
Dim clLeft As Double
Dim clTop As Double
Dim clWidth As Double
Dim clHeight As Double
Dim cl As Range
Dim shpOval As Shape
Set cl = Range(Selection.Address)
'Set cl = Range("AO24")
clLeft = cl.Left
clTop = cl.Top
clHeight = cl.Height
clWidth = cl.Width
Set shpOval = ActiveSheet.Shapes.AddShape(msoShapeOval, clLeft, clTop, 40, 10)
Debug.Print shpOval.Left = clLeft
Debug.Print shpOval.Top = clTop
End Sub
希望这对你有帮助。