VBA Value Paste & PasteSpecial

Denne opplæringen viser deg hvordan du bruker PasteSpecial i VBA til å lime inn bare visse celleegenskaper (eks. Verdier, formater)

Når du kopierer og limer inn en celle i Excel, kopierer og limer du inn alle cellens egenskaper: verdier, formater, formler, tallformatering, grenser osv.:

I stedet kan du "Lim inn spesiell" for bare å lime inn bestemte celleegenskaper. I Excel får du tilgang til Lim inn -menyen med snarveien CTRL + ALT + V (etter kopiering av en celle):

Her kan du se alle kombinasjonene av celleegenskaper du kan lime inn.

Hvis du spiller inn en makro mens du bruker Lim inn spesialmeny, kan du ganske enkelt bruke den genererte koden. Dette er ofte den enkleste måten å bruke VBA til å lime inn spesial.

Lim inn verdier

Lim inn verdier limer bare inn “verdien” i cellen. Hvis cellen inneholdt en formel, limer limverdier inn formelresultatet.

Denne koden vil kopiere og lime inn verdier for en enkelt celle i det samme regnearket:

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

Kopier og verdi lim inn på et annet ark

Dette eksemplet vil kopiere og lime inn verdier for enkeltceller i forskjellige regneark

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

Disse eksemplene vil kopiere og lime inn verdier for en rekke celler:

Kopier og verdi lim inn områder

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

Kopier og verdi lim inn kolonner

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

Kopier og verdi lim inn rader

12 Rader (1) .KopiRader (2) .PasteSpecial Paste: = xlPasteValues

Lim inn verdier og tallformater

Liming av verdier limer bare inn celleverdien. Ingen formatering limes inn, inkludert tallformatering.

Ofte vil du sannsynligvis også inkludere tallformateringen når du limer inn verdier, slik at verdiene forblir formaterte. La oss se på et eksempel.

Her vil vi verdimasse en celle som inneholder en prosentandel:

12 Ark ("Ark1"). Kolonner ("D"). KopiArk ("Ark2"). Kolonner ("B"). PasteSpecial Paste: = xlPasteValues

Legg merke til hvordan prosentvis tallformatering går tapt, og i stedet vises en slurvet desimalverdi.

La oss i stedet bruke Lim inn verdier og tallformater:

12 Ark ("Ark1"). Kolonner ("D"). KopiArk ("Ark2"). Kolonner ("B"). PasteSpecial Paste: = xlPasteValuesAndNumberFormats

Nå kan du se at tallformateringen også er limt inn, og beholder prosentformatet.

.Verdi i stedet for .Lim inn

I stedet for å lime inn verdier, kan du bruke Value -egenskapen til Range -objektet:

Dette vil sette A2s celleverdi lik B2s celleverdi

1 Område ("A2"). Verdi = Område ("B2"). Verdi

Du kan også angi et celleområde som er lik en enkelt celles verdi:

1 Område ("A2: C5"). Verdi = Område ("A1"). Verdi

eller et celleområde som er lik et annet celleområde av identisk størrelse:

1 Område ("B2: D4"). Verdi = Område ("A1: C3"). Verdi

Det er mindre å skrive for å bruke Value -egenskapen. Også, hvis du vil bli dyktig med Excel VBA, bør du være kjent med å jobbe med Value -egenskapen til celler.

Celleverdi vs. verdi2 -eiendom

Teknisk sett er det bedre å bruke Value2 -egenskapen til en celle. Value2 er litt raskere (dette er bare viktig med ekstremt store beregninger), og Value -egenskapen kan gi deg et avkortet resultat av cellen som er formatert som valuta eller dato. Imidlertid bruker 99%+ av koden jeg har sett .Value og ikke .Value2. Jeg personlig bruker ikke .Value2, men du bør være oppmerksom på at den eksisterer.

1 Område ("A2"). Verdi2 = Område ("B2"). Verdi2

Copy Paste Builder

Vi har laget en "Copy Paste Code Builder" som gjør det enkelt å generere VBA -kode for å kopiere (eller klippe) og lime inn celler. Byggherren er en del av vår VBA-tillegg: AutoMacro.

AutoMacro inneholder også mange andre Kodegeneratorer, en omfattende Kodebibliotek, og kraftig Kodingsverktøy.

Lim inn spesial - Formater og formler

I tillegg til Limverdier, er de vanligste Lim -spesialalternativene Limformater og Limformler

Lim inn formater

Lim inn formater lar deg lime inn all celleformatering.

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

Lim inn formler

Lim inn formler limer bare inn celleformlene. Dette er også ekstremt nyttig hvis du vil kopiere celleformler, men ikke vil kopiere cellebakgrunnsfarger (eller annen celleformatering).

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

Lim inn formler og tallformater

I likhet med Lim inn verdier og tallformater ovenfor, kan du også kopiere og lime inn tallformater sammen med formler

Her vil vi kopiere en celleformel med kun regnskapsnummerformatering og lime inn formler.

12 Ark ("Ark1"). Område ("D3"). KopiArk ("Ark2"). Område ("D3"). Lim inn Spesial xlPasteFormulas

Legg merke til hvordan tallformateringen går tapt, og i stedet vises en slurvet ikke-avrundet verdi i stedet.

La oss i stedet bruke Lim inn formler og tallformater:

12 Ark ("Ark1"). Område ("D3"). KopiArk ("Ark2"). Område ("D3"). Lim inn Spesial xlPasteFormulasAndNumberFormats

Nå kan du se at tallformateringen også er limt inn, og vedlikeholder regnskapsformatet.

Lim inn spesial - Transponer og hopp over blanke

Lim inn spesial - Transponer

Paste Special Transpose lar deg kopiere og lime inn celler som endrer retning fra topp-bunn til venstre-høyre (eller vis-a-versa):

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

Lim inn spesial - Hopp over blanks

Skip blanks er et spesialtilpasset lim som ikke ser ut til å bli brukt så ofte som det burde være. Den lar deg kopiere bare ikke-tomme celler når du kopierer og limer inn. Så tomme celler blir ikke kopiert.

I dette eksemplet nedenfor. Vi kopierer kolonne A, limer inn vanlig i kolonne B og hopper over blank lim i kolonne C. Du kan se at de tomme cellene ikke ble limt inn i kolonne C i bildet nedenfor.

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

Andre lim inn spesielle alternativer

Lim inn spesiell - Kommentarer

1 Ark ("Ark1"). Område ("A1"). Kopieringsark ("Ark1"). Område ("E1"). Lim inn Spesial xlPasteComments

Lim inn spesial - Validering

12 Ark ("Ark1"). Område ("A1: A4"). KopiArk ("Ark1"). Område ("B1: B4"). Lim inn Spesial xlPasteValidation

Lim inn spesial - alt ved hjelp av kildetema

123 Arbeidsbøker (1). Ark ("Ark1"). Område ("A1: A2"). KopierArbeidsbøker (2). Ark ("Ark1"). Område ("A1"). Lim innArbeidsbøker (2). Ark ("Ark1"). Område ("B1"). PasteSpecial xlPasteAllUsingSourceTheme

Lim inn spesialtilbud - alle unntatt grenser

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

PasteSpecial - Kolonnebredder

En personlig favoritt av meg. PasteSpecial Column Widths vil kopiere og lime inn bredden på kolonner.

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

PasteSpecial - All MergingConditionalFormats

123 Område ("A1: A4"). KopierOmråde ("C1"). PasteSpecialOmråde ("E1"). PasteSpecial xlPasteAllMergingConditionalFormats

wave wave wave wave wave