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

Waarden uit verschillende ranges met 1 knop kopiëren met vba

Gotty

Gebruiker
Lid geworden
16 sep 2004
Berichten
496
Beste allemaal,

Ik heb een kasboek (bijgevoegd), en zodra het nieuwjaar is kopieer ik eindbedragen en nog een rijtje met waarden naar het nieuwe kasboek, zodat het daar de beginbedragen en beginwaarden zijn. De kasboeken zijn exact gelijk. In de blauwe cellen staan allemaal formules. Alleen de horizontale cellen zijn voorzien van een opmaak, gelieve dit zo laten.

Ik kopieer nu met 1 knop de horizontale range met blauwe opvulling naar het klembord, en in het nieuwe bestand plak ik het met 1 knop naar de horizontale range met groene opvulling.

Met de andere knop kopieer ik nu de verticale range met blauwe opvulling naar het klembord, en in het nieuwe bestand plak ik het met 1 knop naar de horizontale range met groene opvulling.

Ik zou de 2 kopieerknoppen graag in 1 knop willen hebben, en ook de 2 plakknoppen zou ik graag in 1 knop willen, is dit mogelijk?

Ik heb geloof ik de te kopiëren totale range 'op kunnen nemen' maar voor zo ver ik weet kun je met handmatig kopieren 1 x te gelijk kopieren, er zijn geloof geen twee klemborden waar ik 1 vba-code van kan maken. Dus daarmee kom ik er niet uit.

Ik heb er 1 kopieerknop en 1 plakknop in gemaakt en ik zou zeggen dat dat de juiste vba-code is maar niet dus.

Alles wat niet met de vraag te maken heeft heb ik uit het bestand gehaald dus als iemand hier een oplossing voor heeft zou dat geweldig zijn! Mogelijk heb ik het iets makkelijker gemaakt door een aantal rijen te verbergen, het deel waar het om gaat staat nu netjes links bovenaan. Bij voorbaat dank voor alle hulp.
 

Bijlagen

Onder 1 knop:
Code:
Sub WaardenOvernemen()
    With Sheets("instellingen").Range("B72:M72")
        .Value = .Range("B84:M84").Value
        .NumberFormat = .Range("B84:M84").NumberFormat
    End With
  
    With Sheets("instellingen").Range("P64:Q74")
        .Value = .Range("P75:Q85").Value
        .NumberFormat = .Range("P75:Q85").NumberFormat
    End With
End Sub
 
Laatst bewerkt:
Dat ging mis, dit gaat beter:
Code:
Sub WaardenOvernemen()
    With Sheets("instellingen")
        .Range("B72:M72").Value = .Range("B84:M84").Value
        .Range("B72:M72").NumberFormat = .Range("B84:M84").NumberFormat

        .Range("P64:Q74").Value = .Range("P75:Q85").Value
        .Range("P64:Q74").NumberFormat = .Range("P75:Q85").NumberFormat
    End With
End Sub
 
@edmoor
zou dit misschien ook met een file kunnen die ergens in een directory staat en niet geopend is?

dus een bepaalde selectie selecteren en plakken in de bestand die geopend is
 
Zeker.
Al moet VBA dan uiteraard wel dat bestand eerst openen.
 
@xbox360
Begin dan een eigen vraag waarbij je meer uitleg geeft en misschien een voorbeeldbestand waarmee we kunnen werken.
 
Hoi Edmoor, bedankt voor je hulp, hij werkt inderdaad perfect alleen heb ik mijn vraag misschien niet zo duidelijk uitgelegd. Ik ben op zoek naar een code die de waarden in de volgende ranges met 1 druk op de knop op het klembord zet:

Code:
B84:M84
P75:Q85

Om deze waarden in het kasboek van het volgende jaar weer te kunnen plakken met 1 druk op de knop in de onderstaande range:

Bash:
B72:M72
P64:Q74

Om een wat duidelijker idee te geven heb ik dit keer 2 voorbeeldbestanden bijgevoegd, dus ik zou in dit voorbeeld de waarden graag willen kunnen kopiëren van het kasboek 2025 naar 2026 volgens de ranges hierboven in dit bericht beschreven. Helaas kan ik mijn startvraag niet meer bewerken, vroeger kon dat wel. Dan had ik deze wat duidelijker gemaakt. Bij voorbaat dank voor alle hulp!
 

Bijlagen

Knippen en plakken is niet nodig zoals je hebt gezien.
Dus het klembord niet.
Je kan simpel in VBA het andere document erbij openen en de verwijzing er naar gebruiken.
In welk document moet de code staan?
 
In dit voorbeeld moet het van kasboek 2025 naar kasboek 2026 gekopieerd worden, maar het jaar erop moet het van 2026 naar 2027 gekopieerd worden en ga zo maar door.
 
Zo dus, bij een bestaand nieuw werkboek voor het volgende jaar:
Code:
Sub WaardenOvernemen()
    Boekjaar = Right(Replace(ThisWorkbook.Name, ".xlsm", ""), 4)
    
    Set vbj = Workbooks.Open(ThisWorkbook.Path & "\Kasboek " & Boekjaar + 1 & ".xlsm")
    Set hbj = ThisWorkbook
    
    With vbj.Sheets("instellingen")
        .Range("B72:M72").Value = hbj.Sheets("Instellingen").Range("B84:M84").Value
        .Range("B72:M72").NumberFormat = hbj.Sheets("Instellingen").Range("B84:M84").NumberFormat

        .Range("P64:Q74").Value = hbj.Sheets("Instellingen").Range("P75:Q85").Value
        .Range("P64:Q74").NumberFormat = hbj.Sheets("Instellingen").Range("P75:Q85").NumberFormat
    End With
End Sub
 
Laatst bewerkt:
Zo nu en dan knutsel ik wel eens wat erbij, daarom zou het mooi zijn als het zo makkelijk gaat, zodat ik zelf ook nog wat kan verbouwen als dat ooit nodig is. Maar het bestand is al wel gemaakt en gebruik ik ieder jaar opnieuw. Deze jaarwisseling had ik weer allerlei nieuwe ideeën dus vandaar ook deze vraag.
 
Zie #10.
Voor in het 2025 document.
Er wordt vanuit gegaan dat het document voor 2026 al bestaat.
Als je vragen hebt over die code dan laat het maar weten :)
 
Laatst bewerkt:
Zo dus, bij een bestaand nieuw werkboek voor het volgende jaar:
Code:
Sub WaardenOvernemen()
    Boekjaar = Right(Replace(ThisWorkbook.Name, ".xlsm", ""), 4)
   
    Set vbj = Workbooks.Open(ThisWorkbook.Path & "/Kasboek " & Boekjaar + 1 & ".xlsm")
    Set hbj = ThisWorkbook
   
    With vbj.Sheets("instellingen")
        .Range("B72:M72").Value = hbj.Sheets("Instellingen").Range("B84:M84").Value
        .Range("B72:M72").NumberFormat = hbj.Sheets("Instellingen").Range("B84:M84").NumberFormat

        .Range("P64:Q74").Value = hbj.Sheets("Instellingen").Range("P75:Q85").Value
        .Range("P64:Q74").NumberFormat = hbj.Sheets("Instellingen").Range("P75:Q85").NumberFormat
    End With
End Sub
Hartelijk dank Edmoor, dit is em, alleen stond de slash verkeerd waardoor ik een foutmelding kreeg, door het om te draaien kan ik kasboek 2026 openen. De slash staat in het bovenstaande voorbeeld goed. Nogmaals dank voor alles!
 
Terug
Bovenaan Onderaan