Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA:当activecell.value出现除法错误时,如何弹出消息框_Excel_Vba - Fatal编程技术网

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

Excel VBA:当activecell.value出现除法错误时,如何弹出消息框,excel,vba,Excel,Vba,如何在活动单元格值为#DIV/0时设置消息框弹出窗口 我尝试了如果ActiveCell.Value=以及如果GP.Value=但两者都不起作用。请帮助我了解如何解决此问题 提前感谢当您将一个数字除以零时,Excel会显示值“#DIV/0!”。。。。但是这个值不是字符串。。。。 if语句应该在编程的主要部分,如本例所示 dim a as single, b as single, ans ans single if b = 0 then msgbox "...." else ans = a / b

如何在活动单元格值为#DIV/0时设置消息框弹出窗口

我尝试了
如果ActiveCell.Value=
以及
如果GP.Value=
但两者都不起作用。请帮助我了解如何解决此问题


提前感谢

当您将一个数字除以零时,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

将数字除以零时,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
替换:

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

假设我们从以下内容开始:

此代码:

Sub ErrorGrabber()
    MsgBox ActiveCell.Value
End Sub
将产生:

但是这个代码:

Sub ErrorGrabber()
    MsgBox ActiveCell.Text
End Sub
将产生:

更换:

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

假设我们从以下内容开始:

此代码:

Sub ErrorGrabber()
    MsgBox ActiveCell.Value
End Sub
将产生:

但是这个代码:

Sub ErrorGrabber()
    MsgBox ActiveCell.Text
End Sub
将产生:

到“陷阱”a
“#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
“陷阱”a
“#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

如果iSeries错误(ActiveCell),您可以尝试
,然后改为
。另外,为什么不先检查除数值,并在实际除以它之前引发错误?您可以尝试
如果IsError(ActiveCell),则改为
。另外,为什么不先检查除数值,并在实际除以它之前提出错误?谢谢@Gary's StudentThank你@Gary's StudentThank你@Ammar Abou Zor,这对我来说不实用,因为我的代码使用表1和表2中的一些字段设置公式,因此,除非用户在那里输入值,否则此字段将显示如下。我不希望用户试图在假设这是一个错误的情况下更新它。这条消息只是引导他,使他不会惊慌失措:)无论如何,谢谢,从现在开始“”。文本“”对我来说非常有效…谢谢@Ammar Abou Zor,这对我来说不实用,因为我的代码使用表1和表2中的一些字段设置公式。因此,除非用户在其中输入值,否则此字段将显示如下。我不希望用户试图在假设这是一个错误的情况下更新它。这条信息只是引导他,使他不会惊慌失措:)无论如何,谢谢,从现在起“”。文本“”对我来说非常有效。。。