• 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.

Verwijderen van regels met bepaalde waarde + loop?

Status
Niet open voor verdere reacties.

Maarten192

Gebruiker
Lid geworden
4 okt 2011
Berichten
9
Hallo Allemaal,

Ik ben een macro aan het 'schrijven' (voornamelijk gewoon opnemen en dan tweaken) om er voor te zorgen dat ik -uit een excel bestand van ong. 2500 regels- de informatie krijg die ik wel hebben. Hiervoor heb ik zelf wat geknutseld (en vooral veel gezocht op dit forum) en heb volgend stukje code gevonden:

Code:
Cells.Find(What:="1", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
 xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) _
 .EntireRow.Delete

Hij zoekt nu dus waarde 1 en verwijderd de hele regel, dat is verder prima. Alleen loop ik nu tegen de 2 volgende punten op:

1. De macro verwijderd maar 1 regel per keer dat ik de macro draai.
2. De macro zoekt alleen in de cel die ik aanklik ("After:=ActiveCell,) (Terwijl de waarde die de macro zoekt in kolom I staat)

Iemand die mij hiermee kan helpen? (Of de juiste richting in kan duwen?)

Alvast bedankt,
Maarten
 
In plaats van regel voor regel zou ik gebruik maken van Autofilter.
Dat werkt veel sneller.

Code:
Range("A1:S1").AutoFilter 9, 1
Bovenstaande code filtert het bereik vanaf kolom A t/m kolom S op de waarde 1 in de 9e kolom (I-kolom).
Wil je de gevonden gegevens verwijderen dan voeg je onderstaande code aan toe.

Code:
Range("A2:S2500").EntireRow.SpecialCells(xlCellTypeVisible).Delete

Vervolgens toon je de overgebleven gegevens.
Code:
Range("A1:S1").AutoFilter

Oftewel in z'n geheel:

Code:
Range("A1:S1").AutoFilter 9, 1
Range("A2:S2500").EntireRow.SpecialCells(xlCellTypeVisible).Delete
Range("A1:S1").AutoFilter

Met vriendelijke groet,


Roncancio
 
Roncancio,

Bedankt voor je code. Snap wat je bedoelt en klinkt ook best logisch. Echter stuit ik op de volgende fout melding "Methode Delete van klasse Range is mislukt". Als ik dan bij fout opsporing kijk dan geef hij deze regels als foutief aan: Range("A2:S25000").EntireRow.SpecialCells(xlCellTypeVisible).Delete

Ik heb geprobeerd om de range veranderd,
Ik heb geprobeerd de manier van verwijderen te veranderen (Range("A2:S25000").SpecialCells(xlCellTypeVisible).EntireRow.Delete).

Alleen blijft de foutmelding komen, heb jij een idee hoe dat kan?

Bedankt alvast,
Maarten
 
Heb je een voorbeeldbestand met fictieve gegevens?

Met vriendelijke groet,


Roncaico
 
Hoi Roncancio,

Sorry voor de wat latere reactie, moest er even voor zorgen dat er geen bruikbare informatie uit het bestand kan worden gehaald.

Het gaat in het bestand om kolom I. De waarden die ik zoek (en waarvan de hele regel verwijderd moeten worden is:

- Dit BSN is niet bekend bij UWV - er zijn geen inkomstenverhoudingen (00060)
- Er zijn geen lopende inkomstenverhoudingen geregistreerd (00091)

Alvast bedankt,
Maarten

Bekijk bijlage Fictief.zip
 
Code:
Range("A1:S1").AutoFilter 9, Criteria1:="=Dit BSN is niet bekend bij UWV - er zijn geen inkomstenverhoudingen (00060)" _
        , Operator:=xlOr, Criteria2:="=Er zijn geen lopende inkomstenverhoudingen geregistreerd (00091)"
Range("A2:S2500").EntireRow.SpecialCells(xlCellTypeVisible).Delete
Range("A1:S1").AutoFilter

Met vriendelijke groet,


Roncancio
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan