El archivo con la codificación lo adjunto a continuación: Generador Frases Karma
Primero se deben de tener las frases ya listas, en este caso, he seleccionado 60 frases referidas al Karma, además de seleccionar 10 imágenes y dejarlas guardadas previamente en un carpeta que acompañe a la dirección donde se esta guardando el Excel con las macros, enumeradas cada una del 1 al 10 (ya que después la selección aleatoria se hará entre el rango del 1 al 10).
La programación se comenzará añadiendo un botón de comando cuya función principal será lanzar la macro o formulario en este caso:
Para que este botón de comando ejecute o muestre el formulario se escribe lo siguiente:
Private Sub CommandButton1_Click()
UserForm1.Show
End Sub
Una vez que diseñamos la distribución del formulario con el Label (para que salga el texto o "frase" como valores) y la Imagen (que se cambiará aleatoriamente) insertamos un nuevo CommandButton
Ahora viene la codificación del formulario:
- Designamos tres variables como Integer(Entero): ult (de la ultima fila), a y b (numeros aleatorios)
Dim ult As Integer, a As Integer, b As Integer - Utilizamos el codigo de la última fila:
ult = Worksheets("Hoja1").Cells(Rows.Count, 1).End(xlUp).Row - Definimos que a y b nos arroje un numero aleatorio entre los limites de las 60 frases y las 10 imagenes.
a = WorksheetFunction.RandBetween(2, ult)
b = WorksheetFunction.RandBetween(1, 10) - Y asiganamos la dirección, path o ruta en donde se encontraran las imagenes:
directorio = ActiveWorkbook.Path & "\imageneskarma\" & b & ".jpg" - Finalmente ordenamos que el Label muestre el valor de la celda aleatoria y el de una imagen , ademas de aplicarle un ajuste de tamaño:
UserForm1.Label1.Caption = Worksheets("Hoja1").Cells(a, 1).Value
UserForm1.Image1.Picture = LoadPicture(directorio)
UserForm1.Image1.PictureSizeMode = fmPictureSizeModeStretch
Muchas gracias.
Por: Fausto Moya