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

Cellen kopieren naar variable cellen via marco?

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

HBot

Gebruiker
Lid geworden
12 dec 2006
Berichten
325
Hallo Forum,

Ik wil graag via een marco gegevens uit een reeks cellen kopieren (met vaste gegevens) naar cellen onder een reeks die van elders wordt ingekopieerd en hierdoor kan varieren in aantal.
Zodat nadat de reeks is gevuld de vaste gegevens hieronder komen te staan.
Klinkt simpel maar de variatie van de cellen om naar toe te kopieeren maakt het voor mij lastig.
Bijgevoegd voorbeeldtje.

Groet
HennyBekijk bijlage voorbeeld invoegen.xls
 
Zoiets ?
Code:
Sub tst()
    With Sheets("Sheet1")
        .Range("E11:F13").Copy
        .Range("A" & .Cells(Rows.Count, 1).End(xlUp).Row + 1).PasteSpecial xlPasteValues
    End With
    Application.CutCopyMode = False
End Sub
 
Warm bakkerktje,

Bedankt dit gaat de goede kant op..maar...
In kollom A staan verwijzingen naar een andere sheet bv."=sheet test a15"
Dus ik weet nooit of kollom A tot cel 10 of 20 gevuld is
Is het mogelijk dat ie telt vanaf een bepaalde cel en hierna de eerste cel vindt die leeg is (en de formules niet ziet als vulling??)

Alvast bedankt
Henny
 
Allen,

Het zit em in de regel
"Range("A" & .Cells(Rows.Count, 1).End(xlUp).Row + 1).PasteSpecial xlPasteValues"
Deze snap ik niet helemaal, als iemand mij deze kan uitleggen kan ik hier misschien iets mee doen.
Ik loop nml tegen die regels aan waar een formule in staat,
Nu wordt het gekopieerd naar de eerste regel waar geen formule meer instaat
Ik zou deze toepassing ook kunnen gebruiken om ergens tussen bestaande blokken(regels) informatie toe te voegen.

Groet
Henny
 
De regel begint bij de laatste cel in de A-kolom en springt direct naar de laatste gevulde cel in die kolom. Vervolgens wordt in de cel daar direct onder de gegevens geplaatst.
Dus stel in de A-kolom zijn (eventueel met lege cellen ertussen) tot en met cel A25 de cellen gevuld.
De code zal de gegevens dan in cel A26 en verder plaatsen.

Met vriendelijke groet,


Roncancio
 
Laatst bewerkt door een moderator:
Hallo Rocancio,

Duidelijk,
Is het mogelijk om de formule zo in te stellen dat ik bepaal waar hij moet beginen bv A7 of B10?
En kan ik ook een bepaalde range aangeven het aantal cellen dat gebruik mag worden?
Is er een mogelijkheid dat cellen met een formule als lege cellen gezien worden?
Als hier mogelijkheden toe zijn kan ik hier gebruik van maken.
BVD

Henny
 
Je kunt inderdaad zelf laten bepalen waar de macro moet beginnen en of cellen met formules moeten worden overschreven, maar als je uitsluitend een bepaalde range wilt gebruiken waarin de gegevens geplaatst mogen worden dan is mijn vraag: wat als die range niet groot genoeg is?

Met vriendelijke groet,


Roncancio
 
En als antwoord op je vraag betreffende cellen met een formule, technisch gezien is een cel met een formule nooit leeg dwz dat je formule een blanco cel kan produceren (afhankelijk van hoe je formule is opgebouwd) maar ze wordt nooit als 'echt leeg' beschouwd.
Is er trouwens geen andere manier om je eerste gegevens op te halen ipv met formules te werken ? Plaats anders eens een representatief voorbeeld van hoe je de gegevens verzamelt op je andere tabblad.
 
Warm Bakkertje,Roncancio

Ik heb hier ook aan zitten denken om de gegevens via een macro op te halen,
maar hoe kan ik dan deze extra kopieerslag goed in de macro neerzetten,
De gegevens worden als 2 blokken opgehaald, waarna onder elk blok extra gegevens moeten worden gekopieerd.
BV; ik kopier van een sheet range A1:C20, waar bv A1:C8 het eerste blok is en A12:C18 het tweede blok is(er zitten altijd 4 regels tussen de 2 blokken), onder blok 1 moet informatie worden toegevoegd en onder blok 2 moet informatie worden toegevoegd
Het probleem waar ik meezit is dat de 2 blokken kunnen varieeren in aantal regels.

hopenlijk is het een beetje duidelijk
Heb je nog surgesties?

Henny
 
Beginnen de blokken steeds in dezelfde cellen nl A1 en A12 ? Dat de lengte dan variabel is kan steeds opgevangen worden in de code.
Zoals ik al zei, plaats eens een voorbeeldbestandje met wat het is en wat het moetworden zodat we je met gerichte antwoorden verder kunnen helpen, want nu is het een beetje blind vliegen.
 
Deel van de oplossing gevonden;
Ik zet de kopieerslag in een Macro en voeg dan later de informatie toe.
Sub kopieeren()
'
' kopieeren
'
Sheets("Sheet1").Select
Range("A5:C13").Select
Selection.Copy
Sheets("Sheet2").Select
Range("A10").Select
ActiveSheet.Paste
With Sheets("sheet2")
Range("g17:i19").Copy
Range("A" & .Cells(Rows.Count, 1).End(xlUp).Row + 1).PasteSpecial xlPasteValues
End With
Sheets("Sheet1").Select
Range("A19:C24").Select
Selection.Copy
Sheets("Sheet2").Select
Range("A23").Select
ActiveSheet.Paste
With Sheets("sheet2")
Range("g21:i24").Copy
Range("A" & .Cells(Rows.Count, 1).End(xlUp).Row + 1).PasteSpecial xlPasteValues
End With
End Sub

Nu zit ik alleen nog met het feit dat ik alleen weet hoe ik een vast gebied kan kopieeren.
Is het mogelijk om te starten in bv A5 en dan de eerste lege cel van het blok Bv C9 en dit gebied te kopieeren waarbij C9 kan varieeren.
En dan vervolgens het volgende blok BV A12 t/m C19 te selecteren?

Stapje voor stapje kom ik een heel eind.
Henny
 
Ik heb wat vragen over de gegevens in de kolommen G t/m I.
- Worden deze gegevens altijd in de G-kolom geplaatst?
- Hoe kan Excel weten welke vaste gegevens bij het 1e tabel hoort en welke bij het 2e?
- Zijn het overigens altijd 3 regels die tussengevoegd moeten worden of kan dit ook verschillen?

Met vriendelijke groet,


Roncancio
 
Op basis v/h door jou aangeleverde vb
Code:
Sub tst()
Application.ScreenUpdating = False
With Sheets("Sheet2")
    Columns(2).Find("Kollom1").CurrentRegion.Copy
    .Range("A10").PasteSpecial xlPasteValues
    .Range("G17:I19").Copy
    .Range("A" & .Cells(Rows.Count, 1).End(xlUp).Row + 2).PasteSpecial xlPasteValues
    Columns(2).Find("Kollom2").CurrentRegion.Copy
    .Range("A" & .Cells(Rows.Count, 1).End(xlUp).Row + 1).PasteSpecial xlPasteValues
    .Range("G22:I24").Copy
    .Range("A" & .Cells(Rows.Count, 1).End(xlUp).Row + 2).PasteSpecial xlPasteValues
End With
With Application
    .CutCopyMode = False
    .ScreenUpdating = True
End With
End Sub
Let wel op de schrijfwijze van Kollom1 en Kollom2 en zorg ervoor dat deze in de macro identiek geschreven zijn.
Maak Sheet1 het actieve blad en draai de macro.
 
Warm Bakkertje,
Het eerste deel lijkt te werken, loopt vast op
Sub tst()
Application.ScreenUpdating = False
With Sheets("Sheet2")
Columns(2).Find("Kollom1").CurrentRegion.Copy
.Range("A10").PasteSpecial xlPasteValues
.Range("G17:I19").Copy
.Range("A" & .Cells(Rows.Count, 1).End(xlUp).Row + 2).PasteSpecial xlPasteValues
Columns(2).Find("Kollom2").CurrentRegion.Copy .Range("A" & .Cells(Rows.Count, 1).End(xlUp).Row + 1).PasteSpecial xlPasteValues
.Range("G22:I24").Copy
.Range("A" & .Cells(Rows.Count, 1).End(xlUp).Row + 2).PasteSpecial xlPasteValues
End With
With Application
.CutCopyMode = False
.ScreenUpdating = True
End With
End Sub

Wat bedoel je met (Let wel op de schrijfwijze van Kollom1 en Kollom2 en zorg ervoor dat deze in de macro identiek geschreven zijn.
)
Roncancio,
Antwoord op jouw vraag.
Kollom G t/m I zijn over het allegemene gegevens kan zijn dat ze op een andere sheet terecht gaan komen, maar het zijn 2 groepen van groep 1 wordt altijd tussen gevoegd heeft altijd 3regels en groep 2 wordt altijd onderaan toegevoegd bevat 3 of 4 regels(nog niet duidelijk)
Excel weet wat waar hoort omdat de gegevens in de 1e groep en 2e groep altijd in deze volgorde wordt aangeleverd van uit een ander programma.

De ruimte tussen de 2 (A10-C?) groepen waar deze informatie aan toegevoed moet worden is altijd 4 regels.
Tussen de
 
Op je Sheet1 heb je kollom1(zonder spatie) en kollom 2(met spatie) staan. Zorg ervoor dat hiervoor eenvormigheid is en pas het eventueel aan in de macro.
 
Warm bakkertje,

Ik snap em,
Loopt vervolgens vast op de volgende regel
Range("A" & .Cells(Rows.Count, 1).End(xlUp).Row + 1).PasteSpecial xlPasteValues
alvast bedankt leer steeds meer.

Gr
Henny
 
Ik heb em werkend in mijn document.
Maar nog een vraagje;
Columns(2).Find("Kollom1").CurrentRegion.Copy
Kan ik hier ook het aantal kollomen aangeven, blijkt in mijn document dat de informatie die in kollomen D-E-F niet van belang zijn voor de sheets waardit heen gekopieerd wordt?
Deze toepassing kan ik op diverse manier gebruiken

Gr
Henny
 
Code:
Sub tst()
Application.ScreenUpdating = False
With Sheets("Sheet2")
     bereik = Columns(2).Find("Kollom1", , xlValues, xlWhole).Row
     einde = Cells(bereik, 1).Offset(1).End(xlDown).Row
     Cells(bereik, 1).Resize(einde - (bereik - 1), 3).Copy
    .Range("A10").PasteSpecial xlPasteValues
    .Range("G17:I19").Copy
    .Range("A" & .Cells(Rows.Count, 1).End(xlUp).Row + 1).PasteSpecial xlPasteValues
     bereik = Columns(2).Find("Kollom2", , xlValues, xlWhole).Row
     einde = Cells(bereik, 1).Offset(1).End(xlDown).Row
     Cells(bereik, 1).Resize(einde - (bereik - 1), 3).Copy
    .Range("A" & .Cells(Rows.Count, 1).End(xlUp).Row + 1).PasteSpecial xlPasteValues
    .Range("G22:I24").Copy
    .Range("A" & .Cells(Rows.Count, 1).End(xlUp).Row + 1).PasteSpecial xlPasteValues
End With
With Application
    .CutCopyMode = False
    .ScreenUpdating = True
End With
End Sub
 
Laatst bewerkt:
Rudi,

Geweldig werkt perfect.
Nog een vraag er staat tussen de kollom en de ingekopieerde cellen een lege regel,
Kan ik deze laten verwijderen.

gr
Henny
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan