VBA Value Paste & PasteSpecial

Deze tutorial laat je zien hoe je PasteSpecial in VBA gebruikt om alleen bepaalde celeigenschappen te plakken (bijv. waarden, formaten)

Wanneer u in Excel een cel kopieert en plakt, kopieert en plakt u alle eigenschappen van de cel: waarden, opmaak, formules, getalopmaak, randen, enz.:

In plaats daarvan kunt u "Plakken speciaal" om alleen bepaalde celeigenschappen te plakken. In Excel is het menu Plakken speciaal toegankelijk met de sneltoets CTRL + ALT + V (na het kopiëren van een cel):

Hier ziet u alle combinaties van celeigenschappen die u kunt plakken.

Als u een macro opneemt terwijl u het menu Plakken speciaal gebruikt, kunt u gewoon de gegenereerde code gebruiken. Dit is vaak de gemakkelijkste manier om VBA te gebruiken om speciaal te plakken.

Waarden plakken

Met waarden plakken wordt alleen de cel "waarde" geplakt. Als de cel een formule bevat, zal Paste Values ​​het formuleresultaat plakken.

Deze code kopieert en plakt waarden voor een enkele cel op hetzelfde werkblad:

12 Bereik ("A1"). KopiërenBereik ("B1").Plakken Speciaal Plakken:=xlPasteValues

Kopiëren en plakken naar ander blad

Dit voorbeeld kopieert en plakt waarden voor afzonderlijke cellen op verschillende werkbladen

12 Bladen ("Blad1"). Bereik ("A1"). KopiërenBladen ("Blad2"). Bereik ("B1"). Plakken Speciaal Plakken: = xl Plakken Waarden

Deze voorbeelden kopiëren en plakken waarden voor een celbereik:

Bereiken kopiëren en plakken

12 Bereik ("A1:B3"). KopiërenBereik ("C1").Plakken Speciaal Plakken:=xlPasteValues

Kolommen kopiëren en plakken

12 Kolommen ("A"). KopiërenColumns("B").Plakken Speciaal Plakken:=xlPasteValues

Kopieer en waardeer en plak rijen

12 Rijen(1).KopiërenRijen(2).Plakken Speciaal Plakken:=xlPasteValues

Waarden en getalnotaties plakken

Als u waarden plakt, wordt alleen de celwaarde geplakt. Er wordt geen opmaak geplakt, ook geen getalopmaak.

Wanneer u waarden plakt, wilt u vaak ook de getalopmaak opnemen, zodat uw waarden opgemaakt blijven. Laten we een voorbeeld bekijken.

Hier zullen we waarde hechten aan het plakken van een cel met een percentage:

12 Bladen ("Blad1"). Kolommen ("D"). KopiërenSheets("Blad2").Columns("B").Plakken Speciaal Plakken:=xlPasteValues

Merk op hoe de opmaak van het percentagegetal verloren gaat en in plaats daarvan een slordige decimale waarde wordt weergegeven.

Laten we in plaats daarvan de indelingen Paste Values ​​en Numbers gebruiken:

12 Bladen ("Blad1"). Kolommen ("D"). KopiërenSheets("Blad2").Columns("B").PasteSpecial Paste:=xlPasteValuesAndNumberFormats

Nu kunt u zien dat de getalnotatie ook is geplakt, waarbij de percentagenotatie behouden blijft.

.Waarde in plaats van .Plakken

In plaats van waarden te plakken, kunt u de eigenschap Value van het Range-object gebruiken:

Hierdoor wordt de celwaarde van A2 gelijk aan de celwaarde van B2

1 Bereik ("A2"). Waarde = Bereik ("B2"). Waarde

U kunt ook een celbereik instellen dat gelijk is aan de waarde van een enkele cel:

1 Bereik ("A2:C5"). Waarde = Bereik ("A1"). Waarde

of een cellenbereik dat gelijk is aan een ander cellenbereik van dezelfde grootte:

1 Bereik ("B2: D4"). Waarde = Bereik ("A1: C3"). Waarde

Het is minder typen om de eigenschap Value te gebruiken. Als u bekwaam wilt worden met Excel VBA, moet u ook bekend zijn met het werken met de eigenschap Waarde van cellen.

Celwaarde vs. Waarde2 Eigenschap

Technisch gezien is het beter om de eigenschap Value2 van een cel te gebruiken. Value2 is iets sneller (dit is alleen van belang bij extreem grote berekeningen) en de eigenschap Value kan u een afgekapt resultaat geven als de cel is opgemaakt als valuta of een datum. 99% van de code die ik heb gezien, gebruikt echter .Value en niet .Value2. Persoonlijk gebruik ik .Value2 niet, maar u moet zich ervan bewust zijn dat het bestaat.

1 Bereik ("A2"). Waarde2 = Bereik ("B2"). Waarde2

Kopieer Plakken Builder

We hebben een "Copy Paste Code Builder" gemaakt die het gemakkelijk maakt om VBA-code te genereren om cellen te kopiëren (of te knippen) en te plakken. De bouwer is onderdeel van onze VBA-invoegtoepassing: AutoMacro.

Automacro bevat ook vele andere Codegeneratoren, een uitgebreide Codebibliotheeken krachtig Coderingstools.

Plakken speciaal - Formaten en formules

Naast waarden plakken, zijn de meest voorkomende opties voor plakken speciaal de volgende opties: Opmaak plakken en Formules plakken

Indelingen plakken

Met Opmaak plakken kunt u alle celopmaak plakken.

12 Bereik ("A1:A10"). KopiërenRange("B1:B10").PlakkenSpecial Paste:=xlPasteFormats

Formules plakken

Met formules plakken worden alleen de celformules geplakt. Dit is ook erg handig als u celformules wilt kopiëren, maar geen celachtergrondkleuren (of andere celopmaak) wilt kopiëren.

12 Bereik ("A1:A10"). KopiërenRange("B1:B10").Plakken Speciaal Plakken:=xlPlakkenFormules

Formules en getalnotaties plakken

Net als bij Plakwaarden en getalnotaties hierboven, kunt u ook getalnotaties kopiëren en plakken samen met formules

Hier zullen we een celformule kopiëren met alleen opmaak van boekhoudnummers en plakken.

12 Bladen ("Blad1"). Bereik ("D3"). KopiërenSpreadsheets("Blad2").Bereik("D3").Plakken Speciaal xlPlakkenFormules

Merk op hoe de getalopmaak verloren gaat en in plaats daarvan een slordige niet-afgeronde waarde wordt weergegeven.

Laten we in plaats daarvan de formaten Paste Formulas en Numbers gebruiken:

12 Bladen ("Blad1"). Bereik ("D3"). KopiërenSheets("Blad2").Bereik("D3").Plakken Speciaal xlPlakkenFormulesAndNumberFormats

Nu kunt u zien dat de getalnotatie ook is geplakt, met behoud van de boekhoudingsindeling.

Plakken speciaal - Transponeren en spaties overslaan

Plakken speciaal - transponeren

Plakken speciaal transponeren stelt u in staat cellen te kopiëren en te plakken waarbij de oriëntatie verandert van boven-beneden naar links-rechts (of omgekeerd):

12 Vellen ("Blad1"). Bereik ("A1:A5"). KopiërenBladen ("Blad1"). Bereik ("B1").Plakken Speciaal Transponeren:=True

Plakken speciaal - Spaties overslaan

Spaties overslaan is een speciale plakoptie die niet zo vaak lijkt te worden gebruikt als zou moeten. Hiermee kunt u alleen niet-lege cellen kopiëren tijdens het kopiëren en plakken. Lege cellen worden dus niet gekopieerd.

In dit voorbeeld hieronder. We kopiëren kolom A, plakken normaal in kolom B en slaan lege cellen over in kolom C. U kunt zien dat de lege cellen niet in kolom C zijn geplakt in de onderstaande afbeelding.

123 Vellen ("Blad1"). Bereik ("A1:A5"). KopiërenBladen ("Blad1").Bereik ("B1").PlakkenSpecial SkipBlanks:=FalseBladen ("Blad1").Bereik ("C1").PlakkenSpecial SkipBlanks:=True

Andere speciale opties voor plakken

Plakken speciaal - Opmerkingen

1 Bladen ("Blad1"). Bereik ("A1"). Bladen kopiëren ("Blad1"). Bereik ("E1"). Plakken Speciaal xlPlakkenOpmerkingen

Plakken speciaal - Validatie

12 Vellen ("Blad1"). Bereik ("A1:A4"). KopiërenSheets("Blad1").Bereik("B1:B4").Plakken Speciaal xlPlakkenValidatie

Plakken speciaal - Alles met bronthema

123 Werkmappen(1).Sheets("Blad1").Bereik("A1:A2").KopiërenWerkmappen (2). Bladen ("Blad1"). Bereik ("A1"). Plakken SpeciaalWerkmappen(2).Sheets("Blad1").Bereik("B1").Plakken Speciaal xlPlakkenAllesGebruikenBronThema

Plakken speciaal - Alles behalve randen

123 Bereik ("B2:C3"). KopiërenBereik ("E2"). Plakken SpeciaalBereik ("H2").PlakkenSpeciaal xlPlakkenAllesBehalveBorders

PasteSpecial - Kolombreedtes

Een persoonlijke favoriet van mij. PasteSpecial Column Widths kopieert en plakt de breedte van kolommen.

123 Bereik ("A1:A2"). KopiërenBereik ("C1"). Plakken SpeciaalBereik ("E1").PlakkenSpeciaal xlPlakkenKolombreedten

PasteSpecial - Alle voorwaardelijke indelingen samenvoegen

123 Bereik ("A1:A4"). KopiërenBereik ("C1"). Plakken SpeciaalBereik ("E1").PlakkenSpeciaal xlPlakkenAlles SamenvoegenVoorwaardelijkeFormaten

U zal helpen de ontwikkeling van de site, het delen van de pagina met je vrienden

wave wave wave wave wave