Automatické dopĺňanie vo VBA
Tento článok ukazuje, ako používať automatické dopĺňanie vo VBA.
Automatické dopĺňanie je vynikajúci nástroj v Exceli, keď sa údaje opakujú alebo ak sú sekvenčné (napríklad dni v týždni, dátumy, mesiace v roku atď.). Prvých pár buniek by sme normálne vyplnili požadovanými údajmi a potom pomocou funkcie Automatické dopĺňanie skopírovali požadované údaje do vybratého rozsahu.
To všetko je možné vykonať pomocou makra VBA.
Automatické dopĺňanie pomocou prírastkových čísel
Po prvé, v našom kóde môžeme deklarovať dve premenné rozsahu.
Výber1 je rozsah s údajmi, ktoré sa majú vyplniť automaticky - napríklad 1 a 2.
Selection2 je celé rozsah automatického dopĺňania, zahŕňa prvý rozsah plus medzery na automatické dopĺňanie.
Potom použijeme metódu AutoFill na vyplnenie druhého rozsahu výberu.
123456789101112131415 | Verejné Sub MyAutoFill ()'od easyexcel.net„Vyhláste premenné rozsahuDim selection1 As RangeDim selection2 As Range„Nastaviť premenné rozsahu = ich príslušné rozsahyNastaviť výber1 = list1.Rozsah ("A1: A2")Nastaviť výber2 = list1.Rozsah ("A1: A12")„Automatické dopĺňanieselection1.AutoFill Destination: = selection2Koniec pod |
Potom môžeme makro spustiť na Rozsah automatického dopĺňania (A1: A12).
Keď používame metódu automatického dopĺňania, môžeme vybrať typ automatického dopĺňania, ktoré chceme vykonávať. Vo vyššie uvedenom príklade sme neurčili typ automatického dopĺňania, čo znamená, že bol použitý predvolený typ - v tomto prípade zvýšenie čísel o 1 na každom riadku.
Automatické dopĺňanie pomocou mesiacov
Makro na automatické dopĺňanie pomocou mesiacov je takmer totožné s tým, ktoré sa používa na zvyšovanie čísel, s jednou dôležitou výnimkou.
1234567891011 | Verejné automatické dopĺňanie mesiacov ()'od easyexcel.net„Vyhláste premenné rozsahuDim selection1 As RangeDim selection2 As Range„Nastaviť premenné rozsahu = ich príslušné rozsahyNastaviť výber1 = list1.Rozsah ("A1: A2")Nastaviť výber2 = list1.Rozsah ("A1: A12")„Vyplňte mesiaceCieľ automatického dopĺňania: = výber2, typ: = xlFillMonthsKoniec pod |
Keď vyplníme typ automatického dopĺňania, zobrazí sa nám na výber niekoľko konštánt programu Excel. Ak to vynecháme, Excel určí typ údajov, ktoré sa majú vyplniť, z pôvodných uvedených údajov.
Excel dokáže zachytiť štandardné série, ako sú mesiace, dni v týždni a prírastkové čísla, bez toho, aby bolo potrebné použiť argument Typ.
Automatické dopĺňanie pomocou xlFillCopy
Ak chceme použiť makro AutoFill na skopírovanie informácií do nových buniek, môžeme použiť konštantu xlFillCopy.
1234567 | Verejné automatické dopĺňanie kópií ()Dim Selection1 As RangeDim Selection2 As RangeNastaviť výber1 = list1.rozsah ("A1: A1")Nastaviť výber 2 = list 1. Rozsah ("A1: A12")Selection1.AutoFill Destination: = Selection2, Type: = xlFillCopyKoniec pod |
Spustenie tohto makra by skopírovalo údaje v rozsahu („A1“) nadol do rozsahu („A1: A12“), a nie automatické vypĺňanie buniek v nasledujúcich mesiacoch od „januára“.
Automatické dopĺňanie pomocou xlFlashFill
Keď potrebujeme v Exceli previesť text na stĺpce, môžeme buď použiť možnosť textu na stĺpce, alebo môžeme použiť možnosť s názvom Flash Fill. To je vo VBA veľmi užitočné.
Vezmite si napríklad tieto údaje:
Do bunky B2 môžeme napísať priezvisko „Tolley“ a potom pomocou makra Flashfill vyplniť ostatné údaje.
1234567 | Sub FlashFill ()Dim Selection1 As RangeDim Selection2 As RangeNastaviť výber 1 = rozsah ("B2: B2")Nastaviť výber 2 = rozsah ("B2: B15")Selection1.AutoFill Cieľ: = Selection2, Typ: = xlFlashFillKoniec pod |
Potom to môžeme zopakovať, čím získame zostávajúce údaje v stĺpcoch C, D a E.
1234567891011 | Nastaviť výber 1 = rozsah ("C2: C2")Nastaviť výber 2 = rozsah ("C2: C15")Selection1.AutoFill Cieľ: = Selection2, Typ: = xlFlashFillNastaviť výber 1 = rozsah ("D2: D2")Nastaviť výber 2 = rozsah ("D2: D15")Selection1.AutoFill Cieľ: = Selection2, Typ: = xlFlashFillNastaviť výber 1 = rozsah ("E2: E2")Nastaviť výber 2 = rozsah ("E2: E15")Selection1.AutoFill Cieľ: = Selection2, Typ: = xlFlashFill |
Každý stĺpec sa potom vyplní príslušnými údajmi na základe hodnoty v riadku 2.