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

Macro verwijdert lijnen maar niet de juiste...

  • Onderwerp starter Onderwerp starter nuki
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

nuki

Gebruiker
Lid geworden
17 jun 2009
Berichten
12
Hallo,

Ik heb het volgende probleem. In een sheet heb ik verschillende data die ik de ene keer analyseer op bijvoorbeeld kolom x en de andere keer op kolom y. Ik zou een macro willen schrijven die me vraagt in welke kolom de data staan die ik wil analyseren en daarna de vraag stelt welke waarde ik zoek. De bedoeling is dat de macro daarna alle lijnen verwijdert die niet gelijk zijn aan de waarde die ik bij de tweede vraag heb ingegeven. Op dit moment heb ik de volgend macro:

Sub test()

Dim MyCol As String
Dim MyVal As Variant
Dim i As Integer

MyCol = InputBox("In welke kolom staat de waarde?", "Kolom", "A")
MyVal = InputBox("Gelieve de waarde in te voeren?", "Zoekwaarde", 0)
For i = 6 To Range(MyCol & "65536").End(xlUp).Row
If Range(MyCol & i).Value <> MyVal Then
Range(MyCol & i).EntireRow.Delete
End If
Next i

End Sub

De macro verwijdert wel lijnen, maar niet de juiste :mad:. Ik zit al een paar uren te zwoegen, maar ik zie niet wat ik fout doe. Kan iemand mij helpen?

Alvast bedankt

Nuki
 
Je moet voor de lus onderaan beginnen.

Want als je zeg maar i=20 verwijdert, wordt rij 21 opgeschoven naar rij 20. En die sla je over want na i=20 komt i=21...
 
De macro verwijdert wel lijnen, maar niet de juiste :mad:

Keurige klassieke fout...;) Het verwijderen van regels moet je van onderaf doen. Door het verwijderen van de regels zal je variabele i steeds regels gaan overslaan. Met...
Code:
For i = Range(MyCol & "65536").End(xlUp).Row to 6 step -1
...zou je meer kans op succes kunnen hebben. Test 't maar ff...

Groet, Leo

[EDIT] Altijd leuk, zo'n fotofinish... ;-))
 
Laatst bewerkt:
Als de waarden cijfers zijn kan onderstaande je vooruithelpen. Werk bij het verwijderen van rijen ook steeds achterstevoren, dit om geen lijnen over te slaan.
Code:
Sub test()
Dim MyCol As String, MyVal As Variant, i As Integer
MyCol = InputBox("In welke kolom staat de waarde?", "Kolom", "A")
MyVal = Val(InputBox("Gelieve de waarde in te voeren?", "Zoekwaarde", 0))
    For i = Range(MyCol & "65536").End(xlUp).Row To 6 Step -1
        If Range(MyCol & i).Value <> MyVal Then
            Range(MyCol & i).EntireRow.Delete
        End If
    Next i
End Sub

EDIT: Er zal wel iets van waarheid inzitten want 3x hetzelfde antwoord op 1 min:p:p
 
Laatst bewerkt:
Zonde van al dat zweet.:D
Zet je de vraag nog even op opgelost(rechts onderaan de pagina)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan