Zelfde code, eentje met foutmelding 'Delete Method of range class failed'

Status
Niet open voor verdere reacties.

LoesPinda

Gebruiker
Lid geworden
8 sep 2015
Berichten
8
Hoi!
Ik heb een stuk code gemaakt om rijen te verwijderen op basis van celinhoud
Dit is de code:

Sub ClearData()
Dim lastrow As Long
Dim x As Long

lastrow = ThisWorkbook.Sheets("Brondata").Cells(Rows.Count, 3).End(xlUp).Row

For x = lastrow To 1 Step -1
If Cells(x, 2).Value = 0 Then
Rows(x).EntireRow.Delete
End If

If Cells(x, 4).Value < 2 Then
Rows(x).EntireRow.Delete
End If

If Cells(x, 4).Value > 20 Then
Rows(x).EntireRow.Delete
End If

Next x

End Sub

Als ik de laatste if eruit haal loopt de code perfect, dan haalt ie gewoon de rijen weg die een waarde lager dan 2 hebben in kolom 4 of de rijen die een waarde van 0 hebben in kolom 2. Maar op de een of andere manier geeft de laatste if een foutmelding, terwijl de code toch echt hetzelfde is als de vorige twee. Als ik hem wil debuggen geeft hij aan dat de rows(x).entirerow.delete fout is, of dat er in ieder geval een fout in zit en hij zegt dan 'Delete method of range class failed'

Ik heb al vanalles geprobeerd zoals het kiezen van een andere manier van rijen verwijderen maar de foutmelding blijft zitten
Heeft iemand enig idee wat ik fout doe en hoe ik dit kan aanpassen?
 
Probeer het eens zo:
Code:
Sub ClearData()
    Dim lastrow As Long
    Dim x As Long

    lastrow = ThisWorkbook.Sheets("Brondata").Cells(Rows.Count, 3).End(xlUp).Row
    
    For x = lastrow To 1 Step -1
        If Cells(x, 2) = 0 Or _
           Cells(x, 4) < 2 Or _
           Cells(x, 4) > 20 Then
            Rows(x).EntireRow.Delete
        End If
    Next x

End Sub
 
Of probeer het eens zo:

Code:
Sub ClearData()
Dim lastrow As Long
Dim x As Long

lastrow = ThisWorkbook.Sheets("Brondata").Cells(Rows.Count, 3).End(xlUp).Row

For x = lastrow To 1 Step -1

If Cells(x, 2).Value = 0 Then
Rows(x).EntireRow.Delete
End If

If Cells(x, 4).Value < 2 or Cells(x, 4).value > 20 Then
Rows(x).EntireRow.Delete
End If

Next x

End Sub
 
of
Code:
sub M_snb()
  for each cl in columns(3).specialcells(2,1)
    if cl=<2 or cl>20 then cl.clearcontents
  next

  columns(3).specialcells(4).entirerow.delete
End Sub
 
Heee super, ik had die van cheetake vanochtend eens geprobeerd en die werkte dus wel! Lees hem nu pas. Bedankt, nu doet ie het :D.
 
Heb je nu ook over # 4 heengelezen ?

Volgens mij vallen alle cellen met 0 onder het criterium < 2;
 
Heb je nu ook over # 4 heengelezen ?

Volgens mij vallen alle cellen met 0 onder het criterium < 2;
Ja dat klopt inderdaad, alleen ik heb bij die van 0 de kolom 2 en bij <2 kolom 4, daarom had ik ze zo los gedaan :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan