Mostrar lista de Validación en Excel dependiendo del valor de una celda

El objetivo de este tutorial es mostrar de manera dinámica una Lista de validación en una celda, y se mostrará dependiendo del valor de otra celda. Usaremos Macros VBA y eventos de hoja para detectar el momento en que cambia el valor de la primera celda. Las condiciones son las siguientes:

  • Si ingresamos la palabra “Libre” en la celda B3, la celda D3 aceptará cualquier valor.
  • Si ingresamos la palabra “Lista” en la celda B3, la celda D3 tendrá una lista de validación.

Ver video Lista de validación dependiendo del valor de otra celda

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Lista de Validación para mostrar las opciones

En la celda B3 de nuestro ejemplo deberemos aplicar una Lista de validación que muestre las palabras Libre y Lista. Seguimos los siguientes pasos:

  • Elegimos la celda B3.
  • En la pestaña Datos elegimos Validación de datos.
  • En la sección Permitir elegimos Lista.
  • En la sección origen ingresamos “Libre,Lista”.
  • Aceptar.

Lista de validación en Excel para mostrar dos opciones.

Figura 1. Lista de validación en Excel para mostrar dos opciones.

Detectar cambios en la celdas usando Eventos para aplicar Lista de validación

Usaremos el evento Change o Cambiar para detectar el cambio de valores de la celda B3 y dependiendo lo elegido se aplicará una Lista de Validación en la celda D3 o se quitará si elegimos Libre.

La lista de validación que se aplicará si elegimos Lista en la celda B3 serán los valores que se encuentran en una tabla llamada TablaValores que se encuentra en la hoja Lista.

Valores para aplicar en la Lista de validación.

Figura 2. Valores para aplicar en la Lista de validación.

Haremos uso de código VBA para indicarle a Excel mediante macros que detecte los cambios en la celdas y apliquen o quiten la lista de validación. Usaremos el evento Change de la hoja Hoja1. Haremos lo siguiente:

  • Presionamos la combinación de teclas Alt + F11.
  • Damos doble clic en Hoja1 (Hoja1) que se encuentra a la izquierda.
  • Damos clic en el Combo que dice Worksheet.
  • Ahora elegimos Change en la lista de la derecha donde tendremos los eventos de la hoja.
  • Ingresamos la macro que te proporciono más adelante.
  • Probamos.

Uso el evento Change en VBA para detectar cambios en la hoja de cálculo.

Figura 3. Uso el evento Change en VBA para detectar cambios en la hoja de cálculo.

Si en la celda B3 elegimos Lista, se mostrará una Lista de validación. Si elegimos Libre, se borrará la Lista de validación.

Mostrar Lista de validación en Excel dependiendo del valor de una celda.

Figura 4. Mostrar Lista de validación en Excel dependiendo del valor de una celda.

Código VBA de la macro

'EXCELeINFO
'MVP Sergio Alejandro Campos
'http://www.exceleinfo.com
'https://www.youtube.com/user/sergioacamposh
'http://blogs.itpro.es/exceleinfo

Private Sub Worksheet_Change(ByVal Target As Range)

Dim HojaLista As Worksheet
Dim RangoLista As Range
Dim MiRango As Range

Set HojaLista = ThisWorkbook.Worksheets("Lista")
Set RangoLista = HojaLista.Range("TablaValores[ENCABEZADO]")
Set MiRango = Application.Worksheets("Hoja1").Range("D3")

If Range("B3").Value = "Libre" Then

    MiRango.Validation.Delete

ElseIf Range("B3").Value = "Lista" Then

    With MiRango.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
        Formula1:="='" & HojaLista.Name & "'!" & RangoLista.Address
    End With

End If

End Sub

Descarga el archivo de ejemplo

Lista de Validación dependiendo del valor de una celda – EXCELeINFO.zip

Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.

You may also like...