No permitir acciones si celdas en distintas hojas están en negativos

Tengo esta fórmula en hoja 1 en celdas distintas y rangos distintos

=CONTAR.SI(O7:O805,"<0") -------(este esta ubicado en la celda O1)

=CONTAR.SI(CC7:CC805,"<0") ---------(este esta ubicado en la celda CC1)

Osea son mas asi pero siempre en la hoja1 y en diferentes celdas

Entonces en otra hoja llamada IMPRESION

Tengo este codigo:

Sub IMPRESION4()'' Macro4 Macro'' Acceso directo: CTRL+h  Application.ScreenUpdating = False    Dim respuesta As Variant        respuesta = MsgBox("¿Ocultaste Columnas de DIFERENCIAS?", vbYesNo + vbExclamation, "VAS A IMPRIMIR")        If respuesta = vbYes Then        Cells.Select    With Selection.Font        .ColorIndex = xlAutomatic        .TintAndShade = 0    End With    Range("AK6:AU43").Select    ActiveSheet.PageSetup.PrintArea = "$AK$6:$AU$43"    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _        IgnorePrintAreas:=False    Cells.Select    With Selection.Font        .ThemeColor = xlThemeColorDark1        .TintAndShade = 0    End With        Application.ScreenUpdating = False         MsgBox "La impresion esta en proceso.", , "ATENCION"            End If    If respuesta = vbNo Then        End IfEnd Sub

lo que necesito es que este codigo se ejecute siempre y cuando no haya negativos en las celdas antes mencionadas... Quiere decir

Que si la la celda que contiene la fórmula detecta negativos y quisiera ejecutar ese código este me arroje el mensaje de error y me dida en donde estuvo mi error..

1 Respuesta

Respuesta
1

Las instrucciones que te agregué evalúan esas celdas y si su resultado es > 0 significa que hay valores negativos en el rango.

Te queda completar la matriz con las celdas donde tengas todas tus fórmulas CONTAR. SI

El mensaje te indicará la lista de celdas con resultado > 0.

Sub IMPRESION4()
'agregados de Elsamatilde
'' Macro4 Macro
'' Acceso directo: CTRL+h
Application.ScreenUpdating = False
Dim respuesta As Variant
Cadena = Array("O1", "CC1", "E1")
For Each cd In Cadena
If Range(cd).Value > 0 Then cadenaNegativa = cadenaNegativa & cd & ", "
Next
If cadenaNegativa <> "" Then
    MsgBox "Hay valores negativos en las siguientes celdas: " & cadenaNegativa & Chr(10) & _
    "El proceso de impresión se cancela.", , "ERROR"
    Exit Sub
End If

A continuación de estas líneas siguen las tuyas:

respuesta = MsgBox("¿Ocultaste Columnas de DIFERENCIAS?"..............

Nota: al final hay 2 líneas que no parecen ser necesarias.

If respuesta = vbNo Then
End If

Agregue el código y me sale que estoy duplicando

Que seria esto:

Dim respuesta As Variant

entonces lo quite y este me funciona igual.. (se ejecuta aunque haya negativos)

¿Cómo identifica el código que las celdas que debe agarrar es de la hoja1 y tiene que checarlo la hoja "impresion"?

El código lo tengo en la hoja impresión y debe revisar las celdas de la hoja 1 si hay negativos para poder imprimir o no...

Saludos

Si Hoja1 no es la activa debes agregarla.

Así quedaría toda la primera parte, no debes declarar nuevamente la variable 'respuesta'. Reemplaza la primera parte hasta la línea que dice:

respuesta = Msgbox....    

Sub IMPRESION4()
'agregados de Elsamatilde
'' Macro4 Macro
'' Acceso directo: CTRL+h
Application.ScreenUpdating = False
Dim respuesta As Variant
Set h1 = Sheets("Hoja1")
Cadena = Array("O1", "CC1", "E1")
For Each cd In Cadena
If h1.Range(cd).Value > 0 Then cadenaNegativa = cadenaNegativa & cd & ", "
Next
If cadenaNegativa <> "" Then
    MsgBox "Hay valores negativos en las siguientes celdas: " & cadenaNegativa & Chr(10) & _
    "El proceso de impresión se cancela.", , "ERROR"
    Exit Sub
End If

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas