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

vba code inkorten

Status
Niet open voor verdere reacties.

ewaldmauritz

Gebruiker
Lid geworden
19 okt 2011
Berichten
87
Ik heb een heel lang stuk vba code. Het uitvoeren van die macro kost nogal wat tijd. Ik zou het daarom willen versnellen. Onderstaande code komt tientallen keren terug, telkens met een ander bereik. Hoe kan dit stukje code zo kort mogelijk worden geschreven?

Code:
Range("C4:G95").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
 
zoals de code nu staat is het gelijk of je hem 1 keer of 20 keer draait.


mvg
Leo
 
Magere info voor deze vraag:
Snellere code, hetzelfde effekt
Code:
Range("C4:G95").value=Range("C4:G95").Value

Dit kan ook in 1 keer voor 20 afzonderlijke gebieden.

Code:
Range("C4:G95,C104:G195").value=Range("C4:G95,C104:G195").Value

Maar normaal gesproken heb je dit soort code niet eens nodig om iets goed weg te schrijven in een werkblad.
 
Laatst bewerkt:
Wellicht is de vraag wat onduidelijk geformuleerd. Ik bedoelde dat de code nu stapsgewijs eerst een bereik selecteert, vervolgens kopieert en daarna weer plakt. Totaal zijn dat 3 stappen. Kan dat misschien ook in 1 of 2 stappen, bijvoorbeeld door het selecteren, kopiëren en plakken samen te voegen in 1 stap?
 
Nee, dat is niet wat je zocht, want zoals ik al aangaf is ook die code waarschijnlijk 100% overbodig ( en maakt je macro onnodig traag).

Als je meer informatie over je macro en wat je ermee wil bereiken verstrekt, kunnen we je dat aantonen.
 
Ik hou me altijd aanbevolen als er verbeteringen aan te brengen zijn. In dit geval gaat het echter om een vrij complex probleem. Het is in deze situatie nodig om cellen te kopiëren en de waarden op dezelfde locatie weg te schrijven.

Ik heb een tabblad (tabblad 2) met daarin een tabel met waarden. De waarden in elke rij zijn gekoppeld zijn aan een code in die rij. De code staat in de eerste kolom, de bijbehorende waarden staan daarachter. De codes worden letterlijk overgenomen uit een ander tabblad (tabblad 1). Op tabblad 1 is het voor de gebruiker mogelijk om de coderingen te sorteren op alfabet. Omdat de codes van tabblad 1 worden overgenomen op tabblad 2 worden deze op tabblad 2 dus ook gesorteerd. De volgorde wijzigt dus. Maar de bijbehoorde waarden wijzigen niet mee. Het resultaat is dat de waarden niet meer in dezelfde rij staan als de codes die er bij horen.

Om dat op te lossen wordt er op tabblad 2 eerst een kopie gemaakt van de tabel met codes en waarden. Na het sorteren van de codes kunnen de bijbehorende waarden mbv vert.zoeken uit de kopietabel worden 'opgezocht'. Om te zorgen dat het resultaat van vert.zoeken weer een waarde wordt, moeten de bereiken waar dit is toegepast worden gekopieerd en worden geplakt als waarden. Vandaar de reden van mijn macro.

Het is vrij lastig om schriftelijk het probleem toe te lichten, maar hopelijk is de achtergrond iets duidelijker.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan