Como gerar números aleatórios em vba?
No VBA, você pode usar diferentes maneiras de gerar um número aleatório no Excel e, neste artigo, veremos todas elas uma por uma.
Função RND
Para gerar um número aleatório, no VBA, existe uma função chamada RND . Esta função significa aleatório e quando você usa esta função no código ela retorna um número aleatório entre 0 e 1. No RND você não precisa especificar nenhum argumento.
Range("A1") = Rnd()
O código acima o utiliza para obter um número aleatório em A1 e retornou 0,705547521.
Mas quando você o usa para um intervalo inteiro, ele retorna o mesmo número aleatório em todo o intervalo e isso faz com que seja nulo para ser usado para gerar números aleatórios mais de uma vez.
Agora, aqui não faz sentido usar, não é mesmo? Mas existe uma solução que você pode usar, FOR NEXT LOOP .
No código acima você tem um loop que percorre 10 células (uma por uma) começando na célula selecionada e adiciona um número aleatório.
Aqui está o código completo:
Sub vba_random_number() Dim i As Long i = 10 For i = 1 To i ActiveCell.Value = Rnd() ActiveCell.Offset(1, 0).Select Next i End Sub
Número aleatório entre dois números
Se você deseja gerar um número aleatório entre dois números definidos, neste caso você precisa escrever o código usando duas funções VBA ( RND + INT ). O código para esta fórmula seria como abaixo.
Sub vba_random_number() Dim myRnd As Integer myRnd = Int(2 + Rnd * (45 - 10 + 1)) Range("A1") = myRnd End Sub
Quando você executa esta macro , RND usa o número máximo e o número mínimo que você definiu para gerar o número aleatório e INT remove a casa decimal.
Usando funções de planilha em código VBA para gerar um número aleatório
No VBA, você pode acessar funções de planilha e usá-las para obter um resultado especificando os argumentos. Duas funções de planilha podem ajudá-lo a obter um número aleatório no resultado.
- RandEntre
- RandTableau
Antes de usar essas funções, certifique-se de compreender os argumentos que você precisa definir. Agora no código abaixo você tem RANDBETWEEN que gera um número aleatório entre dois números.
Range("A1") = WorksheetFunction.RandBetween(1000, 2000)
Aqui, o número máximo é 2.000 e o número mínimo é 1.000. Da mesma forma, você pode usar RANDARRAY, que é uma função de array dinâmica.
Aqui está o código.
Range("A1:B10") = WorksheetFunction.RandArray(10, 2, 1000, 2000, True)
Se você observar a sintaxe de RANDARRAY, descobrirá que pode inserir números aleatórios em um intervalo de inteiros, o que não é possível com todos os métodos que discutimos acima.