16 junio, 2021

GENERAR CADENA DE CARACTERES ALFANUMÉRICOS ALEATORIOS CON VBA

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.

Donate Button with Credit Cards

¡¡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

Comparte este post

Si te ha gustado o tienes alguna duda, puedes dejar aquí tu comentario.

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies