¡Cómo configurar una ventana emergente de cuadro de mensaje cuando el valor de una celda activa es # DIV / 0!

Dim GP
GP = "=(" & "Sheet1_Revenue!" & INR1Value & "-" & "Sheet2_Cost!" & INR2Value & ")/" & "Sheet1_Revenue!" & INR1Value

Sheets("Sheet2_Cost").Cells(I + 3, J).Select
ActiveCell = GP
  Selection.NumberFormat = "0.00%"
  With Selection.Interior
                .Color = 65535
  End With

If ActiveCell.Value = "#DIV/0!" Then
    MsgBox "Not an Error: Kindly feed INR values under Sheet1_Revenue"
End If

Intenté If ActiveCell.Value = y If GP.Value = pero ambos no funcionan. Ayúdame a entender cómo resolver este problema.

Gracias por adelantado

0
user9184557 13 ene. 2018 a las 14:57

3 respuestas

La mejor respuesta

Reemplazar:

If ActiveCell.Value = "#DIV/0!" Then

Con:

If ActiveCell.Text = "#DIV/0!" Then

Digamos que comenzamos con:

enter image description here

Este código:

Sub ErrorGrabber()
    MsgBox ActiveCell.Value
End Sub

Producirá:

enter image description here

Pero este código:

Sub ErrorGrabber()
    MsgBox ActiveCell.Text
End Sub

Producirá:

enter image description here

1
Gary's Student 13 ene. 2018 a las 14:08

El Excel le muestra el valor "# DIV / 0!" cuando estás dividiendo un número en Cero ... pero este valor no es una cadena ... tu declaración if debería estar en la parte principal de la programación como este ejemplo

dim a as single, b as single, ans ans single
if b = 0 then
msgbox "...."
else
ans = a / b
end if
1
Ammar Abou Zor 13 ene. 2018 a las 12:51

Para "atrapar" un "#DIV/0!" es un código de 2 pasos:

If IsError(ActiveCell.Value) Then ' first check if cells contains an error
    If ActiveCell.Value = CVErr(xlErrDiv0) Then ' check the type of error
        MsgBox "Not an Error: Kindly feed INR values under Sheet1_Revenue"
    End If
End If

Sin embargo, creo que el mejor método es verificar el valor del valor del Divisor, antes de realizar la división.

Nota : no es necesario utilizar ActiveCell, puede ejecutar su código directamente en el rango completo:

With Sheets("Sheet2_Cost").Cells(I + 3, J)
    .Value = GP
    .NumberFormat = "0.00%"
    With .Interior
        .Color = 65535
    End With
End With
1
Shai Rado 13 ene. 2018 a las 13:09
48239635