Para comprender de buena manera en que consiste un userform, lo que haremos será crear uno de ellos, paso a paso, explicando lo que sea necesario según sea el caso.

    Supongamos que deseamos realizar una encuesta, donde le preguntaremos a una persona su nombre y que equipo de fútbol, de una lista posible, considera como mejor.   Además, esta encuesta la queremos realizar a través de un formulario que se activará cada vez que presionemos un determinado botón de comando que se encuentra en una de las hojas (Hoja1) de nuestro archivo de ejemplo (userforms02.xls).

     Concretamente, el siguiente es objetivo perseguido:

    Lo que haremos en primer lugar será insertar el cuadro de comando en la hoja Userforms.  Luego le aplicaremos los formatos que deseemos para que quede llamativo dicho control.

    Posteriormente, lo que haremos será crear el userform, para esto necesitamos abrir el Editor de Visual Basic (ALT + F11).  Luego de lo cual, iremos al menú Insertar/Userform.  Además iremos a la propiedad Caption de dicho userform, configurándola como "Equipo Favorito".   Una vez realizados todos estos paso, la pantalla debiese haber quedado de la siguiente forma:

    A continuación comenzaremos a trabajar en el Userform, al cual le insertaremos algunos controles y modificaremos algunas propiedades de los mismos hasta dejarlo con el siguiente aspecto:

    En general, lo realizado hasta el momento no dista mucho de lo realizado anteriormente con los cuadros de controles, por esta razón es que no hemos reparado en detalles menores.

   Antes de incrustar los distintos botones de opción, será necesario en primer lugar insertar el Marco, esto es un control que permite agrupar otros controles, dándoles un aspecto de grupo.

   Tendremos que utilizar una Etiqueta de Texto, la cual nos permitirá colocar un texto de referencia (Nombre) al cuadro de texto que aparece en su costado.

    A continuación,  haremos un pequeño cuadro resumen con las propiedades que deberá configurar para cada uno de los controles, por favor sígalo muy atento:
 

Etiqueta   Cuadro de Texto   Marco
Propiedad Valor   Propiedad Valor   Propiedad Valor
               
Accelerator : N   (Name) : TextName   Caption : Equipo:
Caption : Nombre:   TabIndex : 1   TabIndex : 2
TabIndex : 0            
               
Opción: Real   Opción: Colo-Colo   Opción: Manchester
Propiedad Valor   Propiedad Valor   Propiedad Valor
               
Accelerator : R   Accelerator : C   Accelerator : B
Caption : Real Madrid   Caption : Colo-Colo   Caption : Manchester
(Name) : OpcionReal   (Name) : OpcionColo   (Name) : OpcionManch
TabIndex : 0   TabIndex : 1   TabIndex : 2
      Value : True      
               
               
Botón Grabar   Botón Cancelar      
Propiedad Valor   Propiedad Valor      
               
Default : True   Cancel : True      
Caption : Grabar   Caption : Cancelar      
(Name) : BotAcep   (Name) : BotCanc      
TabIndex : 3   TabIndex : 4      


    A través de la propiedad TabIndex lo que estamos haciendo es establecer en cada control el orden de tabulación que tendrán, es decir, el orden en que se irá desplazando el cursor cada vez que presionemos la tecla "Tab" de nuestro teclado, en caso que nos deseemos mover de esta forma dentro del formulario, en lugar de utilizar el mouse.   Nótese que los controles de opción tienen su propia numeración, dentro del marco que los cobija.

    Otra propiedad muy interesante que hemos aplicado en este ejemplo es Acelerator, la cual sirve para configurar el acceso rápido a los controles de opción, acción que se realiza mediante la combinación teclas "ALT + Letra destacada", donde la letra destacada es aquella "letra" que hemos asignada a dicha propiedad y que aparecerá subrayada en el formulario.


   Una vez realizada la configuración de las propiedades de los distintos controles, procederemos ahora a configurar los distintos botones a través del código VBA. 

   En primer lugar configuraremos el control que activa el Userform (Abrir Formulario), para lo cual introduciremos la siguiente línea de código:

Private Sub CommandButton1_Click()
    UserForm1.Show
End Sub

    Posteriormente, configuraremos el control "Cancelar", para que cuando lo accionemos cierre el Userform creado:

Private Sub BotCanc_Click()
   Unload UserForm1
End Sub

   Finalmente configuraremos el control "Guardar", en este caso la codificación será un poco más compleja:

Private Sub BotAcep_Click()

    Sheets("Hoja1").Activate


    If TextName.Text = "" Then

        MsgBox "Debe introducir un nombre."
        TextName.SetFocus

        Exit Sub

        End If


    NextRow = Application.WorksheetFunction.CountA(Range("A:A")) + 1
   
    Cells(NextRow, 1) = TextName.Text
    If OpcionReal Then Cells(NextRow, 2) = "Real"
    If OpcionColo Then Cells(NextRow, 2) = "Colo-Colo"
    If OpcionManch Then Cells(NextRow, 2) = "Manchester"


    TextName.Text = ""
    OpColo = True
    TextName.SetFocus

End Sub

    La primera instrucción tiene como objetivo asegurarse de que la hoja activa sea la "Hoja1".   El siguiente grupo de código cumple la misión de verificar que el cuadro de texto no quede en blanco, y si así sucediera, enviará un mensaje que indicará tal situación no permitiendo "grabar" o recopilar la información.  El tercer grupo de código (que en este case es una única línea de código) cumple la función de buscar la primera celda disponible para registrar el valor obtenido del userform.   El cuarto grupo es el encargado de recopilar la información que figura tanto en el cuadro de texto como en los botones de opción.  El último grupo de código deja en blanco el cuadro de texto y deja seleccionada por defecto la opción "Colo-Colo".

    En el siguiente apartado, podrá descargar el archivo con este ejemplo desarrollado.