Denna handledning visar dig hur du använder PasteSpecial i VBA för att klistra in endast vissa cellegenskaper (ex. Värden, format)
När du kopierar och klistrar in en cell i Excel kopierar och klistrar du in alla cellens egenskaper: värden, format, formler, nummerformat, gränser, etc:
Istället kan du "Klistra in special" för att bara klistra in vissa cellegenskaper. I Excel kan du klistra in specialmenyn med genvägen CTRL + ALT + V (efter kopiering av en cell):
Här kan du se alla kombinationer av cellegenskaper som du kan klistra in.
Om du spelar in ett makro medan du använder Paste Special -menyn kan du helt enkelt använda den genererade koden. Detta är ofta det enklaste sättet att använda VBA för att klistra in special.
Klistra in värden
Klistra in värden klistrar bara in cellens "värde". Om cellen innehöll en formel klistrar Paste Values in formelresultatet.
Denna kod kommer att kopiera och klistra in värden för en enda cell i samma kalkylblad:
12 | Område ("A1"). KopieraOmråde ("B1"). PasteSpecial Paste: = xlPasteValues |
Kopiera och värdera klistra in på olika blad
Detta exempel kopierar och klistrar in värden för enskilda celler i olika kalkylblad
12 | Ark ("Ark1"). Område ("A1"). KopiaSheets ("Sheet2"). Range ("B1"). PasteSpecial Paste: = xlPasteValues |
Dessa exempel kommer att kopiera och klistra in värden för ett cellintervall:
Kopiera och värdera klistra in intervall
12 | Område ("A1: B3"). KopieraOmråde ("C1"). PasteSpecial Paste: = xlPasteValues |
Kopiera och värdera klistra in kolumner
12 | Kolumner ("A"). KopieraKolumner ("B"). PasteSpecial Paste: = xlPasteValues |
Kopiera och värdera klistra in rader
12 | Rader (1) .KopieraRader (2) .PasteSpecial Paste: = xlPasteValues |
Klistra in värden och talformat
Klistra in värden klistrar bara in cellvärdet. Ingen formatering klistras in, inklusive nummerformatering.
Ofta när du klistrar in värden kommer du förmodligen också att inkludera nummerformateringen så att dina värden förblir formaterade. Låt oss titta på ett exempel.
Här värderar vi klistra in en cell som innehåller en procentandel:
12 | Ark ("Ark1"). Kolumner ("D"). KopieraKalkylark ("Ark2"). Kolumner ("B"). PasteSpecial Paste: = xlPasteValues |
Lägg märke till hur procenttalets formatering går förlorad och istället visas ett slarvigt decimalvärde.
Låt oss istället använda Paste Values and Numbers -format:
12 | Ark ("Ark1"). Kolumner ("D"). KopieraSheets ("Sheet2"). Kolumner ("B"). PasteSpecial Paste: = xlPasteValuesAndNumberFormats |
Nu kan du se att talformateringen också klistras in och bibehåller procentformatet.
.Värde istället för .Paste
I stället för att klistra in värden kan du använda egenskapen Value för intervallobjektet:
Detta ställer in A2: s cellvärde lika med B2: s cellvärde
1 | Område ("A2"). Värde = intervall ("B2"). Värde |
Du kan också ställa in ett cellintervall som är lika med en enda cells värde:
1 | Område ("A2: C5"). Värde = intervall ("A1"). Värde |
eller ett cellintervall som är lika med ett annat cellintervall av samma storlek:
1 | Område ("B2: D4"). Värde = intervall ("A1: C3"). Värde |
Det är mindre att skriva för att använda egenskapen Value. Om du vill bli skicklig med Excel VBA bör du också vara bekant med att arbeta med cellens värdeegenskap.
Cell Value vs. Value2 Property
Tekniskt sett är det bättre att använda Value2 -egenskapen för en cell. Value2 är något snabbare (det här gäller bara med extremt stora beräkningar) och Value -egenskapen kan ge dig ett avkortat resultat av cellen formateras som valuta eller datum. 99%+ av koden som jag har sett använder dock .Value och inte .Value2. Jag personligen använder inte .Value2, men du bör vara medveten om att det finns.
1 | Område ("A2"). Värde2 = Område ("B2"). Värde2 |
Copy Paste Builder
Vi har skapat en "Copy Paste Code Builder" som gör det enkelt att generera VBA -kod för att kopiera (eller klippa ut) och klistra in celler. Byggmästaren är en del av vår VBA-tillägg: AutoMacro.
AutoMacro innehåller också många andra Kodgeneratorer, en omfattande Kodbibliotekoch kraftfull Kodningsverktyg.
Klistra in special - Formater och formler
Förutom Paste Values är de vanligaste Paste Special -alternativen Paste Formats och Paste Formulas
Klistra in format
Klistra in format låter dig klistra in all cellformatering.
12 | Område ("A1: A10"). KopieraOmråde ("B1: B10"). PasteSpecial Paste: = xlPasteFormats |
Klistra in formler
Klistra in formler klistrar bara in cellformlerna. Detta är också extremt användbart om du vill kopiera cellformler, men inte vill kopiera cellbakgrundsfärger (eller annan cellformatering).
12 | Område ("A1: A10"). KopieraOmråde ("B1: B10"). PasteSpecial Paste: = xlPasteFormulas |
Klistra in formler och nummerformat
I likhet med Klistra in värden och talformat ovan kan du också kopiera och klistra in talformat tillsammans med formler
Här kommer vi att kopiera en cellformel med endast redovisningsnummerformatering och klistra in formler.
12 | Ark ("Ark1"). Omfång ("D3"). KopiaSheets ("Sheet2"). Range ("D3"). PasteSpecial xlPasteFormulas |
Lägg märke till hur talformateringen går förlorad och istället visas ett slarvigt, avrundat värde istället.
Låt oss istället använda klistra in formler och siffror:
12 | Ark ("Ark1"). Omfång ("D3"). KopiaSheets ("Sheet2"). Range ("D3"). PasteSpecial xlPasteFormulasAndNumberFormats |
Nu kan du se att nummerformateringen också klistras in och behåller bokföringsformatet.
Klistra in special - Transponera och hoppa över ämnen
Klistra in special - Transponera
Med Paste Special Transpose kan du kopiera och klistra in celler som ändrar orienteringen uppifrån och ned till vänster till höger (eller omvänt):
12 | Ark ("Ark1"). Omfång ("A1: A5"). KopiaSheets ("Sheet1"). Range ("B1"). PasteSpecial Transpose: = True |
Klistra in special - Hoppa över ämnen
Skip blanks är ett specialklistra -alternativ som inte verkar användas så ofta som det borde vara. Det låter dig bara kopiera icke-tomma celler när du kopierar och klistrar in. Så tomma celler kopieras inte.
I det här exemplet nedan. Vi kommer att kopiera kolumn A, göra en vanlig klistra in i kolumn B och hoppa över blankpasta i kolumn C. Du kan se att de tomma cellerna inte klistrades in i kolumn C i bilden nedan.
123 | Ark ("Ark1"). Omfång ("A1: A5"). KopiaSheets ("Sheet1"). Range ("B1"). PasteSpecial SkipBlanks: = FalseSheets ("Sheet1"). Range ("C1"). PasteSpecial SkipBlanks: = True |
Andra klistra in specialalternativ
Klistra in special - kommentarer
1 | Sheets ("Sheet1"). Range ("A1"). Copy Sheets ("Sheet1"). Range ("E1"). PasteSpecial xlPasteComments |
Klistra in special - Validering
12 | Ark ("Ark1"). Omfång ("A1: A4"). KopiaSheets ("Sheet1"). Range ("B1: B4"). PasteSpecial xlPasteValidation |
Klistra in special - allt med källtema
123 | Arbetsböcker (1). Ark ("Ark1"). Område ("A1: A2"). KopieraArbetsböcker (2). Ark ("Ark1"). Område ("A1"). Klistra in SpecielltArbetsböcker (2) .Sheets ("Sheet1"). Range ("B1"). PasteSpecial xlPasteAllUsingSourceTheme |
Klistra in special - alla utom gränser
123 | Område ("B2: C3"). KopieraOmråde ("E2"). PasteSpecialOmråde ("H2"). PasteSpecial xlPasteAllExceptBorders |
PasteSpecial - Kolumnbredder
Min personliga favorit. PasteSpecial Column Widths kommer att kopiera och klistra in bredden på kolumner.
123 | Område ("A1: A2"). KopieraOmråde ("C1"). PasteSpecialOmråde ("E1"). PasteSpecial xlPasteColumnWidths |
PasteSpecial - All MergingConditionalFormats
123 | Område ("A1: A4"). KopieraOmråde ("C1"). PasteSpecialOmråde ("E1"). PasteSpecial xlPasteAllMergingConditionalFormats |