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 |