【发布时间】:2017-07-25 23:16:43
【问题描述】:
我正在 For 循环中创建形状,我希望每个形状都有不同的名称。因此,每次迭代中Set Shape = ... 中的Shape 应将Shape 替换为动态变量。
如果我通过Set Shape = w.Shapes.AddShape(msoShapeRectangle, 10,10,10,10) 放置形状,我怎么能让Shape(形状的名称)是动态的,例如Set Cells(1 + i, 1) = w.Shapes.AddShape(msoShapeRectangle, 10,10,10,10) ... 这样每个形状都有不同的名称。我还尝试了Shape.Name =,这似乎与在创建形状时设置名称的效果不同。
我为在循环中创建的每个形状指定一个名称:
Shape.Name = Cells(GanttStartRow + i, 1) & Cells(GanttStartRow + i, 2)
我通过设置连接器
Set conn = w.Shapes.AddConnector(msoConnectorElbow, 1, 1, 1, 1)
conn.ConnectorFormat.BeginConnect D, 1
conn.ConnectorFormat.EndConnect WP, 1 ...但收到“类型不匹配”错误。
【问题讨论】:
-
你的问题中的
Cells()应该是一个形状数组吗?如果是这样,这是一个奇怪的名称选择,它覆盖了 VBA 编程中Cells()的标准含义。如果不是,我不知道您要做什么,因为您无法将单元格设置为等于形状。您是否尝试将新添加的形状的名称放入单元格中?