Hallo Jessie,
Ik wil er graag even op wijzen dat het op dit forum de bedoeling is dat iedereen er iets mag van opsteken, juist omdat we hier als 'hobby' (lees: gratis) mensen helpen. Ik zal daarom met plezier je via PB ontvangen vraag ook beantwoorden, maar dus in dit draadje.
Uit dat PB:
...er wordt gekopierd en daarna als waardes geplakt.
De code doet dit inderdaad, maar waarom lees ik het stukje "copy" en "paste als waardes" niet terug in de code?
En hoe lees ik het stukje transpose (transpose)
Voor wat jij in dit document wil zou dat inderdaad ook met copy/paste kunnen. Maar in heel veel gevallen worden met vba waarden opgehaald uit een werkblad, ondergaan daar nog bewerkingen, en worden vervolgens die resultaten op een werkblad gezet. Laten we zeggen dat mijn code daarop al anticipeert en dat het vooral zo gegroeid is vanuit je oorspronkelijke vraag. Het is ook een beetje de macht der gewoonte: vroeger gebruikte ik ook regelmatig copy/paste en merkte dat ik het nadien in 99% van de gevallen moest veranderen.
Transpose: vba maakt van een range altijd een 2-dimensionale array, ook als je gegevens uit één kolom of rij inleest. Met de eerste transpose maken we er een 1-dimensionale array van, en met de tweede krijgen ze terug de juiste 'richting'. Maar toegegeven, ook dat is zo'n beetje standaard syntax, afkomstig uit complexere taken.
Als je het, maar dat zal dus niet altijd en overal bruikbaar zijn (maar hier wél), op de allersimpelste manier wil doen heb je zelfs geen copy/paste nodig en kom je er bijvoorbeeld al met:
Sub Naartotaal()
Application.ScreenUpdating = False
Sheets("Totaal").Select
Range("C5:BB500").ClearContents
For c = 3 To Cells(4, Columns.Count).End(xlToLeft).Column
With Sheets("Berekening")
.Cells(4, 6) = Cells(4, c)
Cells(5, c).Resize(7).Value = .Cells(5, 6).Resize(7).Value
End With
Next c
MsgBox "Klaar"
End Sub
Mvg,
Molly