Excel 被零除时的VBA脚本

Excel 被零除时的VBA脚本,excel,vba,range,Excel,Vba,Range,我试图用VBA做一个公式,但由于分母为零,我遇到了错误。如果分母中有一个零,我希望活动单元格设置为零。我所做的一切都是错误的,我不是一个程序员。我不知道我在做什么。任何帮助都将不胜感激。这是我想要的 Range("H" & Row).Activate If Range("F" & Row) = 0 Then ActiveCell.Formula = 0 ActiveCell.Formula = Range("G" & Row) / Range("F" & Row)

我试图用VBA做一个公式,但由于分母为零,我遇到了错误。如果分母中有一个零,我希望活动单元格设置为零。我所做的一切都是错误的,我不是一个程序员。我不知道我在做什么。任何帮助都将不胜感激。这是我想要的

Range("H" & Row).Activate
If Range("F" & Row) = 0 Then ActiveCell.Formula = 0
ActiveCell.Formula = Range("G" & Row) / Range("F" & Row)
试着用另一个

差不多

Range("H" & Row).Activate
If Range("F" & Row) = 0 Then
    ActiveCell.Formula = 0
Else 
    ActiveCell.Formula = Range("G" & Row) / Range("F" & Row)
End If
试着用另一个

差不多

Range("H" & Row).Activate
If Range("F" & Row) = 0 Then
    ActiveCell.Formula = 0
Else 
    ActiveCell.Formula = Range("G" & Row) / Range("F" & Row)
End If

您可以将语句构建到公式中:

For Row = 1 To 3
    Cells(Row, "H").Formula = "=IF(F" & Row & "=0,0,G" & Row & "/F" & Row & ")"
Next Row
而不是使用循环

With Range("H2:H" & Cells(Rows.Count, "G").End(xlUp).Row)
    .Formula = "=IF(F" & .Row & "=0,0,G" & .Row & "/F" & .Row & ")"
    .Value = .Value
End With

您可以将语句构建到公式中:

For Row = 1 To 3
    Cells(Row, "H").Formula = "=IF(F" & Row & "=0,0,G" & Row & "/F" & Row & ")"
Next Row
而不是使用循环

With Range("H2:H" & Cells(Rows.Count, "G").End(xlUp).Row)
    .Formula = "=IF(F" & .Row & "=0,0,G" & .Row & "/F" & .Row & ")"
    .Value = .Value
End With

我不推荐Cor_Blimey或tigeravatar推荐-这两种方法都会降低代码的可读性。Cor_Blimey建议使用行延续字符“ux”和语句结束字符“:“不要增加代码的简洁性,逻辑上与上述代码相同。Tigeravatar建议细胞自己处理错误案例,这几乎是正确的,但他的代码建议使所有内容都更难阅读

我建议的更改是完全删除VBA,并在进行计算的H列单元格中使用以下公式:

=IfError(G1/F1,0)

这将起作用,因为您在计算中没有使用工作表上已有的值以外的任何值。

我不建议使用Cor_Blimey或tigeravatar建议-这两种方法都会降低代码的可读性。Cor_Blimey建议使用行延续字符“ux”和语句结束字符“:“不要增加代码的简洁性,逻辑上与上述代码相同。Tigeravatar建议细胞自己处理错误案例,这几乎是正确的,但他的代码建议使所有内容都更难阅读

我建议的更改是完全删除VBA,并在进行计算的H列单元格中使用以下公式:

=IfError(G1/F1,0)

这会起作用,因为您在计算中没有使用工作表上已有的值以外的任何值。

我不太擅长编码。在你提出的第一个建议中,我应该在什么时候把我的公式放进去?@JackPrible tigeravatar的答案是为什么不使用一个普通的Excel公式(如果需要,由VBA生成)。我不太擅长编码。在你提出的第一个建议中,我应该在什么时候把我的公式放进去?@JackPrible tigeravatar的答案是为什么不使用一个普通的Excel公式(如有必要,由VBA生成)。@JackPrible在“Then”和“Else”之后添加一个新行,在最后一行之后添加“End if”(或者不是这些更改,而是添加“\uu”)在这一行的末尾加上一个冒号“:“在其他后面)谢谢你们的帮助。我知道我错在哪里了。我从一个来源获取并填写一个新的电子表格。我使用的是Row而不是InsertPos。@JackPrible在“Then”和“Else”之后添加新行,在最后一行之后添加“End If”(或者不是这些更改,而是在带有Then和冒号的行末尾添加“u”):“Else之后)感谢你们的帮助。我知道我错在哪里了。我从一个来源获取并填写一个新的电子表格。我使用的是Row而不是InsertPos。