Excel 中的形状名称

Shape Names In Excel

我有一个 VBA sub 来创建一些形状,然后将这些形状重命名为单元格值 (B5:B15) 并添加文本 (C5:C15)。

形状已创建、重命名并添加了文本,但是当我尝试连接它们时,我得到了 "Object Required"。 有人可以帮帮我吗。 提前致谢。

Sub Button1_Click()
Dim s, conn  As Shape, i As Integer
Set w = ActiveSheet

For i = 5 To 7

    Set s = w.Shapes.AddShape(1, 800, i * 120 - 599, 100, 100)
    s.Name = Range("B" & i)
    s.TextFrame.Characters.Text = Range("C" & i)
    s.Fill.ForeColor.RGB = RGB(0, 0, 213)
    s.TextFrame.Characters.Font.ColorIndex = 19

Next i

Set conn = w.Shapes.AddConnector(1, 1, 1, 1, 1)
    conn.ConnectorFormat.BeginConnect A001, 1
    conn.ConnectorFormat.EndConnect A002, 1   
End Sub

有用的东西:

Option Explicit

Sub Button1_Click()

    Dim s As Shape, conn As Shape, i As Long
    Dim w As Worksheet
    Set w = ActiveSheet

    Dim arr As Variant
    ReDim arr(5 To 7)
    For i = 5 To 7

        Set s = w.Shapes.AddShape(1, 800, i * 120 - 599, 100, 100)
        s.Name = Range("B" & i)
        s.TextFrame.Characters.Text = Range("C" & i)
        s.Fill.ForeColor.RGB = RGB(0, 0, 213)
        s.TextFrame.Characters.Font.ColorIndex = 19
        Set arr(i) = s
    Next i

    Set conn = w.Shapes.AddConnector(1, 1, 1, 1, 1)
    conn.ConnectorFormat.BeginConnect arr(5), 1
    conn.ConnectorFormat.EndConnect arr(6), 1

End Sub

有什么区别?

  • 所有变量的声明 - s 是一个 Shape,i 是一个 Long,w 是一个 Worksheet;
  • 声明是由Option Explicit强制执行的;
  • 引入了一个新变量arr,它保留了所有新创建的表单。因此,第一种形式保留在 arr(5) 下,最后一种形式是 arr(7);
  • BeginConnectEndConnect 需要一个变量,它是一种形式。这是我们使用 arr(5)arr(7);
  • 的地方

您还可以通过名称和 Shapes() 集合来引用形状。因此,最后 3 行应如下所示:

Set conn = w.Shapes.AddConnector(1, 1, 1, 1, 1)
conn.ConnectorFormat.BeginConnect w.Shapes("A001"), 1
conn.ConnectorFormat.EndConnect w.Shapes("A002"), 1