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 |