我在For循環中使用If語句時遇到了一些麻煩。每個循環的Excel VBA
下面是代碼:
Private Sub Worksheet_Calculate()
Dim rng1 As range
Dim cell1 As range
Set rng1 = range("A1")
Application.EnableEvents = False
For Each cell1 In rng1
While rng1.Rows.Count > 1
If cell1.Value >= 6000 And cell1.Value < 8000 Then
range("2:5").EntireRow.Hidden = False
range("B1:B5").Formula = "=(CEILING($A$10*(1+$A$11+$A$12),5))/4"
Set rng1 = rng1.Resize(4)
ElseIf cell1.Value >= 4000 And cell1.Value < 6000 Then
range("2:3").EntireRow.Hidden = False
range("4:5").EntireRow.Hidden = True
range("B1:B4").Formula = "=(CEILING($A$10*(1+$A$11+$A$12),5))/3"
range("B5:B5").ClearContents
Set rng1 = rng1.Resize(3)
ElseIf cell1.Value >= 2000 And cell1.Value < 4000 Then
range("2:2").EntireRow.Hidden = False
range("3:5").EntireRow.Hidden = True
range("B1:B3").Formula = "=(CEILING($A$10*(1+$A$11+$A$12),5))/2"
range("B4:B5").ClearContents
Set rng1 = rng1.Resize(2)
ElseIf cell1.Value >= 0 And cell1.Value < 2000 Then
range("2:5").EntireRow.Hidden = True
range("B1:B1").Formula = "=(CEILING($A$10*(1+$A$11+$A$12),5))"
range("B2:B5").ClearContents
End If
Wend
Next
Application.EnableEvents = True
末次
基本上我希望它這樣做,但它不能正常工作: 它看起來範圍。如果該範圍的值介於4000和6000之間,則取消隱藏3行,隱藏第4行,將3個可見行設置爲與公式相同的值,並等間劃分3行之間的範圍值,清除隱藏行的內容,然後設置它正在查看的原始範圍等於可見行的範圍(這是我認爲在我的邏輯中掛起來的地方)。任何幫助將大大appriciated。
重新分配'範圍'是一個壞主意。 – Bathsheba
如果你的範圍是C1,那麼循環的要點是什麼? – 2014-01-07 14:18:11
抱歉,範圍應該以A1開頭,然後更改爲可見A行的範圍。 Bathsheba,你將如何修改代碼,以便每個循環的範圍都等於基於if語句的可見行的範圍? – Skunny11