1
有点VBA新手在这里。Excel VBA:如何将工作表上的所有当前形状添加到ShapeRange?
很清楚,我如何创建一个ShapeRange
使用单个或多个Shape
对象:
Dim sht As Worksheet
Set sht = MySht
'
'*Add some shapes*
'
Dim shprng As ShapeRange
Set shprng = sht.Shapes.Range(Array(1,2,3))
有没有办法在工作表上添加所有当前存在的形状,以shprng
?换句话说,是否有一种方法可以从Shapes
对象返回ShapeRange
...?类似这样的:
Set shprng = sht.Shapes.Range.SelectAll '<--- Does not work: Type Mismatch
Set shprng = sht.Shapes '<--- Same error
Set shprng = sht.Shapes.Range '<--- Error: Argument not optional
谢谢!
谢谢 - 完成了我所要做的。你碰巧知道'Shapes'集合对象是否是一个主动维护的对象向量?我的意思是:说'sht.Shapes.Count = 5',我要做'sht.Shapes(2)。删除'; 'sht.Shapes.Count'现在等于4,并且'形状(3)'和'形状(4)'现在变成2和3了吗? –
是的,Shapes对象将按照您所描述的自动更新。 – Tmdean
注意:两个形状可以具有相同的名称,在这种情况下,您的代码将失败。通过添加形状以shprng这种方式绕过:'shprng.select:sht.Shapes(i).select replace:= false:set shprng = selection.shaperange'。如果activesheet是形状所在的工作表,则工作。 –