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

Lege regels worden niet mee-gekopieerd (macro): waarom niet?

Status
Niet open voor verdere reacties.

gvanwijk

Gebruiker
Lid geworden
3 mei 2018
Berichten
182
Ik wil regels met deze macro regels kopieren van het ene blad ("Stap 4") naar de andere ("Transacties").

Maar: de code kopieert lege regels NIET mee (en dat moet wel).

Waar zit de fout/wat moet ik aanpassen? Voorbeeldbestand in bijlage.

Code:
  With Sheets("Stap 4").Cells(17, 2).CurrentRegion.Resize(, 7)
    Sheets("Transacties").Cells(Rows.Count, 3).End(xlUp).Offset(1).Resize(.Rows.Count, 7) = .Value
        MsgBox "Alle mutaties zijn gekopieerd naar het tabblad Transacties." & vbLf & "Ga naar tabblad Transacties en controleer zorgvuldig op juiste invoer.", , ""
        Sheets("Transacties").Select
        Dim ws As Worksheet
    Set ws = ActiveSheet
    Range("C" & Cells.Rows.Count).End(xlUp).Select
 

Bijlagen

ik neem aan dat jij deze formule gemaakt hebt.
in de tweede regel gebruik je ".End(xlUp)" gebruik zo iets nu weer.
of maak iets met UsedRange
 
Laatst bewerkt:
Nee, ik heb deze formule niet zelf gemaakt en snap er ook niets van helaas.
Deze werkte prima toen het voor mij nog niet belangrijk was die lege regels mee te kopieren.

Nu dat dit wel belangrijk is moet de formule dus aangepast worden.

En ik weet dus niet hoe. Jij wel? Of iemand anders?
 
probeer deze eens:
Code:
Sub STAP4_naar_Transacties()
  Sheets("Stap 4").UsedRange.Offset(16).SpecialCells(xlConstants).Copy
  Sheets("Transacties").Cells(Rows.Count, 3).End(xlUp).Offset(1).PasteSpecial (xlPasteValues)
  MsgBox "Alle mutaties zijn gekopieerd naar het tabblad Transacties." & vbLf & "Ga naar tabblad Transacties en controleer zorgvuldig op juiste invoer.", , ""
  Sheets("Transacties").Select
  Range("C" & Cells.Rows.Count).End(xlUp).Select
End Sub
 
De code die ik heb (zie boven) werkt helaas alleen met aaneengesloten regels. Nu er dus lege regels in zitten (die inderdaad meegenomen moeten worden) moet ik op zoek naar een andere.

Deze kan ik helaas zelf niet maken, vandaar dat ik het hier beleefd vraag. Is zeker niet de bedoeling iemand aan het huiswerk te zetten :confused:
 
Laatst bewerkt:
Dit werkt inderdaad (alvast bedankt voor deze stap), op één belangrijk ding na: de lege regels onder de laatste ingevulde regel worden ook meegenomen, dat is niet de bedoeling.

Dus beter geformuleerd: de gevulde regels én de lege regels daartussenin moeten mee gekopieerd worden. Is dat te doen?
 
nog net op de valreep:
Code:
Sub STAP4_naar_Transacties()
  Sheets("Stap 4").Range(Cells(17, 2), Cells(Rows.Count, 8).End(xlUp)).Copy
  Sheets("Transacties").Cells(Rows.Count, 3).End(xlUp).Offset(1).PasteSpecial (xlPasteValues)
  MsgBox "Alle mutaties zijn gekopieerd naar het tabblad Transacties." & vbLf & "Ga naar tabblad Transacties en controleer zorgvuldig op juiste invoer.", , ""
  Sheets("Transacties").Select
  Range("C" & Cells.Rows.Count).End(xlUp).Select
End Sub
ps je moet wel je volgnr formule een beetje aanpassen door de lege regel
 
@Sylvester, je eerste regel zou nog mis kunnen lopen door ontbreken van tabbladverwijzing.

Code:
Sub jec()
 Dim ar
 With Sheets("Transacties")
    ar = Sheets("Stap 4").Range(Cells(17, 2), Sheets("Stap 4").Cells(Rows.Count, 8).End(xlUp))
   .Range("C" & Rows.Count).End(xlUp).Offset(1).Resize(UBound(ar), UBound(ar, 2)) = ar
    MsgBox "Alle mutaties zijn gekopieerd naar het tabblad Transacties." & vbLf & "Ga naar tabblad Transacties en controleer zorgvuldig op juiste invoer.", , ""
    Application.Goto .Range("C" & Rows.Count).End(xlUp)
 End With
End Sub
 
Laatst bewerkt:
@Silvester

Super. Ja dit werkt goed, erg bedankt! :thumb:

(En @JEC voor de toevoeging)
 
Dan toch maar juist.

Code:
ar = Sheets("Stap 4").Range([COLOR=#ff0000]sheets("stap 4")[/COLOR].Cells(17, 2), Sheets("Stap 4").Cells(Rows.Count, 8).End(xlUp))

Of:
Code:
ar = Sheets("Stap 4").Range([COLOR=#ff0000]"b17",[/COLOR] Sheets("Stap 4").Cells(Rows.Count, 8).End(xlUp))
 
Ook nog eentje over het hoofd gezien
Nog een variant:

Code:
ar = Sheets("Stap 4").Range("b17", Sheets("Stap 4").Range("H" & Rows.Count).End(xlUp))
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan