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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *