VBA Value Paste & PasteSpecial

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

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave