2013-07-30 4 views
0

1) J'ai un problème avec ma boucle FOR. Je vais ad infinitum. Et c'est le premier problème sur lequel je demande votre aide.
2) Le deuxième problème est que je ne sais pas comment ajouter plus d'une condition dans "Si"
Mes questions sont dans le code comme commentaires.Ma boucle ne se termine pas

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 

Répondre

1

Le multiple condition est facile à mettre en œuvre:

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 

Pour la boucle infinie, je ne sais pas, il me semble bien à ... n'est pas tout simplement trop lent?
Peut-être que vous devriez désactiver la mise à jour de l'écran avant d'appeler le ClearContents mille fois par ex. :

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

Une autre façon de faire le test de valeurs multiples est d'utiliser l'instruction select comme indiqué ci-dessous:

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