Ayuda Código: strValor

Hola Experto:
Mi problema es el siguiente: Tengo una macro asignada a un botón en una hoja de Excel. El meollo del asunto es que necesito que: si la celda CF5 es diferente a CY5 me envíe un mensaje y si es igual prosiga con la macro.
Por diferente me refiero a: si la celda CF5 tiene datos y la celda CY5 esta vacía.
Y por igualdad a: si CF5 y CY5 están vacías o con datos las dos celdas.
He intentado con este código pero no se me da pues todas las opciones (Vacías las dos, Con datos las dos, una con datos y otra vacía) me dan el mensaje te escribo tal código:
strValor1 = Trim(Range("A2").Value2 <> "")
If strValor1 <> Range("B2").Value2 <> "" Then
MsgBox ("Una de las celdas tiene datos y la otra no ingrese o borre los datos")
Range("A2").Select
Exit Sub
Exit Sub
End If
Y te preguntaras por que ese código?;  porque ya tengo con este código la macro de mi trabajo y este es el pedazo de código que ejecuta esta macro:
strValor1 = Trim(Range("E7").Value)
strValor2 = Trim(Range("M7").Value)
strValor3 = Trim(Range("AS7").Value)
strValor4 = Trim(Range("AS15").Value)
If strValor1 = "" Then
MsgBox "NO ingresó el NÚMERO DE CONTROL del servidor público, favor de ingresarlo."
Range("E7").Select
Exit Sub
End If
If strValor2 = "0" Then
MsgBox "Este NÚMERO DE CONTROL no se ha asignado algún Servidor Público, verifique el número. Si es el correcto ingrese al menú y vaya al botón ''Modificar Servidor Público''."
Range("E7").Select
Exit Sub
End If
If strValor3 = "" Then
MsgBox "NO selecciono un DIAGNÓSTICO, favor de seleccionar al menos uno."
Range("AS7").Select
Exit Sub
End If
If strValor4 = "" Then
MsgBox "NO registró al MIEMBRO DEL EQUIPO MÉDICO que atendió al paciente, favor de elegirlo"
Range("AS15").Select
Exit Sub
End If
Application.ScreenUpdating = True
Application.EnableEvents = False
Application.ScreenUpdating = False
Hoja5.Visible = xlSheetVisible
Sheets("Archivo Mensual").Select
ActiveSheet.Unprotect "AMhoja5"
Sheets("Ingresar Pacientes").Select
Range("H139:AF139").Select
Range("H139:AF139").Copy
Sheets("Archivo Mensual").Select
Range("A1505").Select
ActiveCell.End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
ActiveSheet.Protect "AMhoja5"
Hoja5.Visible = xlSheetVeryHidden
Sheets("Ingresar Pacientes").Select
Range( _
"E7,AS7,AS9,AS11,CF5,CY5,CF7,CY7,CF9,CY9,CF11,CF13,CF15,BN7,BN9,BN11,BN13,BN15,AS15" _
).Select
Selection.ClearContents
Range("E7").Select
Application.ScreenUpdating = True
Application.EnableEvents = True
PacienteRegistroCorrecto.Show
End Sub
Espero darme a entender y gracias por tu ayuda de antemano.
Atentamente. Juan Hernández México

1 Respuesta

Respuesta
1
Prueba con esto
Private Sub CommandButton1_Click()
    If (Range("CF5").Value2 <> "" And _
        Range("CY5").Value2 <> "" And _
        Range("CF5").Value2 = Range("CY5").Value2) Then 'Si las 2 son iguales y para diferenciarlas de las que están vacías las 2 celdas
            MsgBox ("Continuar Macro")
    Else
        If (Range("CF5").Value2 = "" Or _ 'Si una de las 2 está vacía o las 2
            Range("CY5").Value2 = "" Or _
            (Range("CF5").Value2 = "" And _
             Range("CY5").Value2 = "")) Then
                MsgBox ("Ha de ingresar datos en una de las celdas o en las dos")
                Exit Sub
        Else 'Aquí no sabía que poner, si hay datos pero son diferentes
            MsgBox ("Los datos no son iguales") 
            Exit Sub
        End If
    End If
End Sub
Antes que nada debo agradecer tu pronta respuesta, tu atenta y rápida atención a mi problema.
El código está muy bien, resuelve mi problema (le ajuste algunos símbolos de <> por =): ahora si las celdas están ocupadas, aunque sea diferentes los datos, ejecutaría la macro; si las celdas una con datos y otra vacía me envía el mensaje de problema, pero hay un problema más: cuando las celdas están vacías se supone que pasaría a ejecutar la macro, más no es así. No hace nada.
If (Range("CF5").Value2 = "" And _
     Range("CY5").Value2 = "" And _
     Range("CF5").Value2 = Range("CY5").Value2) Then
' Aquí debería pasar a continuar con la macro pero no hace nada
Else
     If (Range("CF5").Value2 = "" Or _
          Range("CY5").Value2 = "" Or _
         (Range("CF5").Value2 = "" And _
          Range("CY5").Value2 = "")) Then
          MsgBox ("Ingresar datos en una de las celdas, para ejecutar macro")
          Exit Sub
      Else 'No hay problema si son diferentes
               MsgBox ("Continuar macro")
               Exit Sub
      End If
End If
"Antares18"    Me podrías ayudar de nuevo a resolver este inconveniente. Gracias
Atte. Juan Hernández // México
No cambies el primer igual, ni el segundo porque con eso estoy diciendo que en las celdas hay datos y que esos datos sean iguales. Tal como lo has puesto sólo pasará si las dos celdas están vacías
If (Range("CF5").Value2 = "" And _
     Range("CY5").Value2 = "" And _
     Range("CF5").Value2 = Range("CY5").Value2) Then
' Aquí debería pasar a continuar con la macro pero no hace nada
"Antares18" Gracias, me ayudaste bastante. Que tengas un excelente día y sigas tu camino hacia los primero lugares de Todo Expertos Excel.
Atte. Juan Hernández // México

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas