Números aleatorios de VBA

Números aleatorios de Excel VBA

Para generar números aleatorios en vba , tenemos una función incorporada llamada RND . Solo se necesita un argumento de un número para generar números aleatorios y este también es un parámetro opcional. Creará números aleatorios que sean mayores que 0 y menores que 1.

Esto funciona exactamente igual que la función de Excel "RAND". Como dije en la función de la hoja de trabajo "ALEATORIO", en VBA también podemos generar números aleatorios que son mayores que 0 pero menores que 1.

Ahora eche un vistazo a la sintaxis de la función "RND".

[Número]: Podemos pasar el argumento de tres formas.

  • Si pasamos el número como <0, sigue generando el mismo número aleatorio cada vez.
  • Si pasamos el número como 0, repetirá el número más reciente que haya dado.
  • Si pasamos el número> 0, sigue dándote diferentes números aleatorios, es decir, el siguiente número aleatorio en la secuencia.

¿Cómo generar números aleatorios usando código VBA?

Puede descargar esta plantilla de Excel de números aleatorios de VBA aquí - Plantilla de Excel de números aleatorios de VBA

Ejemplo 1

Ahora veremos el ejemplo simple de usar la función "RND". Siga los pasos a continuación para escribir el código VBA por su cuenta.

Paso 1: declare la variable como "Integer" en VBA

Código:

 Sub Rnd_Example1 () Dim K As Integer End Sub 

Paso 2: Ahora asigne el valor a la variable "k" mediante la función " RND ".

Código:

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

Paso 3: Muestre el valor devuelto por la variable "k" en el cuadro de mensaje .

Código:

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

Ahora ejecute la macro de Excel y vea cuál es el resultado.

Mira lo que ha pasado.

Muestra el resultado como 1, donde la función "RND" puede devolver solo números que son mayores que cero pero menores que 1.

Debes estar pensando qué es lo incorrecto aquí.

Lo incorrecto aquí es el tipo de tipo de datos que le hemos asignado a la variable "k".

Si mira hacia atrás en la variable que hemos declarado, le hemos asignado el tipo de datos como Integer. Como hemos asignado la variable como Entero, solo puede mostrar los números enteros entre -32768 y 32767.

Siempre que RND devuelve el número decimal, VBA convierte el número decimal al entero más cercano, es decir, 1.

Entonces, para que la fórmula funcione correctamente, declare la variable como " Doble ".

"Doble" es el tipo de datos en VBA que puede contener valores decimales.

Código:

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

Ahora el código y mira cuál es el resultado.

Haga clic en Aceptar y ejecute una vez más y vea cuál es el resultado.

Esta vez obtuvimos un resultado diferente. Dado que "RND" es una función volátil por naturaleza, reproduce resultados diferentes cada vez que ejecuta el código.

Ejemplo n. ° 2: obtenga el mismo número aleatorio cada vez

Como hemos visto en el ejemplo anterior, la función “RND” reproduce el resultado cada vez que ejecutamos el código. Para obtener el mismo número aleatorio, una y otra vez, necesitamos pasar el argumento como cero.

Código:

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

Esto producirá el mismo número una y otra vez cuando ejecutemos el código.

Ejemplo n. ° 3: generar un número aleatorio completo

También podemos generar números enteros usando otra función de VBA u otros números de entrada. Para ver un ejemplo, mire el siguiente código.

Código:

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

Este código generará números enteros aleatorios con puntos decimales cada vez que ejecutemos el código.

Si está mirando los números enteros sin puntos decimales, podemos usar el siguiente código.

Código:

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

Esto seguirá generando los números enteros del 1 al 100.