-
VBA/파워포인트/사진정리 - 2.1. Shapes 배열 생성코딩/vba 2024. 1. 13. 13:24728x90
' 이 프로시저는 값을 반환하는 함수로 작성한다. 배열을 반환하므로 Variant를 사용한다. ' 인수는 슬라이드의 Shapes 객체의 참조, 나머지는 옵션값으로 배열을 정렬할 지 여부의 부울 값, ' 키 디멘전 값, 디멘전 수를 받는다. Function GetShapesArray(ByRef slideShapes As Shapes, _ Optional ByVal boolSortArray As Boolean, Optional ByVal keyDimension As Integer, _ Optional ByVal dimensions As Integer) As Variant ' build array (shape index, left position) ' 변수 i는 반복문에서 사용되는 도형 인덱스이며 ' shapesArray는 도형들의 정보를 저장할 배열 Dim i As Integer, shapesArray() As Integer ' 주어진 슬라이드에 있는 각 도형에 대해 반복 Dim shp As Shape i = 0 For Each shp In slideShapes ' 현재 도형을 선택 shp.Select ' 디버깅을 위해 도형의 Z 순서를 출력 Debug.Print shp.ZOrderPosition ' 배열을 크기 조정하면서 도형 정보를 저장할 공간을 할당 ' Preserve 키워드를 사용하여 배열의 크기를 변경할 때 기존 데이터를 보존 ' Preserve를 사용할 때 다차원배열은 마지막 차원만 크기 조정가능 ReDim Preserve shapesArray(1, i) ' shapesArray(index, left) ' 도형 인덱스를 배열에 저장. 여기서 인덱스는 1부터 시작 ' shape index = array index + 1; shapesArray(0, i) = i + 1 ' 도형의 왼쪽 위치를 배열에 저장 shapesArray(1, i) = shp.Left ' 도형 인덱스를 증가 i = i + 1 Next shp ' sort: array items=1, no sort ; array items>1, sort Dim numberOfArrayItems As Integer ' 배열의 항목 수를 나타내는 변수를 선언 ' 배열의 항목 수를 계산 numberOfArrayItems = UBound(shapesArray, 2) - LBound(shapesArray, 2) + 1 ' 배열의 항목이 1이 아닌 경우에만 아래의 정렬 과정을 수행 If numberOfArrayItems <> 1 Then ' 배열을 정렬할지 여부를 확인하고, 정렬이 필요한 경우 SortArray 함수를 호출하여 배열을 정렬 If boolSortArray = True Then SortArray shapesArray, keyDimension, dimensions End If End If ' 최종적으로 도형 정보가 저장된 배열을 반환 GetShapesArray = shapesArray End Function
728x90이 프로시저도 배열 정렬 유틸리티를 사용한다.
728x90'코딩 > vba' 카테고리의 다른 글
VBA/파워포인트/사진정리 - 2.2.1. 사진 수 계산 함수 (0) 2024.01.13 VBA/파워포인트/사진정리 - 2.2. 사진 정렬 (0) 2024.01.13 VBA/파워포인트/사진정리 - 2. 사진 정열 (0) 2024.01.13 VBA/파워포인트/사진정리 - 1.2. 사진 삽입 서브 프로시저 (0) 2024.01.13 VBA/파워포인트/사진정리 - 1.1.1. 배열 정렬 (2) 2024.01.12