-
VBA/Shape간 순환코딩/vba 2024. 1. 11. 04:37728x90
아래 PowerPoint에서 작성한 두 프로그램이 있다.
표면상으로는 첫번째 프로그램이 더 길고 불필요하게 느껴지고 두번째가 더 간결하다.
Shape을 사진인지 판단하고 사진이면 위치와 크기를 변화시키고 사진이 아니면 앞으로 가져온다.
하지만 두번째 코드는 잘 작동하지 않는다.
ZOrder를 변경시킴으로 인해 shps 컬렉션에 영향을 끼친다. Shapes(1)은 ZOrder가 가장 아래인 개체를 뜻하는데 ZOrder를 사용함으로 인해 Shapes의 인덱스가 변해서 그렇다.
그래서 ZOrder는 사진만 정렬시킨 후 별도로 코드를 만들어야 했다.
728x90For Each shp In shps If shp.Type = msoPicture Then With shp .Top = positions(0)(0) .Left = positions(0)(1) .Width = sizes(0)(0) End With End If Next shp For Each shp In shps If shp.Type <> msoPicture Then shp.ZOrder msoBringToFront End If Next shp
아래 프로그램은 shape을 찾아내지 못한다. 대신 같은 프로그램을 두 번 작동시켜 사진이 아닌 shape이 위로 올라오면 정상적으로 작동한다.
For Each shp In shps If shp.Type = msoPicture Then With shp .Top = positions(0)(0) .Left = positions(0)(1) .Width = sizes(0)(0) End With else shp.ZOrder msoBringToFront End If Next shp
728x90'코딩 > vba' 카테고리의 다른 글
VBA/파워포인트/사진정리 - 1. 사진 삽입 (1) 2024.01.12 VBA/배열을 함수로부터 전달받기 (0) 2024.01.11 VBA/파워포인트/사진 crop/PictureFormat.CropBottom() (2) 2024.01.10 VBA/파워포인트/사진정리 - 0. 개요 (0) 2024.01.10 VBA/버블정렬(Bubble sort) (2) 2024.01.09