Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Anders (software)

Excel: lege rijen invoegen

EIJSDEN
6 antwoorden
  • Hallo,
    In een vrij lange kolom met waarden wil ik ervoor zorgen dat tussen elke cel (waarin een getal/tekst staat) vier lege regels worden tussengevoegd. Handmatig steeds vier rijen invoegen wordt onmogelijk dus hoop ik dat iemand mij kan helpen met een manier om dit voor elkaar te krijgen…
    Bedankt!
    mvgr
  • Met de volgende macro voeg je 4 lege rijen toe tussen de bestaande cellen. Voorwaarde is wel dat er geen lege cellen staan in de tabel. De macro stopt namelijk bij de 1e lege cel. Maak de 1e cel van je tabel actief en run de macro.

    [code:1:e3d10ecb34]Sub Test3()
    Dim i As Integer
    For i = 1 To Selection.CurrentRegion.Rows.Count - 1
    ActiveCell.Offset(1, 0).Range("A1:A4").Select
    Selection.EntireRow.Insert
    ActiveCell.Offset(4, 0).Select
    Next i
    End Sub[/code:1:e3d10ecb34]

    Eerst een kopie maken van je werkblad!
  • Iemand was me al voor zag ik toen ik terugkeek, ziet er ook goed uit. Toch even mijn bijdrage.

    Open het bestand. In de onderste cel (in kolom A)moet de waarde "einde" (zonder quootjes) worden toegevoegd. Anders blijft de macro doorlopen tot ie een ons weegt. Dus of een cel wel of niet gevuld is maakt bij deze macro niets uit.

    Klik in de menubalk op Extra, Macro, Visual Basic Editor en plak onderstaande macro in. Sluit de VB editor.
    Je komt nu weer terug in je bestand.
    Controleer dat je beveiliging niet op Hoog staat. (Extra, Macro, Beveiliging, Laag).
    Klik in de menubalk op Extra, Macro, Macro's en klik op LegeRijen. Nu moet alles automatisch verlopen.



    Sub LegeRijen()
    '
    ' Macro3 Macro
    ' Macro recorded 2-1-2006 by Jan
    '
    'deze macro gaat er vanuit dat je maximaal 30.000 waarden hebt die in kolom A
    'staan. In de onderste kolom moet de tekst einde staan

    For i = 1 To 150000 Step 5 'Als je meer dan 30.000 hebt moet je 1500000 vergroten
    selectie = "A" + Trim(Str(i))
    Range(selectie).Select
    If Trim(Selection) = "einde" Then
    Exit For
    End If
    selectie = "A" + Trim(Str(i + 1)) + ":A" + Trim(Str(i + 4))
    Range(selectie).Select
    Selection.EntireRow.Insert
    Next
    End Sub
  • Jan, domme vraag van mijn kant:
    Hoeveel rijen heeft Excel?
    Los daarvan moet je variabelen declareren.
    Als je "Option Explicit" bovenin de module zet wordt je hiertoe gedwongen, is verstandiger.
  • [quote:5634d4c6ab]Jan, domme vraag van mijn kant:
    Hoeveel rijen heeft Excel? [/quote:5634d4c6ab]Inderdaad snel door de bocht neergezet. Excel heeft een limiet: 65536 kolommen. Dus het aantal waarden dat de macro in dit geval kan verwerken is maximaal 13107. Dus die 30000 is inderdaad onzin. [quote:5634d4c6ab]Los daarvan moet je variabelen declareren.
    Als je "Option Explicit" bovenin de module zet wordt je hiertoe gedwongen, is verstandiger.[/quote:5634d4c6ab]
    Heb je formeel ook gelijk in, maar nogmaals het is kort door de bocht en omdat je maar met één routine werkt, werkt deze oplossing voor zijn probleem ook. Hierbij de aangepaste routine.[quote:5634d4c6ab]Sub LegeRijen()
    '
    ' Macro3 Macro
    ' Macro recorded 2-1-2006 by Jan
    '
    'deze macro kan maximaal 13000 waarden die in kolom A staan verwerken (beperking van Excel)
    'Heb je er meer dan moet je de restanten naar een volgend werkblad verplaatsen, en de macro opnieuw voor elk werkblad opnieuw starten.
    'In de onderste kolom (A-cel) van elk werkblad moet steeds de tekst "einde" (zonder quootjes) staan.

    For i = 1 To 13000 Step 5
    selectie = "A" + Trim(Str(i))
    Range(selectie).Select
    If Trim(Selection) = "einde" Then
    Exit For
    End If
    selectie = "A" + Trim(Str(i + 1)) + ":A" + Trim(Str(i + 4))
    Range(selectie).Select
    Selection.EntireRow.Insert
    Next
    End Sub[/quote:5634d4c6ab]
    Bedankt voor je kritische opmerkingen.

    Hoi, hoi.
  • [quote:3c0bcfb4fb="EIJSDEN"]Los daarvan moet je variabelen declareren.
    Als je "Option Explicit" bovenin de module zet wordt je hiertoe gedwongen, is verstandiger.[/quote:3c0bcfb4fb]
    Van wie moet dat? Voor eenvoudige procedures doe ik dat nooit, dan maar wat meer geheugen in gebruik. Oftewel ik dimensioneer zelden, aangezien office-vba-procedures altijd eenvoudig zijn. En daar zeurt mijn interpreter nooit over ;-)

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.