Vba: como retornar um array de uma função


Você pode usar a seguinte sintaxe básica para retornar um array de uma função em 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

Este exemplo específico gera três inteiros aleatórios, armazena-os em um array e então retorna o array como resultado da função chamada GenerateRandom() .

Os exemplos a seguir mostram como retornar valores desta função de duas maneiras diferentes:

  • Retornar valores para uma caixa de mensagem
  • Retornar valores em células

Vamos!

Exemplo 1: Retorna um array de uma função e exibe os valores na caixa de mensagem

Podemos usar a seguinte sintaxe para criar uma função chamada GenerateRandom() que gera um array de três inteiros aleatórios e, em seguida, exibe os inteiros em uma caixa de mensagem usando a função 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

Quando executamos esta macro, recebemos a seguinte saída:

Tabela de retorno VBA da função

Podemos ver que a função retorna os inteiros aleatórios 96 , 87 e 5 em uma caixa de mensagem.

Exemplo 2: Retorna um array de uma função e exibe valores em células

Podemos usar a seguinte sintaxe para criar uma função chamada GenerateRandom() que gera um array de três inteiros aleatórios e então exibe os inteiros começando na célula A1 no 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

Quando executamos esta macro, recebemos a seguinte saída:

Podemos ver que a função retorna os inteiros aleatórios 96 , 87 e 5 da célula A1 da nossa planilha.

Nota : Para retornar valores de tabela começando em uma célula diferente, basta substituir A1 no código por uma referência de célula diferente.

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras tarefas comuns em VBA:

Como retornar um valor de uma função VBA
Como obter o valor de uma célula de outra planilha em VBA
Como usar IsNumeric para verificar se a célula é um número em VBA

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *