使用单元格值作为范围参考

使用单元格值作为范围参考

我有以下链接到形状的宏(就像它是一个按钮一样):

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 StringSet 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

希望这对你有帮助。

相关内容