2017-11-13 1 views
1

그래서 사진이있는 시트가 있습니다. 이들 모두는 원본 그림의 사본 붙여 넣기이므로 모두 "꽃"이라는 동일한 이름을 갖습니다.같은 이름의 여러 객체 선택

모든 것을 선택하고 뒤집기를 원합니다. 그러나 원본 만 선택하면 어떻게됩니까? 나는 운을 사용하지 않고 루프도 통합하려고했습니다.

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

나는 단순히 Flower1, Flower2 등으로 이름을 바꿀 수 있다는 것을 알고 있지만, 계획은 많은 사진이를 사용하는 것입니다, 그래서 수동으로 변경 오래 걸릴 것입니다. 모든 것이 루프로 처리 될 수 있다면 괜찮을 것이지만 여전히 위와 같은 문제가 남아 있습니다.

답변

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 

또한 선택하지 않고 코드를 작성할 수 있습니다. 더 빠르고 신뢰할 수 있습니다.

+0

감사합니다. –

1

유용 할 수있는 VBA에는 모양 컬렉션 인 ShapesShape이라는 두 가지 개체가 있습니다. 따라서 다음과 같이 컬렉션을 반복 할 수 있습니다.

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 
+0

안녕하세요, 직접 객체를 사용하는 대신 'shCollection' 객체를 먼저 설정하면 어떤 이점이 있는지 궁금합니다. – newacc2240

+1

@ newacc2240 -이 경우에는 특별한 경우입니다. 이점이 없습니다. 하지만 두 번해야하고 워크 시트를 둘러보아야한다면'ActiveSheet.Shape'는 약간 신뢰할 수 없습니다. – Vityata

+0

알았어요. 그러나 변수를 먼저 설정 한 다음 여러 워크 시트를 탐색해야 할 경우 'ws.Shapes'를 호출하는 것이 좋습니다. 고맙습니다. – newacc2240

관련 문제