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

Коли ми запускаємо цей макрос, ми отримуємо такий результат:

Таблиця повернення VBA функції

Ми бачимо, що функція повертає випадкові цілі числа 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

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *