Números Aleatórios VBA

Números Aleatórios do Excel VBA

Para gerar números aleatórios em vba , temos uma função embutida chamada RND . Leva apenas um argumento um número para gerar números aleatórios e este também é um parâmetro opcional. Isso criará números aleatórios maiores que 0 e menores que 1.

Isso funciona exatamente da mesma forma que a função Excel “RAND”. Como disse na função de planilha “RAND”, em VBA também podemos gerar números aleatórios maiores que 0, mas menores que 1.

Agora dê uma olhada na sintaxe da função “RND”.

[Número]: Podemos transmitir o argumento de três maneiras.

  • Se passarmos o número como <0, ele continuará gerando o mesmo número aleatório todas as vezes.
  • Se passarmos o número como 0, ele repetirá o número mais recente fornecido.
  • Se passarmos o número> 0, ele continuará fornecendo diferentes números aleatórios, ou seja, o próximo número aleatório na sequência.

Como gerar números aleatórios usando código VBA?

Você pode baixar este modelo de números aleatórios do VBA aqui - modelo do Excel de números aleatórios do VBA

Exemplo 1

Agora veremos um exemplo simples de uso da função “RND”. Siga as etapas abaixo para escrever o código VBA por conta própria.

Etapa 1: Declare a variável como “Inteiro” em VBA

Código:

 Sub Rnd_Example1 () Dim K As Integer End Sub 

Passo 2: Agora atribua o valor à variável “k” através da função “ RND ”.

Código:

 Sub Rnd_Example1 () Dim K As Integer K = Rnd () End Sub 

Passo 3: Mostre o valor retornado pela variável “k” na caixa de mensagem .

Código:

 Sub Rnd_Example1 () Dim K As Integer K = Rnd () MsgBox K End Sub 

Agora execute a macro do Excel e veja qual é o resultado.

Veja o que aconteceu.

Ele mostra o resultado como 1, onde a função “RND” pode retornar apenas números maiores que zero, mas menores que 1.

Você deve estar pensando qual é a coisa errada aqui.

A coisa errada aqui é o tipo de tipo de dados que atribuímos à variável “k”.

Se você olhar novamente para a variável que declaramos, atribuímos o tipo de dados como Inteiro. Como atribuímos a variável como Inteiro, ela só pode mostrar os números inteiros entre -32768 a 32767.

Sempre que RND retorna o número decimal, o VBA converte o número decimal para o inteiro mais próximo, ou seja, 1.

Portanto, para que a fórmula funcione corretamente, declare a variável como “ Double ”.

“Double” é o tipo de dados em VBA que pode conter valores decimais.

Código:

 Sub Rnd_Example1 () Dim K As Double K = Rnd () MsgBox K End Sub 

Agora o código e veja qual é o resultado.

Clique em ok e execute mais uma vez para ver qual é o resultado.

Desta vez, obtivemos um resultado diferente. Como “RND” é uma função volátil por natureza, ela reproduz resultados diferentes cada vez que você executa o código.

Exemplo # 2 - Obtenha o mesmo número aleatório todas as vezes

Como vimos, o exemplo anterior a função “RND” reproduz o resultado toda vez que executamos o código. Para obter o mesmo número aleatório, repetidamente, precisamos passar o argumento como zero.

Código:

 Sub Rnd_Example2 () Dim K As Double K = Rnd (0) MsgBox K End Sub 

Isso produzirá o mesmo número repetidamente quando executarmos o código.

Exemplo # 3 - Gerar número aleatório inteiro

Também podemos gerar números inteiros usando outra função VBA ou outros números de entrada. Para obter um exemplo, veja o código abaixo.

Código:

 Sub Rnd_Example3 () Dim K As Double K = 1 + Rnd * 100 MsgBox K End Sub 

Este código irá gerar números inteiros aleatórios com pontos decimais toda vez que executarmos o código.

Se você estiver olhando para números inteiros sem casas decimais, então podemos usar o código abaixo.

Código:

 Sub Rnd_Example3 () Dim K As Double K = CInt (1 + Rnd * 100) MsgBox K End Sub 

Isso continuará gerando os números inteiros de 1 a 100.