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.
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.
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.
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.
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.