
CREAR LISTA DE VALIDACI脫N EN CASCADA DEPENDIENDO DE DATO INSERTADO
En este ejemplo se muestra como se puede crear con macro una lista de validaci贸n que dependa del dato ingresado en una celda, es decir en base al registro que se ingrese en una celda, se crear谩 un listado de validaci贸n cuyos datos depender谩n del dato ingresado.聽
Aprende 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.
https://www.youtube.com/watch?v=y0xJYCu01-k&list=PLdK9H5dMIfQgEv075oRnP3SKbF1zZaYHq
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.
Validaci贸n en Celdas de Excel que depende de los datos ingresados en otra celda de Excel
Este ejemplo funciona as铆: al intentar ingresar un dato o registro nuevo en una celda de la columna A, se crea en la columna B un listado de validaci贸n que solo permite ingresar los n煤meros de los distintos departamentos que existen en una tienda.
Una vez seleccionado el dato del n煤mero del departamento, se crear谩 en la columna D, en este ejemplo est谩 destinado a ingresar la marca del producto, pero dicho listado va a depender de lo seleccionado en la columna B, es decir que dependiendo seleccionado o ingresado en la columna A ser谩 el dato que se muestre en la columna D.
En el link encuentra muchos v铆deos relacionados con el ingreso o creaci贸n de listados de validaci贸n en Ecel VBA.
Explicaci贸n del c贸digo para Crear Distintas Listas de Validaci贸n Dependiendo del Dato ingresado en Celda
Primero se debe determinar si las celdas modificadas pertenecen a la columna A, sea cualquier celda de dicha columna mayor a 1, as铆:
If Target.Row >= 1 And Target.Column = 1 Then
Se crea objetos con la hoja1 y hoja3, de la siguiente manera:
Set a = Sheets(“Hoja1”)
Set b = Sheets(“Hoja3”)
Se determina el rango donde est谩 los datos para crear el listado de validaci贸n y se carga en la variable “valida”:
uf = b.Range(“B” & Rows.Count).End(xlUp).Row
valida = “=Hoja3!$B$2:$B$” & uf
Luego dicho rango se usa para hacer que la lista de validaci贸n se muestre en la celda, insertando la validaci贸n con los siguientes c贸digos:
With a.Cells(Target.Row, “B”).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=valida
.IgnoreBlank = True
.InCellDropdown = True
End With
End If
Lo anterior es para crear la validaci贸n en la columna B, en dicha validaci贸n se establecen cuales son los departamentos a los que pertenecen los distintos elementos o productos de la base de datos.
Ahora viene la creaci贸n del c贸digo, que permite mostrar un listado de validaci贸n distinto, el cual variar谩 dependiendo de lo seleccionado o escrit en la columna B.
Solo se crea el listado si el cambio en la celdas de Excel se produce en la columna B fila mayor聽 a 2, para ello se usa el siguiente c贸digo:
If Target.Row >= 1 And Target.Column = 2 Then
Se crea un bucle For… Next que permite recorrer las columnas 3 a 7, el objetivo es encontrar en que columna se encuentra el departamento seleccionado en base a ello tomar谩 el listado correspondiente que est谩n en las columnas 3 a 7 (Columnas C a G), el c贸digo es el siguiente:
For x = 3 To 7
If b.Cells(1, x) = a.Cells(Target.Row, “B”) 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
Luego se crea la validaci贸n agregando a la celda correspondiente de la Columa D el listado de datos v谩lidos para ingresar en dicha celda, se usan los c贸digos:
With a.Cells(Target.Row, “D”).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=valida
.IgnoreBlank = True
.InCellDropdown = True
End With
Exit For
End If
Next x
C贸digo VBA聽 Inserta en Modulo para crear una validaci贸n en celda al insertar un dato
Sub BORRA()
Sheets(“Hoja1”).Range(“B:D,D:D”).Validation.Delete
End Sub
C贸digo VBA聽 Inserta en Worksheet聽 para crear listado de validaci贸n dependiendo del dato ingresado
Sub BORRA()
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Row >= 1 And Target.Column = 1 Then
Application.ScreenUpdating = False
Set a = Sheets(“Hoja1”)
Set b = Sheets(“Hoja3”)
uf = b.Range(“B” & Rows.Count).End(xlUp).Row
valida = “=Hoja3!$B$2:$B$” & uf
With a.Cells(Target.Row, “B”).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=valida
.IgnoreBlank = True
.InCellDropdown = True
End With
End If
If Target.Row >= 1 And Target.Column = 2 Then
Application.ScreenUpdating = False
Set a = Sheets(“Hoja1”)
Set b = Sheets(“Hoja3”)
For x = 3 To 7
If b.Cells(1, x) = a.Cells(Target.Row, “B”) 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
With a.Cells(Target.Row, “D”).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=valida
.IgnoreBlank = True
.InCellDropdown = True
End With
Exit For
End If
Next x
End If
Application.ScreenUpdating = True
End Sub
Descarga el Libro Como Crear Validaci贸n al Ingresar Datos en Hoja de Excel con Macros VBA
Desde el final del post se puede descargar el libro de Excel usado como ejemplo, 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
























