Saltar al contenido
PROGRAMAR EN VBA MACROS DE EXCEL

Como Crear LISTA de VALIDACION DEPENDE Valor CELDA con MACRO Excel VBA #533

Validacion datos en cascada, validaci贸n depende dato ingresado en celda

Crear Validaci贸n que depende el valor ingresado en otra celda

En esta presentaci贸n se mostrar谩 como crear una lista de validaci贸n con macro dependiente del dato ingresado en otra celda, es decir la macro creara una lista de datos v谩lidos que se puede ingresar en una celda, pero dicha lista depender谩 de los datos ingresados en otra celda, es decir los datos de validaci贸n variaran dependiendo del valor o dato ingresado en una celda adyacente.聽

Necesitas aprender a manejar Excel, click ac谩, si quieres aprender sobre聽Excel聽en ingl茅s, entonces debes hacer聽click here. Si lo que necesitas es aprender o profundizar sobre la programaci贸n de macros con VBA este es unos de los聽mejores cursos on line que he visto en internet, te lo recomiendo no te arrepentir谩s.

Mira la macro en acci贸n, una explicaci贸n m谩s detallada de su codificaci贸n y funcionamiento, recomiendo observar para una m谩s f谩cil comprensi贸n de la macro; suscribe a nuestro canal de You Tube, mira el playlist con聽 v铆deos relacionados donde podr谩s ver la macros relacionadas en acci贸n con una explicaci贸n en forma visual que ayudar谩 a entender el ejemplo en forma m谩s f谩cil.

Crear Lista de Validaci贸n en Cascada con Macros de Excel

Una vez descargado el ejemplo con el cual se trabaja, que lo puedes hacer desde el final del post, al abrir el libro de Excel, se puedo observar en la celda J1 existe una celda de color naranja que cuya lista de validaci贸n en la celda de Excel, contiene tres datos: fecha, descripci贸n y marca.

Depende del valor seleccionado en la celda J1, se crear谩 en la celda J2 un listado de validaci贸n, es decir si se selecciona fecha, se crear谩 un listado de validaci贸n permitiendo en la celda el ingresos de datos que coincidan con el listado, si se elige descripci贸n crear谩 otra lista de validaci贸n distinta y si se elige marca crear谩 otra lista de validaci贸n que no ser谩 igual a las dos anteriores.

Los datos de donde obtiene la macro los datos para crear la lista de validaci贸n, provienen de la Hoja3 columnas B, C y D.

Explicaci贸n del C贸digo para validaci贸n dependiendo de datos ingresados en otra celda

La macro de Excel que permite crear una validaci贸n de datos en cascada en una celda de Excel, en primer lugar crea un objeto con las hojas 1 y 3 que es donde est谩n las celdas con validaci贸n y donde est谩n los registros para crear las listas de validaci贸n, respectivamente, se usa el c贸digo:

Set a = Sheets(芦Hoja1禄)
Set b = Sheets(芦Hoja3禄)

Luego se realiza un bucle entre la columna 2 y la 4, buscando la columna que coincida con el dato ingresado o seleccionado en J1, una vez encontrado el titulo de la columna en la hoja3 que coincida con lo ingresado en la celda J1 de la hoja1, procede a crear un rango con los datos de dicha columna.

Es decir si seleccion贸 la palabra 芦marca禄, con intenci贸n de filtrar por marcas聽 en la celda J1 de la hoja1, la macro buscar谩 en la hoja 3 en las columnas 2 a 4 dicha palabra 芦marca禄 una vez encontrada la palabra, que es la cabecera o titulo de la columna en la hoja3, crear谩 un rango con los datos de dicha columna, seleccionando cuales son los registros que se deben mostrar en el listado de validaci贸n de la celda J2 de la hoja1.

El bucle para realizar lo mencionado es el siguiente:

Hace un bucle entre la columna 2 y 4

For x = 2 To 4

‘Determina en cada recorrido del bucle si el titulo de la columna que es esta en al fila 1 de cada columna es igual a lo ingresado en J1, que es el dato por el que se requiere hacer un filtro.

If b.Cells(1, x) = a.Range(芦J1禄) Then

Se determina cual es la direcci贸n donde el titulo de la columna coincida con lo ingresado en J1 de la hoja 1, a su vez determina la letra de la columna para luego crear rango donde est谩n los datos que ser谩n validos ingresar en la celda J2 de la hoja1, se usan los siguientes c贸digos:

direc = b.Cells(1, x).Address
wc = Mid(direc, InStr(direc, 芦$禄) + 1, InStr(2, direc, 芦$禄) – 2)
uf = b.Range(wc & Rows.Count).End(xlUp).Row
valida = 芦=Hoja3!$禄 & wc & 芦$2:$禄 & wc & 芦$禄 & uf

Luego se crea en la hoja1 columna J2 el listado de validaci贸n que depender谩 del valor o dato seleccionado en la columna J1, la codificaci贸n para crear una validaci贸n con macro en dicha celda es la siguiente:

With a.Range(芦J2禄).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=valida
.IgnoreBlank = True
.InCellDropdown = True
End With
End If

Luego se seleccionar el dato por el que se requiere filtrar, aplica un filtro autom谩tico mostrando los datos coincidentes con lo seleccionado en la celda J2, el c贸digo es el siguiente:

If Target.Row = 2 And Target.Column = 10 Then Call Filtrar

En este post no se explica como se crea el c贸digo para que aplique un filtro avanzado y muestre los datos que se requieren, si necesita saber como se realiza el filtro avanzado vea el post como realizar un filtro avanzado con macros de Excel.

C贸digo para Crear Validaci贸n de Datos que dependan del dato ingresado

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Row = 1 And Target.Column = 10 Then
Application.ScreenUpdating = False
Set a = Sheets(芦Hoja1禄)
Set b = Sheets(芦Hoja3禄)

For x = 2 To 4
If b.Cells(1, x) = a.Range(芦J1禄) Then
direc = b.Cells(1, x).Address
wc = Mid(direc, InStr(direc, 芦$禄) + 1, InStr(2, direc, 芦$禄) – 2)
uf = b.Range(wc & Rows.Count).End(xlUp).Row
valida = 芦=Hoja3!$禄 & wc & 芦$2:$禄 & wc & 芦$禄 & uf
Exit For
End If
Next x

With a.Range(芦J2禄).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=valida
.IgnoreBlank = True
.InCellDropdown = True
End With
End If

If Target.Row = 2 And Target.Column = 10 Then Call Filtrar
End Sub


Descarga el Libro de Excel Como Crear Validaci贸n de Datos Dependientes

La descarga del archivo de Excel usado como ejemplo puedes hacerlos desde el final del post, el mismo es totalmente gratuito y libre su uso, solicito aportar para sostener esta web, si est谩 dentro de tus posibilidades, desde ya muchas gracias.

Si te fue de utilidad puedes聽INVITARME UN CAF脡聽y de esta manera ayudar a seguir manteniendo la p谩gina,聽CLICK聽para descargar en ejemplo en forma gratuita.

If this post was helpful聽INVITE ME A COFFEE聽and so help keep up the page,聽CLICK聽to download free example.

Donate:
Cuenta Paypal: https://paypal.me/programarexcel
Cuenta Bitcoin: 1KBGGb8fyDzyR3X1Rie6m7VguzaAfngNbd
Cuenta Ether: 0x41Bbd24556914C83a31217eBb3BC49789b66e407

Summary
Author Rating
1star1star1star1star1star
Aggregate Rating
5 based on 1 votes