选择具有相同名称的多个对象

时间:2017-11-13 11:08:20

标签: excel vba image excel-vba

所以我有一张带有一些照片的纸张。所有这些只是原始图片的复制粘贴,因此它们都具有相同的名称“Flower”。

我想选择所有这些并翻转它们。但它只会选择原版,我该怎么办?我试着加入一个循环,没有运气。

Sub Test()
    ActiveSheet.Shapes.Range(Array("Flower")).Select
    Selection.ShapeRange.Flip msoFlipHorizontal
End Sub

我知道我可以简单地将它们重命名为Flower1,Flower2等,但计划是将它用于很多图片,因此手动更改需要很长时间。如果它可以用循环完成,那就没问题,但是我仍然会遇到与上面相同的问题。

2 个答案:

答案 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