Vba: jak zwrócić tablicę z funkcji


Aby zwrócić tablicę z funkcji w VBA, możesz użyć następującej podstawowej składni:

 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

Ten konkretny przykład generuje trzy losowe liczby całkowite, przechowuje je w tablicy, a następnie zwraca tablicę w wyniku funkcji o nazwie GenerateRandom() .

Poniższe przykłady pokazują, jak zwracać wartości z tej funkcji na dwa różne sposoby:

  • Zwróć wartości do okna komunikatu
  • Zwracaj wartości w komórkach

Chodźmy!

Przykład 1: Zwróć tablicę z funkcji i wyświetl wartości w oknie komunikatu

Możemy użyć poniższej składni, aby utworzyć funkcję o nazwie GenerateRandom() , która generuje tablicę trzech losowych liczb całkowitych, a następnie wyświetla te liczby w oknie komunikatu za pomocą funkcji 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

Kiedy uruchomimy to makro, otrzymamy następujące dane wyjściowe:

Tabela zwrotów VBA funkcji

Widzimy, że funkcja zwraca losowe liczby całkowite 96 , 87 i 5 w oknie komunikatu.

Przykład 2: Zwróć tablicę z funkcji i wyświetl wartości w komórkach

Możemy użyć poniższej składni, aby utworzyć funkcję o nazwie GenerateRandom() , która generuje tablicę trzech losowych liczb całkowitych, a następnie wyświetla te liczby całkowite, zaczynając od komórki A1 w programie Excel:

 '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

Kiedy uruchomimy to makro, otrzymamy następujące dane wyjściowe:

Widzimy, że funkcja zwraca losowe liczby całkowite 96 , 87 i 5 z komórki A1 naszego arkusza.

Uwaga : Aby zwrócić wartości tabeli zaczynające się w innej komórce, po prostu zamień A1 w kodzie na inne odwołanie do komórki.

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w VBA:

Jak zwrócić wartość z funkcji VBA
Jak uzyskać wartość komórki z innego arkusza w VBA
Jak używać IsNumeric do sprawdzania, czy komórka jest liczbą w VBA

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *