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 |