Validar dos Celdas

Hola a todos
Necesito ayuda con respecto a una macro que estoy creando pero necesito validar una celda para que de acuerdo a esa validación otra celda pueda contener otra información de lo contraria que me muestre un mensaje me explico.
Tengo el celda A1: dos opciones "A" y "D", si la celda A1 es igual a "A" entonces la celda B1 debe comenzar con texto, letras o que no sea doble slas "//"; si la celda A1 es igual a "D" entonces la celda B1 debe comenzar con doble slas "//"
Saludos y gracias.

1 respuesta

Respuesta
1
Te dejo una rutina para que coloques en el Editor, seleccionando con doble clic el objeto HOJA donde harás este control.
Solo evalúa la celda B1 y lo que se encuentra a izquierda, pero podes extender al resto de la col B.
Private Sub Worksheet_Change(ByVal Target As Range)
'evaluamos si se trata de B1
If Target.Address(False, False) = "B1" Then
'controlamos si es D y <> //
If Target.Offset(0, -1) = "D" And Target.Value <> "//" Then
MsgBox "Debe comenzar con //"
Target.Select
Exit Sub
End If
'controlamos si es A y letras
If Target.Offset(0, -1) = "A" And (IsNumeric(Target.Value) Or Left(Target.Value, 2) = "//") Then
MsgBox "Debe comenzar con letra"
Target.Select
Exit Sub
End If
End If
End Sub
Pruébala y si funciona tal como esperás, no olvides regresar aquí y finalizar la consulta.
Hola, Elsa
Probé pero cuando se utiliza la opción "D" solo puedo colocar el doble eslas y se requiere que el campo comience con el doble eslas pero seguidamente se le deben agregar otros caracteres como se ve en el ejemplo: //FW021000031
y en el caso de la opción "A" esta funcionando bien
adicionalmente me gustaría que hasta que no sea colocado el valor inicial correctamente no pueda avanzar.
Gracias por tu tiempo y dedicación
Saludos
Feliciano
Reemplazá esta línea:
If Target.Offset(0, -1) = "D" And Target.Value <> "//" Then
por esta otra:
If Target.Offset(0, -1) = "D" And left(Target.Value,2)  <> "//" Then
La rutina te envia un mensaje y te posiciona nuevamente en la celda...
Si necesitas que si o si ingrese algún valor, agregá entre las primeras líneas que ya tenés las marcadas en negrita:
'evaluamos si se trata de B1
If Target.Address(False, False) = "B1" Then
if target.value = "" then
target.select
exit sub
end if

'controlamos si es D......
Saludos
Elsa
http://es.geocities.com/lacibelesdepunilla/manuales
<input style="padding: 0pt; font-size: 14px; height: 18px;" />[url=http://www.amazon.com/gp/associates/link-types/searchbox.html?tag=qtl0e-20&creative=374001&campaign=211041&adid=0NM007JMM5JYDBDT13Y6&mode=blended&keyword=http%3A%2F%2Fes.geocities.com%2Flacibelesdepunilla%2Fmanuales%0D%0A%0D%0A][/url]http://www.babylon.com/favicon.ico
<input style="padding: 0pt; font-size: 14px; height: 18px;" />[url=http://www.amazon.com/gp/associates/link-types/searchbox.html?tag=qtl0e-20&creative=374001&campaign=211041&adid=0NM007JMM5JYDBDT13Y6&mode=blended&keyword=http%3A%2F%2Fes.geocities.com%2Flacibelesdepunilla%2Fmanuales%0D%0A%0D%0A][/url]http://www.babylon.com/favicon.ico
<input style="padding: 0pt; font-size: 14px; height: 18px;" />
Hola Elsa
Continua el detalle con la opción "D" solo me permite colocar el doble slas y cuando le agrego el siguiente carácter me muestra el mensaje
Gracias por tu ayuda
FG
Si utilizaste el evento que te envié (Change) no te puede mostrar el mensaje cuando agregas otro carácter, es decir que no te puede mostrar el mensaje mientras estás escribiendo... recién cuando le das enter.
A mi me da buenos resultados, ni hace falta agregar las líneas en negrita. Te la dejo nuevamente completa.
Private Sub Worksheet_Change(ByVal Target As Range)
'evaluamos si se trata de B1
If Target.Address(False, False) = "B1" Then
'controlamos si es D y <> //
If Target.Offset(0, -1) = "D" And Left(Target.Value, 2) <> "//" Then
MsgBox "Debe comenzar con //"
Target.Select
Exit Sub
End If
'controlamos si es A y letras
If Target.Offset(0, -1) = "A" And (IsNumeric(Target.Value) Or Left(Target.Value, 2) = "//") Then
MsgBox "Debe comenzar con letra"
Target.Select
Exit Sub
End If
End If
End Sub
Atención que esta rutina se ejecuta con un ingreso manual de datos en B1... no como resultado de fórmula ... si la dificultad sigue solicítame el ejemplo al correo que encontrarás en mi sitio, indicando tu ALIAS Y EL TEMA DE LA CONSULTA.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas