VBA Value Paste & PasteSpecial

Tento tutoriál vám ukáže, jak pomocí PasteSpecial ve VBA vložit pouze určité vlastnosti buněk (např. Hodnoty, formáty)

Když v aplikaci Excel zkopírujete a vložíte buňku, zkopírujete a vložíte všechny vlastnosti buňky: hodnoty, formáty, vzorce, formátování čísel, ohraničení atd.:

Místo toho můžete „Vložit jinak“ a vložit pouze určité vlastnosti buňky. V aplikaci Excel je k nabídce Vložit jinak přístupné pomocí klávesové zkratky CTRL + ALT + V (po zkopírování buňky):

Zde můžete vidět všechny kombinace vlastností buněk, které můžete vložit.

Pokud zaznamenáte makro při používání nabídky Vložit jinak, můžete jednoduše použít vygenerovaný kód. Toto je často nejjednodušší způsob, jak pomocí VBA vložit speciální.

Vložit hodnoty

Vložit hodnoty pouze vloží „hodnotu“ buňky. Pokud buňka obsahovala vzorec, Vložit hodnoty vloží výsledek vzorce.

Tento kód zkopíruje a vloží hodnoty pro jednu buňku na stejném listu:

12 Rozsah („A1“). ZkopírujteRozsah ("B1"). PasteSpecial Paste: = xlPasteValues

Zkopírujte a vložte hodnotu na jiný list

Tento příklad zkopíruje a vloží hodnoty pro jednotlivé buňky na různých listech

12 Listy („List1“). Rozsah („A1“). KopírovatListy („List2“). Rozsah („B1“). PasteSpecial Paste: = xlPasteValues

Tyto příklady zkopírují a vloží hodnoty pro rozsah buněk:

Rozsahy kopírování a hodnoty Vložit

12 Rozsah („A1: B3“). ZkopírujteRozsah („C1“). PasteSpecial Paste: = xlPasteValues

Zkopírujte a ohodnoťte sloupce

12 Sloupce („A“). ZkopírujteSloupce („B“). PasteSpecial Paste: = xlPasteValues

Zkopírujte a vložit řádky

12 Řádky (1). ZkopírujteŘádky (2). PastSpecial Paste: = xlPasteValues

Vložit hodnoty a formáty čísel

Vložením hodnot se vloží pouze hodnota buňky. Není vloženo žádné formátování, včetně formátování čísel.

Když často vkládáte hodnoty, pravděpodobně budete chtít zahrnout také formátování čísel, aby vaše hodnoty zůstaly formátované. Podívejme se na příklad.

Zde oceníme vložení buňky obsahující procento:

12 Listy („List1“). Sloupce („D“). KopírovatListy („List2“). Sloupce („B“). PasteSpecial Paste: = xlPasteValues

Všimněte si, jak je ztraceno formátování procentuálního čísla a místo toho je zobrazena nedbalá desetinná hodnota.

Místo toho použijme formát Vložit hodnoty a čísla:

12 Listy („List1“). Sloupce („D“). KopírovatListy („List2“). Sloupce („B“). PasteSpecial Paste: = xlPasteValuesAndNumberFormats

Nyní můžete vidět, že je také vloženo formátování čísel, přičemž je zachován procentuální formát.

.Value místo .Paste

Místo vkládání hodnot můžete použít vlastnost Value objektu Range:

Tím nastavíte hodnotu buňky A2 na hodnotu buňky B2

1 Rozsah („A2“). Hodnota = Rozsah („B2“). Hodnota

Můžete také nastavit rozsah buněk, který se rovná hodnotě jedné buňky:

1 Rozsah ("A2: C5"). Hodnota = rozsah ("A1"). Hodnota

nebo rozsah buněk rovný jinému stejně velkému rozsahu buněk:

1 Rozsah ("B2: D4"). Hodnota = rozsah ("A1: C3"). Hodnota

Používání vlastnosti Value je méně náročné na psaní. Pokud se chcete naučit pracovat s Excelem VBA, měli byste být obeznámeni s prací s vlastností Value buněk.

Vlastnost Hodnota buňky vs. Hodnota2

Technicky je lepší použít vlastnost Value2 buňky. Hodnota2 je o něco rychlejší (na tom záleží jen u extrémně velkých výpočtů) a vlastnost Value vám může poskytnout zkrácený výsledek, protože buňka je formátována jako měna nebo datum. Nicméně 99%+ kódu, který jsem viděl, používá .Value a ne .Value2. Osobně nepoužívám .Value2, ale měli byste vědět, že existuje.

1 Rozsah ("A2"). Hodnota2 = rozsah ("B2"). Hodnota2

Kopírovat Tvůrce Vložit

Vytvořili jsme „Copy Paste Code Builder“, který usnadňuje generování kódu VBA pro kopírování (nebo vyjímání) a vkládání buněk. Stavitel je naší součástí Doplněk VBA: AutoMacro.

AutoMacro obsahuje také mnoho dalších Generátory kódu, rozsáhlý Knihovna kódů, a mocný Nástroje pro kódování.

Vložit jinak - formáty a vzorce

Kromě Vložit hodnoty jsou nejběžnějšími možnostmi Vložit speciální možnosti Vložit formáty a Vložit vzorce

Vložit formáty

Vložit formáty umožňuje vložit veškeré formátování buněk.

12 Rozsah („A1: A10“). ZkopírujteRozsah ("B1: B10"). PasteSpecial Paste: = xlPasteFormats

Vložit vzorce

Vložit vzorce vloží pouze vzorce buněk. To je také velmi užitečné, pokud chcete kopírovat vzorce buněk, ale nechcete kopírovat barvy pozadí buněk (nebo jiné formátování buněk).

12 Rozsah („A1: A10“). ZkopírujteRozsah ("B1: B10"). PasteSpecial Paste: = xlPasteFormulas

Vložte vzorce a formáty čísel

Podobně jako výše uvedené Vložit hodnoty a formáty čísel můžete také kopírovat a vkládat formáty čísel společně se vzorci

Zde zkopírujeme vzorec buňky pouze s formátováním účetních čísel a vložením vzorců.

12 Listy („List1“). Rozsah („D3“). KopírovatListy („List2“). Rozsah („D3“). PasteSpecial xlPasteFormulas

Všimněte si, jak je ztraceno formátování čísel, a místo toho je zobrazena nedbalá nezaokrouhlená hodnota.

Místo toho použijme formáty Vložit vzorce a Čísla:

12 Listy („List1“). Rozsah („D3“). KopírovatListy („List2“). Rozsah („D3“). PasteSpecial xlPasteFormulasAndNumberFormats

Nyní můžete vidět, že je také vloženo formátování čísel a zachován formát účetnictví.

Vložit jinak - transponovat a přeskočit mezery

Vložit jinak - transponovat

Vložit speciální transpozici umožňuje kopírovat a vkládat buňky se změnou orientace shora dolů na zleva doprava (nebo naopak):

12 Listy („List1“). Rozsah („A1: A5“). KopírovatListy („List1“). Rozsah („B1“). PasteSpecial Transpose: = True

Vložit jinak - přeskočit mezery

Přeskočit mezery je speciální možnost vložení, která se nezdá být používána tak často, jak by měla. Při kopírování a vkládání umožňuje kopírovat pouze neprázdné buňky. Prázdné buňky se tedy nekopírují.

V tomto příkladu níže. Zkopírujeme sloupec A, provedeme pravidelné vložení do sloupce B a vynecháme prázdné vložení do sloupce C. Na obrázku níže můžete vidět, že prázdné buňky nebyly vloženy do sloupce C.

123 Listy („List1“). Rozsah („A1: A5“). KopírovatListy („List1“). Rozsah („B1“). PasteSpecial SkipBlanks: = FalseListy („List1“). Rozsah („C1“). PasteSpecial SkipBlanks: = True

Další možnosti vložení

Vložit jinak - komentáře

1 Listy („List1“). Rozsah („A1“). Kopírovat listy („List1“). Rozsah („E1“). PasteSpecial xlPasteComments

Vložit jinak - ověření

12 Listy („List1“). Rozsah („A1: A4“). KopírovatListy („List1“). Rozsah („B1: B4“). PasteSpecial xlPasteValidation

Vložit jinak - vše pomocí motivu zdroje

123 Sešity (1). Listy („List1“). Rozsah („A1: A2“). KopírovatSešity (2). Listy („List1“). Rozsah („A1“). VložitSpeciálníSešity (2). Listy („List1“). Rozsah („B1“). PasteSpecial xlPasteAllUsingSourceTheme

Vložit jinak - vše kromě hranic

123 Rozsah („B2: C3“). ZkopírujteRozsah („E2“). VložitSpeciálníRozsah („H2“). PasteSpecial xlPasteAllExceptBorders

PasteSpecial - Šířky sloupců

Můj osobní favorit. Vložit speciální šířky sloupců zkopíruje a vloží šířku sloupců.

123 Rozsah („A1: A2“). ZkopírujteRozsah („C1“). VložitSpeciálníRozsah ("E1"). PasteSpecial xlPasteColumnWidths

PasteSpecial - All MergingConditionalFormats

123 Rozsah ("A1: A4"). ZkopírujteRozsah („C1“). VložitSpeciálníRozsah ("E1"). PasteSpecial xlPasteAllMergingConditionalFormats

wave wave wave wave wave