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

Exel Macro - Kopie van een bereik maken

Status
Niet open voor verdere reacties.

Verberkmoes

Verenigingslid
Lid geworden
26 feb 2002
Berichten
59
Betreft: Exel macro

Vraag 1:

Ik wil graag een korte code weten voor een kopie maken (alleen waarden) van het ene naar het andere celbereik.

Voor het normaal kopieeren gebruik ik bijvoorbeeld:

Range("A1:B20").Copy Range("D1")

Wat ik dus zoek is de verkorte code voor:

Range("A1:B20").Select
Selection.Copy
Range("D1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

(Bij voorkeur zonder "Select" want dat maakt de macro trager)

Vraag 2:
Hetzelfde als vraag 1 maar dan naar het zelfde bereik.
Ik wil cel A1:B20 dus vervangen door waarden.


Vraag 3:
Is het opeenvoudige wijze mogelijk een getal met daaraan een eenheid gekoppeld, te vervangen door alleen het getal.
Voorbeeld: Het getal is x en de eenheid ms (milliseconde). De grootheid is in de cel geschreven als xms. Ik wil alleen de getalswaarde x in een cel plaatsen (in een andere cel of in dezelfde cel).

Alvast hartelijk dank voor de assistentie.

Bert Verberkmoes
 
Voor 1en 2:

Range("A1:B20").Copy
Range("A1").PasteSpecial Paste:=xlPasteValues

Alleen de range bij paste aanpassen.

Voor 3:
staat de eenheid er vast achter of zit er een spatie tussen?
indien met spatie: =LINKS(A1;VIND.SPEC(" ";A1;1)-1)

indien zonder spatie met eenheid xms
=LINKS(A2;VIND.ALLES("xms";A2;1)-1)
 
Jan heeft hierboven al puik werk geleverd, ik kan enkel nog de cosmetica wat verbeteren:

vraag 1

Code:
Range("A1:B20").Copy
Range("A1").PasteSpecial xlValues

vraag 2

Code:
With Range("A1:B20")
       .Copy
       .PasteSpecial xlValues
End With

vraag 3: goed gedaan Jan, alleen voor spaties weg te doen heb je TRIM in het Engels, in het Nederlands is dat SPATIES.WISSEN.

Wigi
 
Wigi, ik heb geen poging gedaan de spatie te wissen. TRIM en SPATIES.WISSEN zijn bekend.
De vraag was of ik kon zoeken naar de spatie, dan maakt het geen verschil wat voor eenheden erachter staan. Is er geen spatie dan moet er naar de eenheid gezocht worden en is ie minder algemeen toepasbaar.
 
Klopt. Al zou ik toch gaan voor

=spaties.wissen(substitueren(A2;"xms";""))

Dan klopt het ineens in beide gevallen.

Wigi
 
Bedankt

Beste Jan,
Hartelijk dank voor het snelle antwoord.
Ik had normaal wel eerder gereageerd maar zat een paar dagen in het buitenland en door de storm liep deze trip nog een dag uit.

Voor vraag 1 en 2 werkt jouw voorstel goed. Ik ben blij met de korte codes. Dit maakt het geheel veel overzichtelijker.

Wat betreft vraag 3 lukte het niet.
Ik vond echter vrij snel de functie SUBSTITUTE en deze heb ik gebruikt (ik heb Engelse Windows):

Range("L1").Value = "=(SUBSTITUTE(AU1_0000!BB31,""ms"","""")/1000)"

In cel BB31 op blad AU1_0000 staat bijvoorbeeld 5ms
L1 geeft de waarde 5 / 1000 = 0.005 sec.
Ik heb dus ms vervangen door "niets"

Met vriendelijke groet,
Bert Verberkmoes
 
Nog een vraagje. Heb je in L1 echt nog de formule nodig? Als het een formule is zou ik geen VBA gebruiken.

Of is het getal al voldoende? In dat geval kan je het misschien best ook anders aanpakken.

Maar antwoord eerst maar eens op deze vragen :D.

Wigi
 
Vergeten status door te geven

Ik was vorige keer vergeten aan te vinken dat alles opgelost is.
Nogmaals bedankt.
Bert Verberkmoes
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan