VBA Value Paste & PasteSpecial

Denne vejledning viser dig, hvordan du bruger PasteSpecial i VBA til kun at indsætte visse celleegenskaber (f.eks. Værdier, formater)

Når du kopierer og indsætter en celle i Excel, kopierer og indsætter du alle cellens egenskaber: værdier, formater, formler, talformatering, grænser osv .:

I stedet kan du "indsætte special" for kun at indsætte visse celleegenskaber. I Excel kan du få adgang til menuen Indsæt særlig med genvejen CTRL + ALT + V (efter kopiering af en celle):

Her kan du se alle de kombinationer af celleegenskaber, du kan indsætte.

Hvis du optager en makro, mens du bruger menuen Indsæt særlig, kan du blot bruge den genererede kode. Dette er ofte den nemmeste måde at bruge VBA til at indsætte special.

Indsæt værdier

Indsæt værdier indsætter kun celleens "værdi". Hvis cellen indeholdt en formel, indsætter Paste Values ​​formelresultatet.

Denne kode kopierer og indsætter værdier for en enkelt celle i det samme regneark:

12 Område ("A1"). KopiOmråde ("B1"). PasteSpecial Paste: = xlPasteValues

Kopier og værdipasta ind på forskelligt ark

Dette eksempel kopierer og indsætter værdier for enkeltceller på forskellige regneark

12 Ark ("Ark1"). Område ("A1"). KopiArk ("Sheet2"). Område ("B1"). PasteSpecial Paste: = xlPasteValues

Disse eksempler kopierer og indsætter værdier for en række celler:

Kopier og indsæt værdier

12 Område ("A1: B3"). KopiOmråde ("C1"). PasteSpecial Paste: = xlPasteValues

Kopier og værdipasta kolonner

12 Kolonner ("A"). KopierKolonner ("B"). PasteSpecial Paste: = xlPasteValues

Kopier og sæt værdier ind

12 Rækker (1) .KopiRækker (2) .PasteSpecial Paste: = xlPasteValues

Indsæt værdier og talformater

Indsætningsværdier indsætter kun celleværdien. Ingen formatering indsættes, inklusive talformatering.

Ofte vil du sandsynligvis også inkludere talformateringen, når du indsætter værdier, så dine værdier forbliver formaterede. Lad os se på et eksempel.

Her vil vi værdi indsætte en celle indeholdende en procentdel:

12 Ark ("Ark1"). Kolonner ("D"). KopiSheets ("Sheet2"). Kolonner ("B"). PasteSpecial Paste: = xlPasteValues

Læg mærke til, hvordan procenttalets formatering går tabt, og i stedet vises en sjusket decimalværdi.

Lad os i stedet bruge formaterne Indsæt værdier og tal:

12 Ark ("Ark1"). Kolonner ("D"). KopiSheets ("Sheet2"). Kolonner ("B"). PasteSpecial Paste: = xlPasteValuesAndNumberFormats

Nu kan du se, at nummerformateringen også er indsat og bevarer procentformatet.

.Værdi i stedet for .Indsæt

I stedet for at indsætte værdier kan du bruge egenskaben Value for Range -objektet:

Dette sætter A2s celleværdi lig med B2s celleværdi

1 Område ("A2"). Værdi = Område ("B2"). Værdi

Du kan også indstille et celleområde, der svarer til en enkelt celles værdi:

1 Område ("A2: C5"). Værdi = Område ("A1"). Værdi

eller et cellecelle svarende til et andet celleinterval af samme størrelse:

1 Område ("B2: D4"). Værdi = Område ("A1: C3"). Værdi

Det er mindre at skrive for at bruge egenskaben Value. Hvis du vil blive dygtig til Excel VBA, bør du også være fortrolig med at arbejde med værdien egenskab af celler.

Celleværdi vs. Value2 -ejendom

Teknisk set er det bedre at bruge Value2 -egenskaben i en celle. Value2 er lidt hurtigere (dette er kun vigtigt med ekstremt store beregninger), og egenskaben Value kan give dig et afkortet resultat af cellen, der er formateret som valuta eller en dato. 99%+ af den kode, jeg har set, bruger imidlertid .Value og ikke .Value2. Jeg bruger personligt ikke .Value2, men du skal være opmærksom på, at den findes.

1 Område ("A2"). Værdi2 = Område ("B2"). Værdi2

Copy Paste Builder

Vi har oprettet en "Copy Paste Code Builder", der gør det let at generere VBA -kode til at kopiere (eller klippe) og indsætte celler. Byggeren er en del af vores VBA-tilføjelse: AutoMacro.

AutoMacro indeholder også mange andre Kodegeneratorer, en omfattende Kodebibliotekog kraftfuld Kodningsværktøjer.

Indsæt special - Formater og formler

Udover indsætningsværdier er de mest almindelige indsætningsmuligheder indsætningsformater og indsætningsformler

Indsæt formater

Indsæt formater giver dig mulighed for at indsætte al celleformatering.

12 Område ("A1: A10"). KopiOmråde ("B1: B10"). PasteSpecial Paste: = xlPasteFormats

Indsæt formler

Indsæt formler indsætter kun celleformlerne. Dette er også yderst nyttigt, hvis du vil kopiere celleformler, men ikke vil kopiere cellebaggrundsfarver (eller anden celleformatering).

12 Område ("A1: A10"). KopiOmråde ("B1: B10"). PasteSpecial Paste: = xlPasteFormulas

Indsæt formler og talformater

I lighed med Indsæt værdier og talformater ovenfor kan du også kopiere og indsætte talformater sammen med formler

Her kopierer vi en celleformel med kun formatering af regnskabstal og indsætter formler.

12 Ark ("Ark1"). Område ("D3"). KopiSheets ("Sheet2"). Range ("D3"). PasteSpecial xlPasteFormulas

Bemærk, hvordan talformateringen går tabt, og i stedet vises en sjusket ikke-afrundet værdi i stedet.

Lad os i stedet bruge formaterne Indsæt formler og tal:

12 Ark ("Ark1"). Område ("D3"). KopiSheets ("Sheet2"). Range ("D3"). PasteSpecial xlPasteFormulasAndNumberFormats

Nu kan du se, at nummerformateringen også er indsat og bevarer regnskabsformatet.

Indsæt special - Transponer og spring emner over

Indsæt special - Transponer

Paste Special Transpose giver dig mulighed for at kopiere og indsætte celler, der ændrer retning fra top-bund til venstre-højre (eller vis-a-versa):

12 Ark ("Ark1"). Område ("A1: A5"). KopiSheets ("Sheet1"). Range ("B1"). PasteSpecial Transpose: = True

Indsæt special - Spring emner over

Skip blanks er en pasta -speciel mulighed, der ikke ser ud til at blive brugt så ofte, som den burde være. Det giver dig mulighed for kun at kopiere ikke-tomme celler, når du kopierer og indsætter. Så tomme celler kopieres ikke.

I dette eksempel herunder. Vi kopierer kolonne A, laver en almindelig pasta i kolonne B og springer emner ind i kolonne C. Du kan se, at de tomme celler ikke blev indsat i kolonne C i billedet herunder.

123 Ark ("Ark1"). Område ("A1: A5"). KopiArk ("Ark1"). Område ("B1"). PasteSpecial SkipBlanks: = FalskSheets ("Sheet1"). Range ("C1"). PasteSpecial SkipBlanks: = True

Andre indsæt særlige muligheder

Indsæt special - Kommentarer

1 Ark ("Ark1"). Område ("A1"). Kopiark ("Ark1"). Område ("E1"). IndsætSpecial xlPasteComments

Indsæt special - Validering

12 Ark ("Ark1"). Område ("A1: A4"). KopiSheets ("Sheet1"). Range ("B1: B4"). PasteSpecial xlPasteValidation

Indsæt special - alt ved hjælp af kildetema

123 Arbejdsbøger (1). Ark ("Ark1"). Område ("A1: A2"). KopiArbejdsbøger (2). Ark ("Ark1"). Område ("A1"). Indsæt SærligtArbejdsbøger (2). Ark ("Ark1"). Område ("B1"). PasteSpecial xlPasteAllUsingSourceTheme

Indsæt special - alle undtagen grænser

123 Område ("B2: C3"). KopiOmråde ("E2"). PasteSpecialOmråde ("H2"). PasteSpecial xlPasteAllExceptBorders

PasteSpecial - Kolonnebredder

Min personlige favorit. PasteSpecial Column Widths kopierer og indsætter bredden på kolonner.

123 Område ("A1: A2"). KopiOmråde ("C1"). PasteSpecialOmråde ("E1"). PasteSpecial xlPasteColumnWidths

PasteSpecial - Alle sammenlægningskonditionelle formater

123 Område ("A1: A4"). KopiOmråde ("C1"). PasteSpecialOmråde ("E1"). IndsætSpecial xlPasteAllMergingConditionalFormats

wave wave wave wave wave