2013-07-30 3 views
0

1) FOR 루프가있는 문제가 있습니다. 나는 ad infinitum로 간다. 그리고 이것이 제가 당신의 도움을 요청하는 첫 번째 문제입니다.
2) 두 번째 문제는 "If"에 하나 이상의 조건을 추가하는 방법을 모른다는 것입니다.
내 질문에 대한 답은 코드에 나와 있습니다. 단순히 ..., 그것은 나에게 좋은 것 같다루프가 끝나지 않습니다

For x = startrow To endrow 
    If Cells(x, "A").Value <> "DU" Or Cells(x, "A").Value <> "DR" Or Cells(x, "A").Value <> "EK" Then 
     Cells(x, "A").EntireRow.ClearContents 
    End If 
Next x 

을 내가 모르는 무한 루프를 들어 너무 느린되지 않습니다

Sub Repurchase_upload() 

Dim Worksheet As Worksheets 
startrow = Worksheets("GUTS").Cells(10, 1) 'Here I denote 1 
endrow = Worksheets("GUTS").Cells(11, 1) 'Here I denote 1000 
For x = startrow To endrow 

      If Cells(x, "A").Value <> "DU" Then 'I would like it to look like that: 'If Cells(x, "A").Value <> "DU" or "DR" or "EK" Then' but I don't know how to do this 'or' 
      Cells(x, "A").EntireRow.ClearContents 
      End If 'And here it won't end... 
    Next 
End Sub 

답변

1

다중 조건은 쉽게 구현할 수있다?
ClearContents 번을 1000 번 호출하기 전에 화면 업데이트를 사용 중지해야합니다. : 아래 그림과 같이

Sub Repurchase_upload() 

    Application.ScreenUpdating = False 'Disable screen updating 

    Dim Worksheet As Worksheets 
    startrow = Worksheets("GUTS").Cells(10, 1) 'Here I denote 1 
    endrow = Worksheets("GUTS").Cells(11, 1) 'Here I denote 1000 
    For x = startrow To endrow 
     If Cells(x, "A").Value <> "DU" Or Cells(x, "A").Value <> "DR" Or Cells(x, "A").Value <> "EK" Then 
      Cells(x, "A").EntireRow.ClearContents 
     End If 
    Next x 

    Application.ScreenUpdating = True 'Re-enable screen updating 

End Sub 
2

여러 값 테스트를 수행하는 또 다른 방법은 SELECT 문을 사용하는 것입니다

Sub Repurchase_upload() 

    Dim Worksheet As Worksheets 
    startrow = Worksheets("GUTS").Cells(10, 1) 'Here I denote 1 
    endrow = Worksheets("GUTS").Cells(11, 1) 'Here I denote 1000 
    For x = startrow To endrow 
     Select Case Cells(x, "A").Value 
     Case "DU", "DR", "EK" 
      'Do nothing 
     Case Else 
      Cells(x, "A").EntireRow.ClearContents 
     End Select 
    Next 
End Sub 
관련 문제