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