VBA Aleatorizar

Declaración aleatoria en VBA

La declaración VBA Randomize es una declaración simple de una sola línea que agregamos antes de aplicar la función RND. Siempre que se vuelve a abrir un libro de trabajo, la instrucción Randomize proporciona un nuevo número de inicialización para la función RND dependiendo de la hora del sistema de la computadora.

Antes de hablar sobre la declaración Randomize, permítame presentarle una función RND simple con VBA.

Como una función de hoja de trabajo “RAND”, en VBA “RND” también 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.

Ejemplo

Para ver un ejemplo, mire el siguiente código.

Código:

 Sub RND_Example () Debug.Print Rnd End Sub 

Cuando ejecuto el código en la ventana inmediata, puedo ver el siguiente número.

Del mismo modo, cuando ejecuto este código 3 veces más, puedo ver los números a continuación.

Ahora cerraré el libro de trabajo y lo volveré a abrir.

Ahora volveré a la ventana del editor de Visual Basic.

Ahora la ventana inmediata está vacía y limpia.

Ahora de nuevo ejecutaré el código cuatro veces y veré cuáles son los números que obtendremos en la ventana inmediata.

Obtuvimos los mismos números que obtuvimos arriba.

Esto no parece un número aleatorio porque cada vez que volvemos a abrir el archivo, tendemos a obtener los mismos números comenzando desde cero.

Entonces, ¿cómo generamos números aleatorios independientemente de si el libro de trabajo se volvió a abrir o no?

Necesitamos usar la declaración "Aleatorizar".

¿Cómo utilizar la declaración de aleatorización de VBA?

Puede descargar esta plantilla de Excel aleatoria de VBA aquí - Plantilla de Excel aleatoria de VBA

Ejemplo 1

Para obtener números aleatorios, todo lo que tenemos que hacer es agregar el sencillo "Randomize" antes de la función RND.

Código:

 Sub Randomize_1 () Randomize Debug.Print Rnd End Sub 

Ahora ejecutaré el código 4 veces y veré qué obtengo.

Ha generado los números anteriores en mi ventana local.

Ahora cerraré el archivo y volveré a abrirlo.

Como de costumbre, comenzamos con una pizarra limpia en la ventana de Visual Basic.

Ahora volveré a ejecutar el código y veré qué números obtenemos esta vez.

¡¡¡Guau!!! Esta vez obtuvimos números diferentes.

Como agregamos la instrucción Randomize antes de la función RND, obtenemos diferentes números aleatorios cada vez que volvemos a abrir el archivo.

Esto parece un número aleatorio, ¿no?

Ejemplo # 2

Números aleatorios mayores que uno

Como hemos visto, la función “RND” solo puede generar números del 0 al 1. Pero para generar números mayores que un número aleatorio, necesitamos usar "RANDOM BETWEEN", que está disponible con la clase de función de la hoja de trabajo.

Entonces, para generar números aleatorios mayores que uno, necesitamos usar el siguiente código.

Código:

 Sub Randomize_2 () Randomize Debug.Print Rnd * 100 End Sub 

Ahora ejecutaré el código y veré qué obtenemos.

De esta manera, podemos usar la declaración "Randomize" en VBA para generar números aleatorios cada vez que volvemos a abrir el archivo de Excel.