Saltar al contenido
PROGRAMAR EN VBA MACROS DE EXCEL

Como CREAR VALIDACION de Celdas LISTADO de Validacion CREADO en TIEMPO REAL – Excel VBA #536

Validacion datos en tiempo real

VALIDAR DATOS SIN LISTA DE VALIDACI脫N

En este ejemplo se muestra como validar con macro de Excel datos en una celda sin tener una lista de validaci贸n previa, la lista de validaci贸n se crea en tiempo real al insertar un dato.

Aprende a operar 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=9hoibKP15Zg&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.

VALIDAR DATOS EN EXCEL CON LISTA VALIDACI脫N CREADA CON MACRO EN TIEMPO REAL

Primero se debe descargar el libro, una vez abierto el libro de Excel, se debe insertar un dato en cualquier celda de la columna A, excepto la fila 1 que est谩 reservada para la cabecera de las columnas.

Cuando se inserta el dato, en forma autom谩tica la macro crea una lista de validaci贸n en la columna D y F.

Como se podr谩 observar no existe ninguna lista de validaci贸n en las restantes hojas, normalmente cuando se validan datos se cuenta con un lista de datos v谩lidos ya sea en la misma hoja o en otra hoja, pero en este caso no hay ninguna lista de validaci贸n, la lista de validaci贸n de Excel se crea en tiempo real, es decir una vez ingresado el dato en cualquier celda de la columna A, se crea la lista de validaci贸n.

En la columna D la lista de validaci贸n la confecciona con los datos ingresados previamente en dicha columna, los datos de la columna F son obtenidos de un bucle  que inserta un array en la lista de validaci贸n de las celdas de la columna F.

Explicaci贸n del c贸digo para crear listados para validar en tiempo real con macro de Excel VBA

La macro solo se ejecuta si la celda modificada pertenece a cualquier fila de la columna A, para ellos se usa el siguiente c贸digo:

If Target.Row > 1 And Target.Column = 1 Then

Se declaran las variables a usar, as铆:

Dim Mycolec As New Collection, celda As Object, MyArray() As Variant
Dim Mycolec1 As New Collection, MyArray1() As Variant

Se hace un objeto con la Hoja1 y se determina el rango de datos ingresados en la columna D, con el siguiente c贸digo:

Set a = Sheets(芦Hoja1禄)
uf = a.Range(芦D禄 & Rows.Count).End(xlUp).Row
r1 = 芦D2禄 & 芦:D禄 & uf

Luego se recorre cada unas de las celdas del rango agreg谩ndolas a una colecci贸n con la particularidad que solo se agregan los datos 煤nicos no repetidos, se usa el c贸digo:

For Each celda In Range(r1)
Mycolec.Add celda.Value, CStr(celda.Value)
Next celda

Luego se redimenciona la array o matriz creado el cual va de 1 hasta la cantidad de datos que hay en la colecci贸n de datos obtenidas con el c贸digo anterior, as铆:

ReDim MyArray(1 To Mycolec.Count)

Posteriormente se hace un bucle for… next que va desde 1 hasta el 煤ltimo valor de la colecci贸n agregando en el array o matriz cada dato de la colecci贸n, as铆:

For i = 1 To Mycolec.Count
MyArray(i) = Mycolec(i)
Next i

Luego se agrega el listado creado en la celda para establecer cuales son los datos v谩lidos que se pueden agregar en la celda, se usa el siguiente c贸digo:

With a.Cells(Target.Row, 芦D禄).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlEqual, Formula1:=Join(MyArray, 芦,禄)
.IgnoreBlank = True
.InCellDropdown = True
End With

Posteriormente se cargan en otra colecci贸n los datos de un bucle que va de 1 a 5, es decir la colecci贸n de datos tendr谩 los n煤meros del 1 al cinco, el c贸digo que se usa es:

For x = 1 To 5
Mycolec1.Add x
Next x

Se redimenciona la array o matriz y se pasan los datos de la colecci贸n de datos al array con el siguiente c贸digo:

ReDim MyArray1(1 To Mycolec1.Count)
For i = 1 To Mycolec1.Count
MyArray1(i) = Mycolec1(i)
Next i

Por 煤ltimo se agrega la validaci贸n con macros de Excel a la celda de la columna F, dicha validaci贸n solo permite ingresar n煤meros del 1  al 5, se usa el siguiente c贸digo:

With a.Cells(Target.Row, 芦F禄).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlEqual, Formula1:=Join(MyArray1, 芦,禄)
.IgnoreBlank = True
.InCellDropdown = True
End With

C贸digo VBA para validar datos ingresados en celdas de Excel en Tiempo Real

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Row > 1 And Target.Column = 1 Then
Dim Mycolec As New Collection, celda As Object, MyArray() As Variant
Dim Mycolec1 As New Collection, MyArray1() As Variant

Set a = Sheets(芦Hoja1禄)
uf = a.Range(芦D禄 & Rows.Count).End(xlUp).Row
r1 = 芦D2禄 & 芦:D禄 & uf
For Each celda In Range(r1)
Mycolec.Add celda.Value, CStr(celda.Value)
Next celda

ReDim MyArray(1 To Mycolec.Count)
For i = 1 To Mycolec.Count
MyArray(i) = Mycolec(i)
Next i

With a.Cells(Target.Row, 芦D禄).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlEqual, Formula1:=Join(MyArray, 芦,禄)
.IgnoreBlank = True
.InCellDropdown = True
End With

For x = 1 To 5
Mycolec1.Add x
Next x

ReDim MyArray1(1 To Mycolec1.Count)
For i = 1 To Mycolec1.Count
MyArray1(i) = Mycolec1(i)
Next i

With a.Cells(Target.Row, 芦F禄).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlEqual, Formula1:=Join(MyArray1, 芦,禄)
.IgnoreBlank = True
.InCellDropdown = True
End With

End If
End Sub


Descarga el Libro Como Crear Validaci贸n de Datos en Tiempo Real con Excel VBA

Puedes descargar desde el final el archivo usado como ejemplo, es gratis y su uso libre, 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
0 based on 1 votes