VBA 함수로 배열 만들기
Last updated on 4월 30, 2023
이 문서에서는 VBA 함수를 사용하여 배열을 만드는 방법을 설명합니다.
VBA 함수로 배열 만들기
함수를 사용하여 배열을 반환할 때는 Variant 유형으로 배열을 선언하는 것이 좋습니다:
Function ReturnArray() As Variant
End Function
배열 크기를 선언하는 데 있어 유연성을 가질 수 있기 때문에 Variant 배열로 작업하는 것이 더 편리합니다.
배열을 반환하는 함수 예제
다음은 배열을 반환하는 함수의 예시입니다:
Function ReturnArray() As Variant
Dim tempArr As Variant
'임시 배열을 새로 만듭니다
ReDim tempArr(1 To 3, 1 To 2)
'배열 항목의 값들을 채워줍니다
tempArr(1, 1) = "Steve"
tempArr(1, 2) = "Johnson"
tempArr(2, 1) = "Ryan"
tempArr(2, 2) = "Johnson"
tempArr(3, 1) = "Andrew"
tempArr(3, 2) = "Scott"
'배열을 반환합니다
ReturnArray = tempArr
End Function
Sub TestTransposeArray()
Dim outputArr As Variant
'배열 반환 함수를 호출합니다
outputArr = ReturnArray()
'메시지박스에서 반환된 배열을 확인합니다
MsgBox outputArr(2, 1)
End Sub
배열의 크기를 선언하는 것과 관련된 문제를 피하기 위해 Variant로 Array의 데이터 유형을 선언한 것을 주목하세요.
아래 예제는 배열을 입력으로 받아 배열을 행/열을 바꾸고 바뀐 새로운 배열을 출력합니다:
Function TransposeArray(MyArray As Variant) As Variant
Dim x As Long, y As Long
Dim maxX As Long, minX As Long
Dim maxY As Long, minY As Long
Dim tempArr As Variant
'배열 인덱스의 상한값과 하한값을 가져옵니다
maxX = UBound(MyArray, 1)
minX = LBound(MyArray, 1)
maxY = UBound(MyArray, 2)
minY = LBound(MyArray, 2)
'함수에 사용될 임시 배열을 생성합니다
ReDim tempArr(minY To maxY, minX To maxX)
'배열의 행/열을 바꿉니다
For x = minX To maxX
For y = minY To maxY
tempArr(y, x) = MyArray(x, y)
Next y
Next x
'생성된 배열을 출력합니다
TransposeArray = tempArr
End Function
Sub TestTransposeArray()
Dim testArr(1 To 3, 1 To 2) As Variant
Dim outputArr As Variant
'배열의 항목을 채워줍니다
testArr(1, 1) = "Steve"
testArr(1, 2) = "Johnson"
testArr(2, 1) = "Ryan"
testArr(2, 2) = "Johnson"
testArr(3, 1) = "Andrew"
testArr(3, 2) = "Scott"
'행/열 바꾸기 함수를 호출합니다
outputArr = TransposeArray(testArr)
'결과 값을 확인합니다
MsgBox outputArr(2, 1)
End Sub