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

rijen verwijderen vanaf bepaalde regel

Status
Niet open voor verdere reacties.

Danielle22

Gebruiker
Lid geworden
8 mei 2007
Berichten
378
Hallo allemaal,

Weet iemand een oplossing met VBA als de waarde in het blad "beheer" in cel A1 bijvorbeeld een 5 staat dat dan vanaf regel 5 in het tabblad "data" de regels verwijder worden?

Ik heb ook even een voorbeeldje toegevoegd.

Alvast heel erg bedankt voor de eventuele reacties.

Groetjes,

Danielle

Bekijk bijlage voorbeeld rij verwijderen.xlsx
 
Of je kan deze eens testen:

Code:
Sub cobbe()
   beginrij = Cells(1, 1) + 1
    With Sheets("Data")
        eindrij = .Range("A" & .Rows.Count).End(xlUp).Row
        .Rows(beginrij & ":" & eindrij).Delete
    End With
End Sub
 
Met één rij en zonder loop moet het ook lukken :)
Code:
    Rows(Worksheets("beheer").Range("A1").Value & ":" & Worksheets("data").UsedRange.Rows.Count).Delete Shift:=xlUp
 
Hallo allemaal,

Ik gebruik nu beide codes. Als ik nu 25 waardes heb en ik in sheet "beheer" in cel A1 het getal 20 staat, dan gaat het bij de eerste keer goed. Dan worden de regels 21 t/m 25 verwijderd. Maar als ik nog een keer klik, wordt regel 20 ook verwijderd, etc. Dus als ik er 5 keer op klik, wordt er iedere keer ook een regel verwijderd.

Weet iemand wat ik moet aanpassen dat het aantal regels in waarde A1 van het blad "beheer" blijft staan, ongeacht hoevaak ik de macro laat uitvoeren?

Alvast heel erg bedankt voor de reacties.

Groetjes,

Danielle
 
Deze code telt het aantal actieve regels in een selectie.
Stel dat je op regel 1 iets zet, regel 2 en 3 niets en dan regel 4 en 5 weer wel. Dan is het resultaat 3.
Dit kan ongewenste resultaten opleveren.

Tevens controleer je in de code niet of de laatste geselecteerde rij niet onder de aangegeven waarde is. In excel maakt het namelijk niet uit of je RIJ(20:25) selecteert, of RIJ(20:19). Als je deze code blijft herhalen, zal uiteindelijk het blad leeg zijn, omdat telkens de laatste regel verwijderd wordt.

Met één rij en zonder loop moet het ook lukken :)
Code:
    Rows(Worksheets("beheer").Range("A1").Value & ":" & Worksheets("data").UsedRange.Rows.Count).Delete Shift:=xlUp
 
Deze code werkt prima. Wellicht wat omslachtig opgezet, maar dan kun je stap voor stap zien wat er gebeurd.

Code:
Sub RegelsNaXWegGooien()
    Dim GebruiktGebied As String
    Dim WerkTekst As String
    Dim RegelNummer As Integer
    Dim Positie As Integer
    Dim VerwijderNaRegelX As Integer
    'Ga naar sheet Data
    Sheets("Data").Select
    ' Bepaal het gebruikte gebied in sheet "beheer"
    GebruiktGebied = ActiveSheet.UsedRange.Address
    ' Waar zit de dubbele punt in het gebied (b.v. $A$1:$H$200 zal 5 opleveren)
    Positie = WorksheetFunction.FindB(":", GebruiktGebied)
    ' t/m de dubbele punt + $ nu verwijderen. In het voorbeeld houden we nu H$200 over.
    WerkTekst = Mid$(GebruiktGebied, Positie + 2, Len(GebruiktGebied))
    ' Zoek nu de laatste $ op.
    Positie = WorksheetFunction.FindB("$", WerkTekst)
    ' En verwijder het linker deel nu. In het voorbeeld blijft nu 200 over. De laatst gebruikte rij in het blad!
    WerkTekst = Mid$(WerkTekst, Positie + 1, Len(WerkTekst))
    RegelNummer = WerkTekst
    VerwijderNaRegelX = Sheets("Beheer").Range("A1").Value
        
    ' Als de te verwijderen regel na de selectie ligt, de macro stoppen
    If VerwijderNaRegelX > RegelNummer Then End
    
    ' De selectie bepalen
    Selectie = CStr(VerwijderNaRegelX) & ":" & CStr(RegelNummer)
    ' De selectie verwijderen
    Rows(Selectie).Delete
End Sub
 
Oh oke bedankt voor je reactie.

Wat zou ik moeten aanpassen in de macro? Om ervoor te zorgen dat niet steeds de laatste regel verwijderd wordt.

Groetjes,

Danielle
 
haha tegelijk gereageerd.

Ik ga je code even testen.

Bedankt!

Groetjes,

Danielle
 
Hallo,

Nog 1 vraagje hoor ;)

Als er geen waardes staan bij "data" dan komt er een foutmelding.

Kan ik dit ook verhelpen? Wat kan ik dan het beste aanpassen in de macro:

Sub RegelsNaXWegGooien()
Dim GebruiktGebied As String
Dim WerkTekst As String
Dim RegelNummer As Integer
Dim Positie As Integer
Dim VerwijderNaRegelX As Integer
'Ga naar sheet Data
Sheets("Data").Select
' Bepaal het gebruikte gebied in sheet "beheer"
GebruiktGebied = ActiveSheet.UsedRange.Address
' Waar zit de dubbele punt in het gebied (b.v. $A$1:$H$200 zal 5 opleveren)
Positie = WorksheetFunction.FindB(":", GebruiktGebied)
' t/m de dubbele punt + $ nu verwijderen. In het voorbeeld houden we nu H$200 over.
WerkTekst = Mid$(GebruiktGebied, Positie + 2, Len(GebruiktGebied))
' Zoek nu de laatste $ op.
Positie = WorksheetFunction.FindB("$", WerkTekst)
' En verwijder het linker deel nu. In het voorbeeld blijft nu 200 over. De laatst gebruikte rij in het blad!
WerkTekst = Mid$(WerkTekst, Positie + 1, Len(WerkTekst))
RegelNummer = WerkTekst
VerwijderNaRegelX = Sheets("Beheer").Range("A1").Value

' Als de te verwijderen regel na de selectie ligt, de macro stoppen
If VerwijderNaRegelX > RegelNummer Then End

' De selectie bepalen
Selectie = CStr(VerwijderNaRegelX) & ":" & CStr(RegelNummer)
' De selectie verwijderen
Rows(Selectie).Delete
End Sub

Alvast heel erg bedankt voor de hulp.

Groetjes,

Danielle
 
Code:
  ' Bepaal het gebruikte gebied in sheet "beheer"
    GebruiktGebied = ActiveSheet.UsedRange.Address

Aanpassen naar: (2 regels toevoegen)

Code:
  ' Bepaal het gebruikte gebied in sheet "beheer"
    GebruiktGebied = ActiveSheet.UsedRange.Address
    If ActiveSheet.UsedRange.Columns.Count = 1 And ActiveSheet.UsedRange.Rows.Count = 1 Then
        GebruiktGebied = GebruiktGebied & ":" & GebruiktGebied
    End If
 
Beetje late reactie, maar heel erg bedankt. Doet het perfect.

Groetjes,

danielle
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan