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.

gerar número aleatório em vba

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.

retornar o mesmo número aleatório

Agora, aqui não faz sentido usar, não é mesmo? Mas existe uma solução que você pode usar, FOR NEXT LOOP .

usar para o próximo 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.

número aleatório entre dois números
 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.

rnd-use-o-número máximo e mínimo

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.

use-randentre-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)
use-randarray-que-é-uma-função-de-array-dinâmica

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.

sintaxe randarray

Adicione um comentário

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