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:
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