Con validación de datos no puedo autocompletar, pero sí usando macros en Excel

image

Hace días un amigo me preguntó sobre la posibilidad de tener la posibilidad de autocompletar textos usando Validación de datos. Aunque es una característica interesante, ésta no está disponible a menos que se tenga una lista de datos en un rango superior a la celda con validación de datos, pero no veo viable la opción.

Aprovechando el uso de macros se me ocurrió una idea precisamente usando macros y formularios de Excel.

Repasando la validación de datos

Vamos a ver dos opciones de ingreso de datos. Primero con Validación de datos. Tenemos una tabla para capturar NOMBRE y CARGO. El Cargo lo ingresaremos mediante lista de Validación.

En la Hoja 2 tendremos una lista la cual nombraremos lstCargos, como vemos en la Figura 1.

image

Figura 1. Asignar nombre a rango.

En la Hoja 1 estará nuestra Tabla de ingreso. Seleccionamos el rango donde deseemos aplicar la validación de datos y nos vamos a la pestaña Datos > Validación de datos. En el formulario de Validación elegimos Permitir Lista y en Origen ingresamos =lstCargos (ver Figura 2).

image

Figura 2. Uso de una lista como Validación de datos.

En la siguiente animación vemos en acción la Validación de datos usando una Lista.

Validación de datos en Excel

Figura 3. Validación  de datos en Excel.

Usando autocompletar mediante Formulario y ComboBox

Como les platicaba al principio, la solución alterna que di para autocompletar una lista fue usando un Formulario y un ComboBox, que éste a su vez sí tiene la característica de autocompletar. Mi idea inicial fue “cada que se elija una celda de cierto rango se abriría automáticamente un Formulario donde podamos elegir el dato de una lista y al dar Enter que se capture el valor e la celda”. Y esto es lo que resultó:

Primero creamos el Formulario. Presionamos [Ctrl] + [F11] para abrir el IDE de Visual Basic para Aplicaciones. Elegimos el proyecto activo (el archivo en uso) y después seleccionamos el menú Insertar > UserForm.

image

Figura 4. Controles de formulario.

En la Hoja 1 añadimos el evento Worksheet_SelectionChange:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Si la celda elegida es B13:B18 se muestra el Formulario.
    If Not Intersect(Target, Range("B13:B18")) Is Nothing Then
        UserForm1.Show
        'En todo caso no se muestra.
    Else
    End If
End Sub

Al formulario le modificamos el evento Initialize y le ponemos el siguiente código:

Private Sub UserForm_Initialize()
    Me.ComboBox1.RowSource = "lstCargos"
End Sub

Al primer botón le pondremos Cerrar en la propiedad Caption, así como True en la propiedad Cancel. Le añadimos el siguiente código:

Private Sub CommandButton1_Click()
    Unload Me
End Sub

Al segundo botón le ponemos Aceptar en Caption y True en Default. Le añadimos el siguiente código:

Private Sub CommandButton2_Click()
    ActiveCell.Value = Me.ComboBox1.Value
    Unload Me
End Sub

image

Figura 5. Propiedades de controles.

Al final sólo cambiamos el tamaño el formulario procurando ocultar los dos botones.

En la siguiente animación vemos cómo se muestra el formulario al elegir una celda del rango B13:B18.

Autocompletar con Formulario y ComboBox en Excel

Figura 6. Autocompletar con Formulario y ComboBox en Excel.

Video tutorial

Ver en el video en Youtube: https://www.youtube.com/watch?v=ykbM9UqmtHw

Anexos

:: Descargar Autocompletar ComboBox.rar

You may also like...