• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

VBA voor verwijderen van bepaalde rijen

Status
Niet open voor verdere reacties.

RobMan

Gebruiker
Lid geworden
3 okt 2007
Berichten
126
Vooraf: ik heb geen kennis van VBA programmeren.

Ik zoek een VBA script om een rij te verwijderen als er in de cel erboven of eronder NIET dezelfde waarde staat.
Nu vind ik op internet wel voorbeelden van scripts die dubbele rijen kunnen verwijderen (http://en.kioskea.net/faq/6372-excel-delete-rows-with-same-value). Als ik zo'n script pak lukt het mij nog wel om de instructies om te wisselen na IF en ELSE, waardoor er na een dubbele rij niet verwijderd wordt, in plaats van wel. Voor een voorbeeld waarbij ik het omgewisseld heb:
Code:
Sub removeDups()  

Dim myRow As Long  
Dim sTRef As String  


sTRef = Cells(2, 2)  

myRow = 3  
Do While (Cells(myRow, 2) <> "")  

If (sTRef <> Cells(myRow, 2)) Then  
Rows(myRow).Select  
Selection.Delete Shift:=xlUp  

Else  

sTRef = Cells(myRow, 2)  
myRow = myRow + 1  

End If  

Loop  

End Sub

Echter, zo'n script kijkt alleen naar de rij erboven, terwijl er ook met de rij eronder vergeleken moet worden (anders blijft na het uitvoeren van het script alleen de eerste dubbele waarde staan en worden alle volgende rijen verwijderd).

Is er iemand die dit script kan aanpassen, of zelf iets kan schrijven?
 
Als je rijen verwijdert uit een range dan moet je altijd van onder naar boven werken anders worden er rijen overgeslagen.

Code:
Sub verwijderen()
    lrow = Cells(Rows.Count, 2).End(xlUp).Row
    For i = lrow To 2 Step -1
        If Cells(i, 2).Value = Cells(i, 2).Offset(1).Value And Cells(i, 2).Value = Cells(i, 2).Offset(-1).Value Then
        Cells(i, 2).EntireRow.Delete
        End If
    Next
End Sub


Niels
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan