내부에 If 문이있는 for-each 루프에 약간 문제가 있습니다.각 루프에 대한 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이면 루핑 포인트는 무엇입니까? –
죄송합니다 범위는 A1으로 시작한 다음 표시된 A 행의 범위로 변경되었습니다. Bathsheba, 각 루프의 범위가 항상 if 문을 기반으로하는 보이는 행의 범위와 같아 지도록 코드를 수정하는 방법은 무엇입니까? – Skunny11