수에 매개변수를 전달할 때 여러개의 매개변수를 전달할 수 있도록 매개변수목록 을 넘겨줄 수 있을까?
예를 들어 넘겨받은 매개변수의 합을 구하는 Sum 함수가 있다고 가정하면

Private Function Sum(ByVal a As Long, ByVal b As Long, ByVal c As Long) As Long
  Sum = a + b + c
End Function

위와 같이 작성해 보았다. 그런데, 10개의 매개변수가 있다면? 혹 50개의 매개변수가 있다면??
이러한 경우 ParamArray 키워드를 사용하면 쉽게 해결하여 위 코드를 아래와 같이 바꿀 수있다.

Private Function Sum(ParamArray iNums() As Variant) As Long
  Dim lResult   As Long
  Dim i         As Long
  On Error Resume Next
  For i = 0 To UBound(iNums)
    lResult = lResult + Val(iNums(i))
  Next i
  Sum = lResult
End Function


Tip.
ParamArray는 적용할 수 있는 몇가지 적용규칙이 있습니다.

1. 매개 변수 배열을 하나만 정의할 수 있으며 마지막 인수 이어야 합니다.
2. 매개 변수 배열 앞에 오는 인수는 Optional 이어서는 안됩니다.
2. ParamArray 키워드는 Optional, ByVal, ByRef 과 같이 사용될 수 없습니다.

+ Recent posts