2016-07-06 343 views
1

我有以下代码如何解决vba中的运行时错误6?

TextBox50.Value = Round((CDbl(TextBox3.Value)/(CDbl(Worksheets("calculation").Range("O4").Value)) - 1) * 100, 1) & "%" 

TextBox3 = Value存在于Worksheets("calculation").Range("O4")的值。

问题是如果Range(O4)的值为零,那么它实质上意味着0/0,这就是为什么我得到运行时6,溢出错误。

有反正我可以用0替换0/0。

任何帮助,非常感谢。谢谢

回答

3

您可以使用IIF():

TextBox50.Value = Round((CDbl(TextBox3.Value)/IIF(CDbl(Worksheets("calculation").Range("O4")=0,1,CDbl(Worksheets("calculation").Range("O4"))) 

将返回在TextBox3值如果另一个是0.

+0

哇...像一个魅力工作......感谢吨 –

+0

有反正我可以显示输出为“NA”或“ - ”或“NULL” –

3

像这样的东西应该在这里你零问题有一个鸿沟情况下工作:

If CDbl(Worksheets("calculation").Range("O4").Value) = 0 Then 
    TextBox50.Value = (0 - 1) * 100, 1) & "%" 
Else 
    TextBox50.Value = Round((CDbl(TextBox3.Value)/(CDbl(Worksheets("calculation").Range("O4").Value)) - 1) * 100, 1) & "%" 
End If 
+0

如果这适用于您,请接受一个绿色复选标记。 – Chrismas007

+0

非常感谢 –