El título de este artículo, puede no quedar muy claro en un primer momento, pero ya veréis a qué me refiero con eso de "efecto máquina tragaperras".
Antes, vamos a explicar como generar un número aleatorio. para ello tan solo tenemos que usar un par de líneas:
'Llamamos a la instrucción Randomize 'para que los aleatorios funcionen correctamente Randomize 'ahora llamamos a la función Rnd, y generaremos 'en A1 un número aleatorio entre 0 y 100 Range("A1") = Int(100 * Rnd) |
Si queremos que nos genere un número aleatorio entre 1 y 100, solo tendremos que añadir un + 1, de la siguiente forma:
'Llamamos a la instrucción Randomize 'para que los aleatorios funcionen correctamente Randomize 'ahora llamamos a la función Rnd, y generaremos 'en A1 un número aleatorio entre 1 y 100 Range("A1") = Int(100 * Rnd + 1) |
Si queremos generar un número aleatorio entre dos números dados, el código sería este:
'Llamamos a la instrucción Randomize 'para que los aleatorios funcionen correctamente Randomize 'ahora llamamos a la función Rnd, y generaremos 'en A1 un número aleatorio entre dos números dados Range("A1") = Int((numero_maximo - numero_minimo + 1) * Rnd + numero_minimo) |
Donde numero_maximo es el número más alto que queremos que salga, y numero_minimo es la cifra más pequeña que queremos obtener.
Ahora ya estamos en condiciones de montar nuestro número aleatorio, con efecto máquina tragaperras, para lo cual, generaremos un bucle con la instrucción do while:
Sub efecto_maquina_tragaperras() 'Aquí pondremos la cifra máxima 'que saldrá en pantalla (nunca obtendremos 'un número mayor a ese) numero_maximo = 10 'Ahora pondremos el número de veces que se 'recalculará el número aleatorio y que nos 'dará ese efecto de máquina tragaperras iteraciones = 5000 'creamos el bucle para que haga tantas iteaciones 'como hemos informado en la línea anterior Do While i < iteraciones i = i + 1 'generamos un número entre 1 y el número 'máximo que hemos informado anteriormente numero = Int(numero_maximo * Rnd + 1) 'ponemos el número aleatorio en 'la celda donde estemos situados ActiveCell = numero Loop End Sub |
3 comentarios:
Es bueno el aporte, y tengo una pregunta. Si quisiera hacer que ese efecto lo hagan 4 celdas al mismo tiempo como podria ser?
FELICIDADES POR MAGNIFICO BLOG
Por cuestiones de pagos de impuestos requiero una macro donde al digitar una cifra cualquiera me las redondee a miles de pesos (tres ceros), y si excede de 501 pase a las superior escala de los miles o en su defecto a la escala inferior .
Lo mismo que en su respectivo formato. (25.000, 34.000), Nuchas gracias - Javier Marco.
Hola tengo un excel que genera aleatoriamente el dorsal de 8 nombres, pero cada vez que introduzco un valor o F9 me cambia el orden de los nombres. Como puedo fijar la fila de los nombres generados o que me genere un numero de veces la funcion aleatoria.
Publicar un comentario