Macro para validar información

Buenas tardes he realizado una macro para validar información. Me explico recibo una tabla con una columna que tiene códigos de distritos del Perú. Supuestamente mi macro debería tomar uno por uno cada uno de estos y compararlos con la tabla que contiene todos los códigos y debe apuntar dicho error en otra hoja. Pero cuando la ejecuto me jala todos los datos como si todos fueran erróneos. (En realidad solo uno lo esta pues yo lo modifique para probar la macro). Les adjunto el código y agradezco su valiosa ayuda que hasta el momento me ha sido de gran utilidad.
Sub Validacion()
Dim co1 As Integer
Dim ub As Integer
Dim d As Integer
Dim errores As Boolean
Dim cod As String
Dim a As Integer
d = 1
While Cells(d + 2, 30).Value <> ""
d = d + 1
Wend
For co1 = 3 To d
Sheets("Tabla").Select
cod = Cells(co1, 30).Value
Sheets("Ubicaciones").Select
Range("a3").Select
For ub = 3 To 2064
If ActiveCell.Value = cod Then
errores = True
End If
Next ub
If errores = True Then
Sheets("Errores").Select
ActiveCell.Value = "AD"
ActiveCell.Offset(0, 1) = co1
ActiveCell.Offset(0, 2) = "Ingrese un código de la tabla ubicaciones"
ActiveCell.Offset(0, 3) = Date
While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Range("A1").Select
Wend
Sheets("Tabla").Select
End If
Next co1
End Sub

1 respuesta

Respuesta
1
El problema está en que recorrés un bucle (For ub=3 to 2064) y si encuentra que un valor es = a tu cod coloca true en la variable, pero continua.
De esta manera no podes saber cuántos errores hay.
Colocá lo que tenga que hacer por cada error, dentro del for.
Aproximadamente así:
For ub = 3 To 2064
If ActiveCell.Value = cod Then
'si son = realizar las acciones y recién entonces continuar con el sgte ub
Sheets("Errores").Select
ActiveCell.Value = "AD"
ActiveCell.Offset(0, 1) = co1
ActiveCell.Offset(0, 2) = "Ingrese un código de la tabla ubicaciones"
ActiveCell.Offset(0, 3) = Date
'otras instrucciones
End If
Next ub
Armala y pruébala. Si te queda algún problema escribime toda la rutina como te ha quedado y la seguimos ajustando.
Tiene razón la variable siempre da true por eso jala toda la data. Probé lo que me propusiste y me resulto bien. Muchas gracias por su ayuda ha sido excelente.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas