Hola quisiera saber como enlazar Listas Desplegables en un archivo, con ejemplo

Estimados,

He visto un archivo de Excel que trata de un listado donde uno ingresa una linea y elige un motivo y un submotivo, el segundo depende del primero. Ambos se eligen de una lista desplegable y la lista que muestra en el campo de submotivo depende del valor del motivo.

Por ejemplo tenemos las siguientes listas desplegables

Motivo ABCDE = {A, B, C, D}

Submotivo A = {1, 2, 3}

Submotivo B = {10, 20, 30}

Submotivo C = {100, 200, 300}

Submotivo D = {1000, 2000, 3000}

En una lista con dos campos de listas desplegables elegimos en el motivo el valor A. Esto hace que la lista desplegable de submotivo deje elegir entre {1, 2, 3}. En cambio si ubiesemos elegido el motivo C la lista desplegable de submotivos ubiera mostrado los valores {100, 200, 300}

La pregunta es, como se hace esto para poder usarlo yo mismo.

De Antemano Muchas Gracias!

1 respuesta

Respuesta
2

Te presento una opción utilizando Listas de Validación.

Como no comentaste en dónde tienes la información y en dónde quieres poner las listas, puse un ejemplo de cómo debes poner los datos.


Lo primero que debes hacer es organizar la información como se muestra en la siguiente imagen.

Los datos que aparecen en la columna A, son para cargar la lista de motivos.

Los datos de las columnas B y C, deberán estar ordenados por la columna B, es decir, ordenados por Motivo.


En la celda F3 deberás poner una lista de validación, entra a la ficha Datos, selecciona Validación de datos, Permitir: Lista, Origen A2:A5 y Aceptar


Ahora pon la siguiente macro en los eventos de la hoja

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Not Intersect(Target, Range("F3")) Is Nothing Then
        ini = 1
        inicia = True
        For i = 1 To Range("B" & Rows.Count).End(xlUp).Row
            If Cells(i, "B") = [F3] Then
                If inicia Then
                    ini = i
                    inicia = False
                End If
            Else
                If inicia = False Then
                    'fin = i - 1
                    Exit For
                End If
            End If
        Next
        fin = i - 1
        If [F3] <> "" Then
            [G3] = ""
            With Range("G3").Validation
                .Delete
                .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
                    Operator:=xlBetween, Formula1:="=C" & ini & ":C" & fin
                .IgnoreBlank = True
                .InCellDropdown = True
                .InputTitle = ""
                .ErrorTitle = ""
                .InputMessage = ""
                .ErrorMessage = ""
                .ShowInput = True
                .ShowError = True
            End With
        End If
    End If
End Sub

Sigue las Instrucciones para poner la macro en worksheet

  1. Abre tu libro de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja)
  4. Del lado derecho copia la macro

También te anexo mi archivo para que veas el funcionamiento. Selecciona un motivo en la celda F3 y en automático la celda G3 tendrá los submotivos.

https://www.dropbox.com/s/6dfq715g95r10dn/lista%20y%20sublista%20de%20validacion.xlsm?dl=0 


Existen otras opciones, por ejemplo con combobox en la hoja o con combobox en un formulario, pero tampoco pusiste el ejemplo de cómo lo querías.

Prueba la opción que te envié y me comentas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas