Tento tutoriál vám ukáže, ako používať PasteSpecial vo VBA na vkladanie iba určitých vlastností buniek (napr. Hodnoty, formáty)
V programe Excel pri kopírovaní a prilepení bunky skopírujete a prilepíte všetky vlastnosti bunky: hodnoty, formáty, vzorce, formátovanie čísel, orámovanie atď.:
Namiesto toho môžete „Prilepiť špeciálne“ a prilepiť iba určité vlastnosti bunky. V programe Excel je k ponuke Prilepiť špeciálne prístup pomocou skratky CTRL + ALT + V (po skopírovaní bunky):
Tu môžete vidieť všetky kombinácie vlastností buniek, ktoré môžete prilepiť.
Ak zaznamenáte makro pri použití ponuky Prilepiť špeciálne, môžete jednoducho použiť vygenerovaný kód. Toto je často najľahší spôsob, ako použiť VBA na prilepenie špeciálu.
Prilepiť hodnoty
Vložiť hodnoty prilepí iba „hodnotu“ bunky. Ak bunka obsahovala vzorec, prilepením hodnôt sa prilepí výsledok vzorca.
Tento kód skopíruje a prilepí hodnoty pre jednu bunku na rovnakom pracovnom hárku:
12 | Rozsah („A1“). SkopírujteRozsah („B1“). PasteSpecial Paste: = xlPasteValues |
Skopírujte a oceňte prilepenie na iný hárok
Tento príklad bude kopírovať a prilepiť hodnoty pre jednotlivé bunky v rôznych pracovných hárkoch
12 | Listy („List1“). Rozsah („A1“). KopírovaťTabuľky („List2“). Rozsah („B1“). PasteSpecial Paste: = xlPasteValues |
Tieto príklady skopírujú a prilepia hodnoty pre rozsah buniek:
Rozsahy kopírovania a hodnoty prilepenia
12 | Rozsah („A1: B3“). KopírovaťRozsah („C1“). PasteSpecial Paste: = xlPasteValues |
Skopírujte a oceňte stĺpce, ktoré prilepíte
12 | Stĺpce („A“). SkopírujteStĺpce („B“). PasteSpecial Paste: = xlPasteValues |
Skopírujte a ohodnoťte riadky
12 | Riadky (1). SkopírujteRiadky (2). Pasta Špeciálna pasta: = xlPasteValues |
Prilepte hodnoty a formáty čísel
Prilepením hodnôt sa prilepí iba hodnota bunky. Nie je vložené žiadne formátovanie vrátane formátovania čísel.
Pri prilepovaní hodnôt budete pravdepodobne často chcieť zahrnúť aj formátovanie čísel, aby vaše hodnoty zostali naformátované. Pozrime sa na príklad.
Tu oceníme vloženie bunky obsahujúcej percento:
12 | Tabuľky („List1“). Stĺpce („D“). KopírovaťTabuľky („List2“). Stĺpce („B“). PasteSpecial Paste: = xlPasteValues |
Všimnite si, ako sa stratí formátovanie percentuálneho čísla, a namiesto toho sa zobrazí nedbalá desatinná hodnota.
Namiesto toho použijeme formáty Vložiť hodnoty a čísla:
12 | Tabuľky („List1“). Stĺpce („D“). KopírovaťTabuľky („List2“). Stĺpce („B“). PasteSpecial Paste: = xlPasteValuesAndNumberFormats |
Teraz môžete vidieť, ako je prilepené aj formátovanie čísel, pričom sa zachová percentuálny formát.
.Hodnota namiesto .Paste
Namiesto vkladania hodnôt môžete použiť vlastnosť Value objektu Range:
Hodnota bunky A2 sa tak nastaví na hodnotu bunky B2
1 | Rozsah ("A2"). Hodnota = rozsah ("B2"). Hodnota |
Môžete tiež nastaviť rozsah buniek, ktorý sa rovná hodnote jednej bunky:
1 | Rozsah („A2: C5“). Hodnota = rozsah („A1“). Hodnota |
alebo rozsah buniek sa rovná inému rovnako veľkému rozsahu buniek:
1 | Rozsah („B2: D4“). Hodnota = rozsah („A1: C3“). Hodnota |
Používanie vlastnosti Value je menej náročné na písanie. Tiež, ak sa chcete naučiť ovládať Excel VBA, mali by ste byť oboznámení s prácou s vlastnosťou Hodnota buniek.
Vlastnosť hodnota bunky vs. hodnota2
Technicky je lepšie použiť vlastnosť bunky Value2. Hodnota2 je o niečo rýchlejšia (na tom záleží len pri extrémne veľkých výpočtoch) a vlastnosť Hodnota vám môže poskytnúť skrátený výsledok, pretože bunka je naformátovaná ako mena alebo dátum. Avšak viac ako 99%kódu, ktorý som videl, používa .Value a nie .Value2. Osobne nepoužívam .Value2, ale mali by ste vedieť, že existuje.
1 | Rozsah ("A2"). Hodnota2 = rozsah ("B2"). Hodnota2 |
Kopírovať Vložiť Builder
Vytvorili sme „Copy Paste Code Builder“, ktorý uľahčuje generovanie kódu VBA na kopírovanie (alebo vystrihovanie) a vkladanie buniek. Staviteľ je našou súčasťou Doplnok VBA: AutoMacro.
AutoMacro obsahuje aj mnoho ďalších Generátory kódu, rozsiahly Knižnica kódov, a mocný Kódovacie nástroje.
Prilepiť špeciálne - formáty a vzorce
Okrem hodnôt prilepenia sú najbežnejšími možnosťami prilepenia špeciálne prilepenie formátov a prilepenie vzorcov
Prilepiť formáty
Vložiť formáty vám umožňuje prilepiť všetky formátovania buniek.
12 | Rozsah („A1: A10“). KopírovaťRozsah ("B1: B10"). PasteSpecial Paste: = xlPasteFormats |
Prilepiť vzorce
Prilepením vzorcov sa prilepia iba vzorce buniek. Je to tiež veľmi užitočné, ak chcete kopírovať vzorce buniek, ale nechcete kopírovať farby pozadia buniek (alebo iné formátovanie buniek).
12 | Rozsah („A1: A10“). KopírovaťRozsah („B1: B10“). Špeciálna pasta na vloženie: = xlPasteFormulas |
Prilepte vzorce a formáty čísel
Podobne ako vyššie uvedené Vložiť hodnoty a číselné formáty, môžete spolu so vzorcami kopírovať a vkladať aj číselné formáty
Tu skopírujeme vzorec bunky iba s formátovaním účtovných čísel a prilepením vzorcov.
12 | Listy („List1“). Rozsah („D3“). KopírovaťListy („List2“). Rozsah („D3“). PasteSpecial xlPasteFormulas |
Všimnite si, ako sa stratilo formátovanie čísla, a namiesto toho sa zobrazí nedbalá nezaokrúhlená hodnota.
Namiesto toho použijeme formát Vložiť vzorce a čísla:
12 | Listy („List1“). Rozsah („D3“). KopírovaťHárky („List2“). Rozsah („D3“). VložiťŠpeciálne xlPasteFormulasAndNumberFormats |
Teraz môžete vidieť, ako je prilepené aj formátovanie čísel, pričom zostane zachovaný formát Účtovníctvo.
Prilepiť špeciálne - transponovať a preskočiť medzery
Prilepiť špeciálne - transponovať
Vložiť špeciálnu transpozíciu vám umožňuje kopírovať a prilepovať bunky so zmenou orientácie zhora nadol na zľava doprava (alebo naopak):
12 | Listy („List1“). Rozsah („A1: A5“). KopírovaťTabuľky („List1“). Rozsah („B1“). PasteSpecial Transpose: = True |
Prilepiť špeciálne - preskočiť medzery
Vynechať medzery je špeciálna možnosť na vloženie, ktorá sa nezdá byť používaná tak často, ako by mala. Pri kopírovaní a vkladaní vám umožňuje kopírovať iba prázdne bunky. Prázdne bunky sa teda nekopírujú.
V tomto príklade nižšie. Skopírujeme stĺpec A, urobíme pravidelnú pastu do stĺpca B a vynecháme prázdne položky, ktoré vložíme do stĺpca C. Na obrázku nižšie môžete vidieť, že prázdne bunky neboli vložené do stĺpca C.
123 | Listy („List1“). Rozsah („A1: A5“). KópiaTabuľky („List1“). Rozsah („B1“). PasteSpecial SkipBlanks: = FalseTabuľky („List1“). Rozsah („C1“). PasteSpecial SkipBlanks: = True |
Ďalšie prilepenie špeciálnych možností
Prilepiť špeciálne - komentáre
1 | Listy („List1“). Rozsah („A1“). Kopírovať listy („List1“). Rozsah („E1“). PasteSpecial xlPasteComments |
Prilepiť špeciálne - overenie
12 | Listy („List1“). Rozsah („A1: A4“). KopírovaťTabuľky („List1“). Rozsah („B1: B4“). PasteSpecial xlPasteValidation |
Prilepiť špeciálne - všetko pomocou témy zdroja
123 | Zošity (1). Listy („List1“). Rozsah („A1: A2“). KopírovaťZošity (2). Listy („List1“). Rozsah („A1“). PasteSpecialZošity (2). Listy („List1“). Rozsah („B1“). PasteSpecial xlPasteAllUsingSourceTheme |
Prilepiť špeciálne - všetky okrem okrajov
123 | Rozsah („B2: C3“). SkopírujteRozsah („E2“). PasteSpecialRozsah („H2“). PasteSpecial xlPasteAllExceptBorders |
PasteSpecial - Šírky stĺpcov
Môj osobný favorit. PasteSpecial Šírky stĺpcov skopírujú a prilepia šírku stĺpcov.
123 | Rozsah („A1: A2“). SkopírujteRozsah („C1“). VložiťŠpeciálneRozsah ("E1"). PasteSpecial xlPasteColumnWidths |
PasteSpecial - všetky zlučujúce sapodmienečné formáty
123 | Rozsah („A1: A4“). KopírovaťRozsah („C1“). PasteSpecialRozsah („E1“). PasteSpecial xlPasteAllMergingConditionalFormats |