Vba: 함수에서 배열을 반환하는 방법


다음 기본 구문을 사용하여 VBA의 함수에서 배열을 반환할 수 있습니다.

 Function GenerateRandom() As Integer()

    Dim RandValues(2) As Integer
     
    'generate three random integers and store them in array 
    RandValues(0) = Int(Rnd * 100)
    RandValues(1) = Int(Rnd * 100)
    RandValues(2) = Int(Rnd * 100)
    
    'return array as a result of the function
    GenerateRandom = RandValues

End Function

이 특정 예제에서는 세 개의 임의의 정수를 생성하고 이를 배열에 저장한 다음 생성Random() 함수의 결과로 배열을 반환합니다.

다음 예에서는 두 가지 방법으로 이 함수에서 값을 반환하는 방법을 보여줍니다.

  • 메시지 상자에 값을 반환합니다.
  • 셀의 값을 반환합니다.

갑시다!

예시 1: 함수에서 배열을 반환하고 메시지 상자에 값을 표시합니다.

다음 구문을 사용하여 세 개의 무작위 정수 배열을 생성하는 생성Random() 이라는 함수를 만든 다음 MsgBox 함수를 사용하여 메시지 상자에 정수를 표시할 수 있습니다.

 'define function to generate array of three random integers
Function GenerateRandom() As Integer()

    Dim RandValues(2) As Integer
     
    RandValues(0) = Int(Rnd * 100)
    RandValues(1) = Int(Rnd * 100)
    RandValues(2) = Int(Rnd * 100)
    
    GenerateRandom = RandValues

End Function

'define sub to display values from function in a message box
SubDisplayRandom ()

     Dim WS As Worksheet
     Dim RandomValues() As Integer
     Dim i As Integer

     Set WS = Worksheets(" Sheet1 ")
     RandomValues = GenerateRandom()

     j = " Array values: "
     For i = 0 To 2
          j = (j & RandomValues(i) & " ")
     Next i
     MsgBox j

End Sub

이 매크로를 실행하면 다음과 같은 출력이 나타납니다.

함수의 VBA 반환 테이블

함수가 메시지 상자에 임의의 정수 96 , 875 를 반환하는 것을 볼 수 있습니다.

예시 2: 함수에서 배열을 반환하고 셀에 값을 표시합니다.

다음 구문을 사용하여 세 개의 임의의 정수 배열을 생성한 다음 Excel의 A1 셀에서 시작하는 정수를 표시하는 GeneratorRandom() 이라는 함수를 만들 수 있습니다.

 'define function to generate array of three random integers
Function GenerateRandom() As Integer()

    Dim RandValues(2) As Integer
     
    RandValues(0) = Int(Rnd * 100)
    RandValues(1) = Int(Rnd * 100)
    RandValues(2) = Int(Rnd * 100)
    
    GenerateRandom = RandValues

End Function

'define sub to display values from function starting in cell A1
SubDisplayRandom ()

     Dim WS As Worksheet
     Dim RandomValues() As Integer
     Dim i As Integer

     Set WS = Worksheets(" Sheet1 ")
     RandomValues = GenerateRandom()

     For i = 0 To 2
          WS.Range(" A1 ").Offset(i, 0).Value = RandomValues(i)
     Next i

End Sub

이 매크로를 실행하면 다음과 같은 출력이 나타납니다.

이 함수는 워크시트의 셀 A1 에서 임의의 정수 96 , 875 를 반환하는 것을 볼 수 있습니다.

참고 : 다른 셀에서 시작하는 테이블 값을 반환하려면 코드의 A1을 다른 셀 참조로 바꾸면 됩니다.

추가 리소스

다음 자습서에서는 VBA에서 다른 일반적인 작업을 수행하는 방법을 설명합니다.

VBA 함수에서 값을 반환하는 방법
VBA의 다른 시트에서 셀 값을 얻는 방법
IsNumeric을 사용하여 VBA에서 셀이 숫자인지 확인하는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다