所以我有一张带有一些照片的纸张。所有这些只是原始图片的复制粘贴,因此它们都具有相同的名称“Flower”。
我想选择所有这些并翻转它们。但它只会选择原版,我该怎么办?我试着加入一个循环,没有运气。
Sub Test()
ActiveSheet.Shapes.Range(Array("Flower")).Select
Selection.ShapeRange.Flip msoFlipHorizontal
End Sub
我知道我可以简单地将它们重命名为Flower1,Flower2等,但计划是将它用于很多图片,因此手动更改需要很长时间。如果它可以用循环完成,那就没问题,但是我仍然会遇到与上面相同的问题。
答案 0 :(得分:2)
您可以通过集合Shapes
循环查找具有给定名称的形状。试试这个。
Sub Test()
Dim Pic As Shape
For Each Pic In ActiveSheet.Shapes
If Pic.Name = "Flower" Then Pic.Flip msoFlipHorizontal
Next Pic
End Sub
此外,您可以在不选择的情况下对此进行编码。更快,更可靠。
答案 1 :(得分:1)
VBA中有两个可能有用的对象 - 名为Shapes
的形状集合和Shape
本身。因此,您可以像这样遍历集合:
Sub Test()
Dim shShape As Shape
Dim shCollection As Shapes
Set shCollection = ActiveSheet.Shapes
For Each shShape In shCollection
shShape.Flip msoFlipHorizontal
Next shShape
End Sub