Validación de datos

Admirados expertos,
He visto una hoja de excel que tras completar unas celdas, pide la validación de los datos. Para ello se pulsa una celda con el cursor y una macro verifica el contenido de unas 60 celdas. En unos casos verifica que no tengan más de veinte letras y en otras que el valor se ajuste al resultado de una fórmula relativamente simple. Concluido el proceso aparece un msgbox que anuncia si han habido errores o no. Las celdas con valores erróneos aparecen con el fondo rojo, que no desaparece hasta que los valores introducidos son correctos.
¿En qué macros debo trabajar para obtener esos resultados? ¿Está al alcance de los mortales?
Reciba mi agradecimiento por su atención y un cordial saludo,
Lucas33

1 Respuesta

Respuesta
1
Recuerda que siempre hay más de una forma de hacer las cosas, seguro que lo que planteas tienes varias soluciones, pero así de primer vistazo, el que lo hizo parece ser que simplemente llama a una macro, no usa "eventos" de la hoja, esto es solo una suposición, pero dependiendo del control que quieras, la macro puede ser más o menos compleja, pero si, seguro que esta al alcance de los mortales, si no sabes nada de VBA de sera un poco complicado al principio, pero con gusto te ayudo a desarrollarlo, pero tienes que ser muy claro y muy explicito en lo que quieres.
Agradezco enormemente tu atención.
Paso a especificarte el caso:
Supongamos el rango A1:D5
En el que las celdas de la columna A son códigos, las celdas la columna B son títulos y las celdas de la columna C son precios
El validador lo que hace es comprobar que el valor de cada una de las celdas A1:A5 no sea superior a 99999; que las celdas b1:b5 no contengan más de 26 caracteres y que las celdas C1:C5 tengan un valor que debe aproximarse (con un margen de error del 1/1000) a un valor previamente establecido en la correspondiente celda contigua de la columna D.
El validador marca en rojo cada celda del rango A1:E5 que contiene un valor que no se atiene a los parámetros especificados. Si ha detectado al menos una celda con un error, al finalizar el proceso lanza un msgbox con el mensaje "la operación ha finalizado con errores". En el caso que no se haya detectado error alguno lanza un msgbox con el mensaje "operación correcta".
Espero haberme explicado con precisión.
Cuando le encontremos solución, los chicos y yo brindaremos por el verdugo del problema.
Recibe nuestro más sincero agradecimiento por tu atención e interés.
Como dije, hay muchas maneras de hacer las cosas, la siguiente macro es una de ellas y la primera aproximación, en ella están mis comentarios, tienes que copiarla a un modulo de código y ejecutarla desde la hoja donde estén los datos que quieres validar, saludos...
Option Explicit
Public Sub ValidarDatos()
Dim co1 As Integer
Dim Errores As Boolean
Dim Diferencia As Single
'Si cambian los limites, solo cambialos aqui
Const Limite As Long = 99999
Const Limite2 As Integer = 26
Const MargenError As Single = 1 / 1000
'El rango usado es el indicado, se puede mejorar mucho
'si el rango es variable en cuanto a las filas
Range("A1:D5").Interior.ColorIndex = xlNone
For co1 = 1 To 5
'Validamos que no sobrepase el limite superior, pero
'no me dices si hay un limite inferior
If Cells(co1, 1).Value > Limite Then
Cells(co1, 1).Interior.ColorIndex = 3
Errores = True
End If
'Validamos el numero de caracteres, antes le quito los
'espacios en blanco al inicio y al final, no mencionas
'si hay un limite inferior
If Len(Trim(Cells(co1, 2).Value)) > Limite2 Then
Cells(co1, 2).Interior.ColorIndex = 3
Errores = True
End If
Diferencia = Abs(Cells(co1, 3).Value - Cells(co1, 4).Value)
If Diferencia > MargenError Then
Cells(co1, 3).Interior.ColorIndex = 3
Errores = True
End If
Next co1
If Errores Then
MsgBox "La operación ha finalizado con errores"
Else
MsgBox "Operacion correcta"
End If
End Sub
Hemos hecho las primeras pruebas y... funciona!
Tal vez tengamos que ocuparnos más adelante de algunos detallitos.
Muchísimas gracias, Maestro Experto, es Vd. un monstruo. Las cinco estrellitas se te quedan cortas, Faraón.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas