-
VBA/배열을 함수로부터 전달받기코딩/vba 2024. 1. 11. 16:25728x90
프로그램을 여러 서브프로그램으로 나눠 만들면 수정하기가 쉽고 이해가 쉽다.
그런데 배열을 다른 서브프로그램에서 전달받으려 할 때 종종 타입에러가 난다. 이는 VBA가 배열을 전달할 때 Variant로만 전달가능하기 때문에 일어나는 일이다.
아래 PrintArray()에서는 배열을 Integer로 지정했다. 만일 배열을 전달받을 서브프로그램에서 동일한 타입 Integer로 지정하면 배열인지 정수인지 구분할 수가 없어 에러가 난다. 함수에서 리턴값으로 배열을 넘기려면 무조건 Variant로 데이터형을 지정해야 한다. 함수는 Variant로 배열을 전달하지만 받는 프로그램은 정수형 배열로 지정되어도 상관없다.
728x90Sub PrintArray() Dim arr() As Integer, countArray As Integer arr = GetArray countArray = UBound(arr, 2) - LBound(arr, 2) + 1 Debug.Print "Count of dimension 2: " & countArray Dim i As Integer, j As Integer For i = LBound(arr, 1) To UBound(arr, 1) For j = LBound(arr, 2) To UBound(arr, 2) Debug.Print arr(i, j) Next j Next i End Sub
Function GetArray() As Variant Dim arr() As Integer, i As Integer, j As Integer, k As Integer k = 0 For i = 0 To 3 ReDim Preserve arr(1, i) For j = 0 To 1 arr(j, i) = k k = k + 1 Next j Next i GetArray = arr End Function
728x90'코딩 > vba' 카테고리의 다른 글
VBA/파워포인트/사진정리 - 1.1. 파일명 배열 (0) 2024.01.12 VBA/파워포인트/사진정리 - 1. 사진 삽입 (1) 2024.01.12 VBA/Shape간 순환 (0) 2024.01.11 VBA/파워포인트/사진 crop/PictureFormat.CropBottom() (2) 2024.01.10 VBA/파워포인트/사진정리 - 0. 개요 (0) 2024.01.10