Hola a todos:
Hoy de nuevo vuelvo a programar una UDF, y lo hago después de haber publicado un post sobre cadenas alfanuméricas aleatorias en Python: GENERAR CADENAS DE CARACTERES ALFANUMÉRICOS ALEATORIOS CON PYTHON y en Power Query: GENERAR CADENAS DE CARACTERES ALFANUMÉRICOS ALEATORIOS CON POWER QUERY
Y es que me apetece hacer algo parecido en VBA, me refiero a una función y utilizando un array con las letras y números a combinar, (tengo varios desarrollos en VBA, los podéis ver utilizando el buscador y escribiendo «aleatorios»).
Lo que os voy a dejar es una función, si es necesario podéis pasarla a un procedimiento sub fácilmente. Esta será la función que utilizaremos, hace 5 minutos que la acabo de programar.
Option Explicit
Function ALEATORIOS_ALFANUM(ByVal Largo As Long)
Dim i As Long, MiArray As Variant, nAleat As Long
Dim Item As String, sCadena As String
'Pasamos el largo de nuestra cadena alfanumérica
For i = 1 To Largo
'Indicamos elementos de nuestro array que vamos a seleccionar
MiArray = Array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", _
"m", "n", "ñ", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", _
"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "Ñ", "O", "P", _
"Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9")
'generamos número aleatorio
nAleat = Application.WorksheetFunction.RandBetween(LBound(MiArray), UBound(MiArray))
'extraemos elementos del array con el número generado
Item = MiArray(nAleat)
'componemos cadena
sCadena = sCadena & "" & Item
Next i
'pasamos resultado a la función
ALEATORIOS_ALFANUM = sCadena
End Function
Con este código vamos generar una cadena alfanumérica aleatoria de longitud especificada en el parámetro «Largo» de la función.
Además, permite combinar con otras funciones incluida Aleatorio.entre() que podríamos especificar en el argumento de la función y así generar un largo de cadena aleatorio.
Por ejemplo, si queremos aleatorios con un largo de cadena entre el 1 y el 20 se mostraría así:
Por supuesto, podéis incluir más caracteres en el array, ejemplo asteriscos, barras, etc
Como podéis observar es super sencillo, utilizo un for para ir extrayendo cada elemento aleatorio hasta llegar al número final indicado.
Y esto es todo, espero que os sea de utilidad e interés.
No creo que sea necesario compartir el archivo dado que solo está el código no hay ejemplos ni datos para interactuar.
¿Te ha resultado de interés?, puedes apoyar a Excel Signum con una pequeña donación.
¡¡Muchas gracias!!
Mediante la suscripción al blog, la realización comentarios o el uso del formulario de contacto estás dando tu consentimiento expreso al tratamiento de los datos personales proporcionados según lo dispuesto en la ley vigente (LOPD). Tienes más información al respecto en esta página del blog: Política de Privacidad y Cookies
Saludes desde Nicaragua, básicamente busco generar nombres de forma aleatoria en un boton de comando, cual seria el codigo. Me ayudas por favor. gracias
Tendría que ver un ejemplo de la información con la que cuentas y cómo la tienes dispuesta en la hoja. Y luego intentar ayudarte.
Saludos.