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

Meerdere regels invoegen

Status
Niet open voor verdere reacties.

The Tulip

Gebruiker
Lid geworden
9 jan 2001
Berichten
25
Hallo,

Volgens mijn moet mijn probleem zonder veel moeite op te lossen zijn.... maar ik kom er even niet uit!

Ik heb een Excel bestand met zo'n 500 regels. Om dit te uploaden naar het ERP-systeem dat wij gebruiken (SAP) moet tussen iedere regel een witregel worden ingevoegd.

Mijn methode (zoals ik het tot nu toe deed) is door iedere regel te selecteren en dan rechtermuisknop en "invoegen" klikken. Dat houdt nu in dat ik een aantal keer 500 regels moet selecteren en dan "invoegen" moet kiezen.

Kan dit ook op een andere manier? Dat ik alle regels selecteer en dan in één keer overal een regel kan tussenplaatsen?

Zoals je zult begrijpen gaat een positief antwoord mij heel veel tijd opleveren!

Alvast vriendelijk bedankt!

Groeten,

Laurence
 
Hallo,

Ik weet niet of dit de oplossing is?
Maar kun je niet een kolom selecteren en dan invoegen doen?

Gr mth
 
Hallo,

Ik weet niet of dit de oplossing is?
Maar kun je niet een kolom selecteren en dan invoegen doen?

Gr mth

Het gaat over invoegen van rijen. En niet 1 rij, maar 1 rij per rij in het bereik.
 
Tnx!

Voor de zoveelste keer supersnel en supergoed geholpen!

TNX AGAIN!!!

Laurence
 
Graag gedaan ;)

Zet aan het begin van de code nog

Code:
Application.ScreenUpdating = False

dan de code, en dan

Code:
Application.ScreenUpdating = True

Dan gaat het nog wat sneller.

Wigi
 
Toch nog even op terugkomen :D

Van VBAExpress.com ben ik gewoonlijk meer gewoon. De code die hier getoond wordt in mijn link doet zeker wat het moet doen (zoals de vraagstelster bevestigde), maar that's it.

Zoals een aantal hier weten ben ik ook geen fan van lussen in Excel. Die zijn zeer traag (relatief gezien dan ;-)) dus die moeten vermeden worden.

In de code wordt voor 500 regels een rij ingevoegd, dat is traag. Niet alleen komt er best een ScreenUpdating bij (zie hierboven), ook is het belangrijk dat het invoegen slechts 1 maal gebeurt, met een blok van 500 rijen dan.

Dan ben ik wat gaan experimenteren, met 1000 rijen. De eerste code duurt 1,3 seconden op mijn laptop. Met een simpele ScreenUpdating erbij nog maar 0,42 seconden.

Zonder een lus kan het ook. Je zet bvb. in een extra kolom een uniek oplopend (of aflopend getal). Bijvoorbeeld het rijnummer kan je zetten met de RIJ() functie. Dan krijg je 1, 2, 3, ..., 1000 onder elkaar. Dan zet je in een bereik van 1000 rijen daaronder, opnieuw de RIJ() functie, maar je trekt er 1000 vanaf, en telt er 0,5 bij op. Voor dat tweede bereik krijg je dan: 1,5; 2,5; 3,5; ...; 2000,5. Dan het hele bereik oplopend sorteren en je bent klaar! Sorteren kost veel minder tijd dan rijen invoegen. Resultaat: alles in 0,05 seconden voor 1000 rijen.

De 1000 rijen onder de eerste 1000 rijen moeten dus wel leeg zijn. Als dat niet zo is zal je het een beetje moeten aanpassen. Groot voordeel van deze code hier is dat het flexibeler is. Zet een andere formule ipv de RIJ functie en je kan andere dingen erbij betrekken.

In code:

Code:
Sub Insert_Blank_RowsWIGI()

'0,05 sec

    Dim rData As Range
    Dim lNumbOfRows As Long
    Dim rBeginCell As Range
    
    Const sExtraCol As String = "G"
    
    Set rBeginCell = Selection.Cells(1)
    Set rData = Range(rBeginCell, rBeginCell.End(xlDown))
    lNumbOfRows = rData.Rows.Count
    
    Application.ScreenUpdating = False
    
    With Range(sExtraCol & rBeginCell.Row)
    
        'put row number
        .Resize(lNumbOfRows).Formula = "=ROW()"
        
        'below these, put row number again, subtract the first row number of part 2 (-1), but add a small number < 1
        .Offset(lNumbOfRows).Resize(lNumbOfRows).Formula = "=ROW()-" & (lNumbOfRows + 1) & "+0.5"
        
        'sort
        .Resize(2 * lNumbOfRows).EntireRow.Sort _
            Key1:=Range(sExtraCol & rBeginCell.Row), Order1:=xlAscending, _
            Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
            Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
            
        'clear the extra column
        .Resize(2 * lNumbOfRows).ClearContents
        
    End With
    
    Application.ScreenUpdating = True

End Sub

Als ik tijd heb zal ik ook in een pagina gieten op mijn website.

Wigi
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan