Hacer que salga un msgbox al introducir una cantidad en una celda

Tengo una celda que es la D9 en la cual pongo unos cruzamiento de una dirección. El cual necesito saber si se podria

Que al poner los cruzamientos 103 x 105 (ESTE NO ME PERMITA CONTINUAR si en esa celda tengo un numero impar menor que 115) osea ese que puse no va

1 Respuesta

Respuesta
2

En la celda D9 escribes esto:

103 x 105

Y quieres que se revise si el 103 es impar y menor a 115 y que también se revise si el 105 es impar y menor a 115; y si alguno de los 2, el 103 ó el 105, cumple con la condición, ¿qué no te permita el dato en la celda?

¿Siempre escribes 2 números separados por la x?

si asi es

En una sola celda pondría 117 x 115 el cual si me permitiría porque es igual que 115.

Pero cuando es 115 x 113 este que no me pemita ya que el 113 es menor y además impar...

Es que estoy haciendo un archivo que me detecte calles de mi ciudad el cual tenemos una cierta área permitida y creo que con eso podría ayudar a no pasarme de mi limite en este caso mi limite es 115 impar y 60 par.

No iríamos a calles impar que sean menor que 115 y tampoco a calles par mayor que 60.. y la "X" es mi separador porque así se leen las calles por aquí... ¿si no se pudiera me podrías dar alguna sugerencia?

Pon esta macro en los eventos de tu hoja

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Not Intersect(Target, Range("D9")) Is Nothing Then
        If Target.Count > 1 Then Exit Sub
        calle = UCase(Target)
        If InStr(1, calle, "X") = 0 Then
            MsgBox "No es correcta la nomenclatura de la calle, falta la 'X'", vbCritical, "ERROR DE CALLE"
            Application.EnableEvents = False
            Target.Value = ""
            Application.EnableEvents = True
            Exit Sub
        End If
        calles = Split(calle, "X")
        n1 = Trim(calles(0))
        If Not IsNumeric(n1) Then
            MsgBox "La PRIMERA calle no es un número", vbCritical, "ERROR DE CALLE"
            Application.EnableEvents = False
            Target.Value = ""
            Application.EnableEvents = True
            Exit Sub
        End If
        n2 = Trim(calles(1))
        If Not IsNumeric(n2) Then
            MsgBox "La SEGUNDA calle no es un número", vbCritical, "ERROR DE CALLE"
            Application.EnableEvents = False
            Target.Value = ""
            Application.EnableEvents = True
            Exit Sub
        End If
        n1 = Val(n1)
        n2 = Val(n2)
        If Application.IsEven(n1) Then
            If n1 > 60 Then
                MsgBox "La PRIMERA calle es mayor a 60", vbCritical, "ERROR DE CALLE"
                Application.EnableEvents = False
                Target.Value = ""
                Application.EnableEvents = True
                Exit Sub
            End If
        Else
            If n1 > 115 Then
                MsgBox "La PRIMERA calle es mayor a 115", vbCritical, "ERROR DE CALLE"
                Application.EnableEvents = False
                Target.Value = ""
                Application.EnableEvents = True
                Exit Sub
            End If
        End If
        If Application.IsEven(n2) Then
            If n2 > 60 Then
                MsgBox "La SEGUNDA calle es mayor a 60", vbCritical, "ERROR DE CALLE"
                Application.EnableEvents = False
                Target.Value = ""
                Application.EnableEvents = True
                Exit Sub
            End If
        Else
            If n2 > 115 Then
                MsgBox "La SEGUNDA calle es mayor a 115", vbCritical, "ERROR DE CALLE"
                Application.EnableEvents = False
                Target.Value = ""
                Application.EnableEvents = True
                Exit Sub
            End If
        End If
    End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas