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)
;
-
BeginConnect
和 EndConnect
需要一个变量,它是一种形式。这是我们使用 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
我有一个 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)
; -
BeginConnect
和EndConnect
需要一个变量,它是一种形式。这是我们使用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