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
Цей конкретний приклад генерує три випадкові цілі числа, зберігає їх у масиві, а потім повертає масив як результат функції під назвою GenerateRandom() .
У наступних прикладах показано, як повернути значення з цієї функції двома різними способами:
- Повернення значень у вікно повідомлень
- Повернути значення в клітинках
Ходімо!
Приклад 1: повернення масиву з функції та відображення значень у вікні повідомлення
Ми можемо використати наступний синтаксис, щоб створити функцію під назвою GenerateRandom() , яка генерує масив із трьох випадкових цілих чисел, а потім відображає цілі числа у вікні повідомлення за допомогою функції 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
Коли ми запускаємо цей макрос, ми отримуємо такий результат:
Ми бачимо, що функція повертає випадкові цілі числа 96 , 87 і 5 у вікні повідомлення.
Приклад 2: повернення масиву з функції та відображення значень у клітинках
Ми можемо використати такий синтаксис, щоб створити функцію під назвою GenerateRandom() , яка генерує масив із трьох випадкових цілих чисел, а потім відображає цілі числа, починаючи з комірки A1 , у 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
Коли ми запускаємо цей макрос, ми отримуємо такий результат:
Ми бачимо, що функція повертає випадкові цілі числа 96 , 87 і 5 із клітинки A1 нашого аркуша.
Примітка . Щоб повернути значення таблиці, що починаються з іншої комірки, просто замініть A1 у коді іншим посиланням на комірку.
Додаткові ресурси
У наступних посібниках пояснюється, як виконувати інші типові завдання у VBA:
Як повернути значення з функції VBA
Як отримати значення клітинки з іншого аркуша у VBA
Як за допомогою IsNumeric перевірити, чи клітинка є числом у VBA