¿cómo generar números aleatorios en vba?
En VBA, puede utilizar diferentes formas de generar un número aleatorio en Excel y, en este artículo, las veremos todas una por una.
Función RND
Para generar un número aleatorio, en VBA, existe una función llamada RND . Esta función significa aleatoria y cuando usa esta función en el código, devuelve un número aleatorio entre 0 y 1. En RND no necesita especificar ningún argumento.
Range("A1") = Rnd()
El código anterior lo usa para obtener un número aleatorio en A1 y devolvió 0.705547521.
Pero cuando lo usas para un rango completo, devuelve el mismo número aleatorio en todo el rango y eso lo hace nulo para usarlo para generar números aleatorios más de una vez.
Ahora bien, aquí no tiene sentido usarlo, ¿verdad? Pero hay una solución que puedes usar, FOR NEXT LOOP .
En el código anterior tienes un bucle que recorre 10 celdas (una por una) comenzando desde la celda seleccionada y agrega un número aleatorio.
Aquí está el código completo:
Sub vba_random_number() Dim i As Long i = 10 For i = 1 To i ActiveCell.Value = Rnd() ActiveCell.Offset(1, 0).Select Next i End Sub
Número aleatorio entre dos números
Si desea generar un número aleatorio entre dos números definidos, en este caso necesita escribir código usando dos funciones VBA ( RND + INT ). El código para esta fórmula sería el siguiente.
Sub vba_random_number() Dim myRnd As Integer myRnd = Int(2 + Rnd * (45 - 10 + 1)) Range("A1") = myRnd End Sub
Cuando ejecuta esta macro , RND usa el número máximo y el número mínimo que configuró para generar el número aleatorio, e INT elimina el lugar decimal.
Uso de funciones de hoja de trabajo en código VBA para generar un número aleatorio
En VBA, puede acceder a las funciones de la hoja de trabajo y usarlas para obtener un resultado especificando los argumentos. Dos funciones de hoja de cálculo pueden ayudarle a obtener un número aleatorio en el resultado.
- randentre
- RandTableau
Antes de utilizar estas funciones, asegúrese de comprender los argumentos que necesita establecer. Ahora en el código siguiente tienes RANDBETWEEN que genera un número aleatorio entre dos números.
Range("A1") = WorksheetFunction.RandBetween(1000, 2000)
Aquí el número máximo es 2000 y el número mínimo es 1000. De manera similar, puede usar RANDARRAY, que es una función de matriz dinámica.
Aquí está el código.
Range("A1:B10") = WorksheetFunction.RandArray(10, 2, 1000, 2000, True)
Si observa la sintaxis de RANDARRAY, encontrará que puede ingresar números aleatorios en un rango de enteros, lo cual no es posible con todos los métodos que discutimos anteriormente.