VBA中for循环内的if语句不起作用

时间:2018-06-21 08:38:10

标签: vba excel-vba for-loop if-statement excel

我有这样一张床单:

G                M              N           O
Warrant/Rights                              08-06-2020
NA          
Share                           1   
Share           
Share                           1   
Share            4,5                        15-02-2026
Share                                       06-01-2026
Share            4                          15-03-2023
Share                                       30-09-2027

然后,我尝试按日期将G列与Share列进行比较。这样,如果在列O中输入的日期不足的百分比,则程序将清除类型O之后的M to O中的所有单元格。我有这样的东西:

Share

在删除条件Sub aaa() x1 = Application.WorksheetFunction.CountIfs(Range("G2:G" & rows.Count), "Share") y1 = Application.WorksheetFunction.CountIfs(Range("G2:G" & rows.Count), "Share", Range("O2:O" & rows.Count), "") If x1 > 0 Then z1 = (y1 / x1) * 100 Dim LR24 As Long, i24 As Long LR24 = Range("G" & rows.Count).End(xlUp).Row For i24 = LR24 To 1 Step -1 If (Range("G" & i24).Value = "Share" And z1 < 90) Then Range("M" & i24 & ":O" & i24).Clear Next i24 End If End Sub 之后,一切正常,但是为了保护自己不被0除,我必须将其放入。您知道为什么它不起作用吗?

1 个答案:

答案 0 :(得分:1)

您可以删除If...End If语句,而将z1 = ...行替换为:

z1 = IIf(x1 = "", 0, (y1 / x1) * 100)

它未经测试,所以我不知道它将如何影响其余的代码,但是您不会在该行上看到Div / 0错误。

它使用If函数(而不是Iif(Inline If或Instant If的缩写,取决于您询问的人)。

没有理由您也不能以相同的方式使用标准If..Then语句,该语句仅位于一行的周围,而不是阻止代码段的执行。


更多信息: