循环没有做错误

我试图通过三个数据列表循环,并隐藏总值为0的行。虽然我一直得到一个“循环没有做”的错误,有人可以发现我做错了什么。

干杯。

Sub Button1_Click() Dim Brow1 As Integer Dim Brow2 As Integer Dim Brow3 As Integer Dim Trow1 As Integer Dim Trow2 As Integer Dim Trow3 As Integer Brow1 = 62 Trow1 = 3 Brow2 = 126 Trow2 = 67 Brow3 = 190 Trow3 = 131 Do While Brow1 > Trow1 If Range("P" & Brow1).Value = 0 Then Rows(Brow1).EntireRow.Hidden = True ElseIf Range("P" & Brow1).Value <> 0 Then Brow1 = Brow1 - 1 Loop Do While Brow2 > Trow2 If Range("P" & Brow2).Value = 0 Then Rows(Brow2).EntireRow.Hidden = True ElseIf Range("P" & Brow2).Value <> 0 Then Brow2 = Brow2 - 1 Loop Do While Brow3 > Trow3 If Range("P" & Brow3).Value = 0 Then Rows(Brow3).EntireRow.Hidden = True ElseIf Range("P" & Brow3).Value <> 0 Then Brow3 = Brow3 - 1 Loop End Sub 

你的If语句都没有适当的closures。 在每个“ElseIF”后添加一个“End If”,你应该得到你期望的行为:

 Do While Brow1 > Trow1 If Range("P" & Brow1).Value = 0 Then Rows(Brow1).EntireRow.Hidden = True ElseIf Range("P" & Brow1).Value <> 0 Then Brow1 = Brow1 - 1 End If Loop 

你错过了每个If语句的End If部分。

您也可以摆脱Else Iftesting,并使用Else

 Do While Brow1 > Trow1 If Range("P" & Brow1).Value = 0 Then Rows(Brow1).EntireRow.Hidden = True Else Brow1 = Brow1 - 1 End If Loop 

你有另一个问题,但。 当你第一次发现Value = 0你会以无限循环结束,因为Brow1的值永远不会被减less。 更好的版本将是For ... Next循环:

 Dim i As Integer For i = Brow1 To Trow1 Step -1 If Range("P" & i).Value = 0 Then Rows(i).EntireRow.Hidden = True End If Next i 
Interesting Posts