2015-06-25 44 views
0

我想通過三個數據列表循環,並隱藏總值爲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 

回答

3

您的If語句沒有適當關閉。添加「結束如果」後每個「ELSEIF」,你應該把你的預期行爲:

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 
0

你缺少每If聲明End If一部分。

您也可以擺脫Else If測試,只需使用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的值永遠不會減少。更好的版本將是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