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

Macro toepassen op een selectie

Status
Niet open voor verdere reacties.

jolly01

Gebruiker
Lid geworden
12 apr 2009
Berichten
486
In een sheet klik ik bijvoorbeeld op cel G90, dan wil ik dat de macro vervolgens 14 cellen daaronder inclusief G90 dus het bereik G90:G104 selecteert, kopieërt en plakt als waarde en opmaak in een van te voren geselecteerde cel in tabblad "Input Dagrapportage" uit salesrapportage_2011.xls.

Iemand een idee welke code ik daarvoor nodig heb?
 
Laatst bewerkt:
Op het moment dat je in een blad op G90 klikt, is en kan er geen enkele cel in een ander blad geselecteerd zijn, iets wat je gemakkelijk zelf kunt controleren. Wat je schrijft, is dus met elkaar in strijd. Jij schrijft immers dat je wil kopiëren naar een vooraf geselecteerde cel.
En voor het overige vind ik wat je wil - om bij 1 keer klikken in een cel te gaan kopiëren - uitermate onverstandig. Het zal vele malen ongewenst kopiëren tot gevolg hebben. Ergens klikken in een blad, doe je nu eenmaal vaak zonder er erg in te hebben.
Je kunt wel kopiëren naar een cel die je in de macro vermeldt (bv: kopieer naar A1 van blad2).
 
Laatst bewerkt door een moderator:
Bedankt voor je snelle reactie zapatr ! Zo gaat dat inderdaad niet.

Ik zal mijn vraag aanpassen:
In een actieve sheet klik ik bijvoorbeeld op cel G90, dan wil ik dat de macro vervolgens 14 cellen daaronder inclusief G90 dus het bereik G90:G104 selecteert, kopieërt en plakt als waarde en opmaak in cel A1 tabblad "Input Dagrapportage" van salesrapportage_2011.xls.
 
Laatst bewerkt:
Zoals ik al schreef: Laten kopiëren bij 1 enkele klik, is af te raden !
Daarom heb ik ervan gemaakt: Kopiëren bij dubbelklikken van een willekeurige cel waarop je dubbelklikt + 14 cellen daaronder. Hierbij is ervan uitgegaan dat het te kopiëren en te plakken gebied zich in dezelfde map bevinden.
Dat kan met deze macro:
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
With ActiveCell
Range(Cells(.Row, .Column), Cells(.Row + 14, .Column)).Copy Sheets("Input Dagrapportage").Range("A1")
End With
End Sub
 
Bedankt voor je input.

Ik zoek echter naar een oplossing waarin het te kopiëren bereik zich in een andere map bevindt.
Voor de macro heb ik dan 2 mappen actief:
Dagrapportage 2011.xls, tabblad "Weekcijfers". Hieruit wordt dan het bereik gekopieërt naar salesrapportage_2011.xls, tabblad "Input Dagrapportage" cel A1

Is de macro aan te passen binnen deze actieve mappen?

Inmiddels kom ik erachter dat er alleen getransponeerd als waarde geplakt mag worden, kan je dat evt aanpassen?
 
Laatst bewerkt:
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Workbooks("Dagrapportage 2011.xls").Sheets("Weekcijfers").Range(ActiveCell, ActiveCell.Offset(14, 0)).Copy Workbooks("Salesrapportage_2011").Sheets("Input Dagrapportage").Range("A1")
Range("A1").Select
End Sub
Wees consequent in de naamgeving.
In de ene werkmap geef je een blad de naam Dagrapportage 2011.xls (zonder underscore), en
in de andere map krijgt een blad de naam Salesrapportage _2011.xls (mét underscore).
Dat werkt gemakkelijk fouten in de hand.
 
Ik moet daar inderdaad wat orde in scheppen.:(

Nou wil ik de macro in VBAProject (Persnlk.xls) plakken.

Hoe zet ik de macro daarin zodat hij werkt?
 
als je map persoonlijk.xls bij het opstarten van excel wordt opgestart

dan

zie je in de VBA editor (openen met alt +f11) in de linkerkant
VBAproject(Personal).

vervolgens kun je hier je code in een aparte module invoegen.
 
Ik heb de code in module 9 van Persnlk.xls geplakt. Als ik de macro wil activeren dan verschijnt het venster "Macro's" waar ik een eerder gemaakte macro kan activeren. De macro zelf start niet.

Ik ben nog maar kort geleden met VBA begonnen. Doe ik iets fout? Moet ik ergens nog iets toevoegen?
 

Bijlagen

  • VBA.JPG
    VBA.JPG
    35,7 KB · Weergaven: 87
Dat gaat niet op die manier.
Een macro die begint met "private sub Worksheet....." behoort bij het werkblad en de werkmap waarin de gegevens staan die je wil kopiëren. Wil je de macro per se in de persoonlijke werkmap plaatsen dan moet je de eerste regel van de macro vervangen door (bv.) Macro1() . Dan kun je die macro in de pers.werkmap in een module plaatsen. Maar je kunt hem dan niet activeren door te dubbelklikken, wel met bv. een sneltoets.
 
Laatst bewerkt door een moderator:
De namen aangepast om verwarring te voorkomen. De code in "Dagrapportage 2011.xls" Blad 1 (Weekcijfers) gestopt. Bij het dubbelklikken in tabblad "Weekcijfers" krijg ik foutmelding 9 "Het subscript valt buiten het bereik"

Ik kom steeds dichterbij. Maar ook hier gaat nog iets niet goed.
 

Bijlagen

Laatst bewerkt:
Open beide bestanden en dubbelklik in "Dagrapportage 2011" in het eerste blad op een willekeurige cel.
 
Deze werkt nu eindelijk ook in de originele werkmappen. :thumb:

Nou heb ik de eerste regel van jouw code verwijderd en daarvoor in de plaats de macro "Sales1 ()" genoemd. De code uit "Sheet1 (Weekcijfers)" gehaald en in module 1 geplakt, zodat ik er nu een knop aan kan koppelen. Nou wil ik dat de macro het bereik in "Weekcijfers" kopieërt en plakt als waarde mét transponeren in cel A1 tabblad "Input Dagrapportage" van "Salesrapportage.xls"

Kan je aangeven hoe de code er dan uit gaat zien?
 
Laatst bewerkt:
Code:
Sub sales1()
Workbooks("Dagrapportage 2011.xls").Sheets("Weekcijfers").Range(ActiveCell, ActiveCell.Offset(14, 0)).Copy
Workbooks("Salesrapportage 2011.xls").Sheets("Input Dagrapportage").Range("A1").PasteSpecial Paste:=xlPasteAll, Transpose:=True
Application.CutCopyMode = False
End Sub
Als je de actie handmatig had uitgevoerd en die met de macrorecorder opgenomen,
dan had je dit ook zelf gekund.
 
Nou werkt het prima !:thumb:

Als je de actie handmatig had uitgevoerd en die met de macrorecorder opgenomen,
dan had je dit ook zelf gekund.

Dat had ik ook eerder geprobeerd maar wist kennelijk niet goed wat precies in jouw code te plakken.

Wat me wel lukte net is

Code:
Paste:=xlPasteAll

te vervangen door

Code:
Paste:=xlPasteValues

Zodat het bereik als waarde wordt geplakt.




zapatr, super bedankt voor je input. Je hebt met jouw inbreng een aantal muren opengebroken waardoor ik een stuk verder kom in VBA !:d
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan