VBA:当activecell.value出现除法错误时,如何弹出消息框

时间:2018-01-13 11:57:32

标签: excel vba

当活动单元格值为#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

我尝试了If ActiveCell.Value =以及If GP.Value =,但两者都无效,请帮助我了解如何解决此问题。

先谢谢

3 个答案:

答案 0 :(得分:1)

Excel会显示值“#DIV / 0!”当你把一个数字划分为零......但这个值不是一个字符串.... 你的if语句应该是编程的主要部分,如本例

dim a as single, b as single, ans ans single
if b = 0 then
msgbox "...."
else
ans = a / b
end if

答案 1 :(得分:1)

替换:

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

使用:

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

假设我们从:

开始

enter image description here

此代码:

Sub ErrorGrabber()
    MsgBox ActiveCell.Value
End Sub

将产生:

enter image description here

但是这段代码:

Sub ErrorGrabber()
    MsgBox ActiveCell.Text
End Sub

将产生:

enter image description here

答案 2 :(得分:1)

“陷阱”"#DIV/0!"是一个两步代码:

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

但是,我认为最好的方法是在执行除法之前检查除数的值。

注意:无需使用ActiveCell,您可以直接在完全限定的范围内运行代码:

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