Gerar números aleatórios usando a função VBA RND

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. Ele criará números aleatórios maiores que 0 e menores que 1.

Isso funciona exatamente da mesma forma que a função do Excel “RAND”. Como eu 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 o código 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 está mostrando 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 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 fazer a fórmula funcionar 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 toda vez que você executa o código.

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

Como vimos no exemplo anterior e, 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 outras funções VBA ou outros números de entrada. Por exemplo, observe 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, 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.

Artigos interessantes...