Tabuľky VBA a ListObjects

Tento tutoriál ukáže, ako pracovať s tabuľkami a ListObjects vo VBA.

Tabuľky VBA a ListObjects

Tabuľky sú jednou z najužitočnejších a najsilnejších funkcií Excelu. V tomto návode sa pozrieme na to, ako pomocou VBA vytvoriť tabuľku, pridať do tabuľky jednoduché triedenie, filtrovať ju a vykonávať ďalšie úlohy súvisiace s tabuľkou.

Vytvorte tabuľku pomocou VBA

Metóda ListObjects.Add môže pridať tabuľku do pracovného hárka na základe rozsahu v tomto pracovnom hárku. Máme rozsah uvedený v ($ A $ 1: $ B $ 8) na pracovnom hárku s názvom Sheet1.

Nasledujúci kód pridá do vášho pracovného hárka tabuľku s názvom Tabuľka1 na základe rozsahu ($ A $ 1: $ B $ 8) pomocou predvoleného štýlu tabuľky:

123456 Sub CreateTableInExcel ()ActiveWorkbook.Sheets ("Sheet1"). ListObjects.Add (xlSrcRange, Range ("$ A $ 1: $ B $ 8"),, xlYes) .Name = _"Stôl 1"Koniec pod

Výsledkom je:

Vloženie stĺpca na koniec tabuľky pomocou VBA

Na pridanie stĺpca na koniec tabuľky môžete použiť metódu ListColumns.Add. Naša tabuľka s názvom Tabuľka1 je zobrazená nižšie.

Stĺpec môžete do tabuľky pridať pomocou nasledujúceho kódu, ktorý vždy pridá stĺpec na koniec tabuľky:

12345 Sub AddColumnToTheEndOfTheTable ()ActiveWorkbook.Sheets ("Sheet1"). ListObjects ("Table1"). ListColumns.AddKoniec pod

Výsledkom je:

Vloženie riadka do spodnej časti tabuľky pomocou VBA

Na pridanie riadka do spodnej časti tabuľky môžete použiť metódu ListRows.Add. Naša tabuľka s názvom Tabuľka1 je zobrazená nižšie.

Nasledujúci kód vždy pridá riadok do spodnej časti tabuľky.

12345 Sub AddRowToTheBottomOfTheTable ()ActiveSheet.ListObjects ("Tabuľka1"). ListRows.AddKoniec pod

Výsledkom je:

Pridanie jednoduchého triedenia pomocou VBA

Tabuľku môžete triediť pomocou VBA. Naša tabuľka s názvom Tabuľka1 je zobrazená nižšie a pomocou VBA môžeme zoradiť stĺpec predaja od najnižšieho po najvyšší.

Nasledujúci kód zoradí stĺpce Predaj vo vzostupnom poradí.

12345678910111213141516171819 Sub SimpleSortOnTheTable ()Rozsah („Tabuľka1 [[#Hlavičky], [Predaj]]“). VyberteActiveWorkbook.Worksheets ("Sheet1"). ListObjects ("Table1"). Sort.SortFields.ClearActiveWorkbook.Worksheets ("Sheet1"). ListObjects ("Table1"). Sort.SortFields.Add _Kľúč: = Rozsah ("Tabuľka1 [[#Všetko], [Predaj]]"), SortOn: = xlSortOnValues, Poradie: = _xlAscending, DataOption: = xlSortNormalS ActiveWorkbook.Worksheets ("Sheet1"). ListObjects ("Table1"). Zoradiť.Header = xlÁno.MatchCase = False.Orientácia = xlTopToBottom.Trieda = xlPinYin.PoužiťUkončiť sKoniec pod

Výsledkom je:

Filtrujte tabuľku pomocou VBA

Tabuľku programu Excel môžete filtrovať aj pomocou jazyka VBA. Máme tabuľku s názvom Tabuľka1 a chceli by sme tabuľku filtrovať tak, aby sa zobrazovali iba tržby vyššie ako 1 500.

Môžeme použiť metódu Autofilter, ktorá má päť voliteľných parametrov. Pretože by sme chceli filtrovať stĺpec Predaj, ktorý je druhým stĺpcom, nastavíme pole na 2, a používame parameter operátora xlAnd, ktorý sa používa pre dátumy a čísla.

123456 Sub SimpleFilter ()ActiveWorkbook.Sheets ("Sheet1"). ListObjects ("Table1"). Range.AutoFilter Field: = 2, Criteria1: = _"> 1500", operátor: = xlAndKoniec pod

Výsledkom je:

Vymažte filter metódou ShowAllData vo VBA

Ak chcete vymazať filter, môžete pristupovať k metóde ShowAllData triedy hárku. Ak chcete vymazať filtre tabuľky, musíte najskôr vybrať bunku v tabuľke, čo môžete urobiť vo VBA.

Metóda ShowAllData vygeneruje chybu, ak nepoužíva podmienenú logiku na kontrolu, či bol v pracovnom hárku použitý filter. Nasledujúci kód vám ukáže, ako to urobiť:

123456789 PodúčtovanieTheFilter ()Rozsah („Tabuľka1 [[#Hlavičky], [Predaj]]“). VyberteAk ActiveWorkbook.Worksheets ("Sheet1"). FilterMode = True ThenActiveSheet.ShowAllDataKoniec AkKoniec pod

Vymažte všetky filtre z tabuľky programu Excel

K metóde ShowAllData triedy ListObject máte prístup bez toho, aby ste museli najskôr vybrať bunku v tabuľke. Nasledujúci kód vám ukáže, ako to urobiť:

123 Sub ClearAllTableFilters ()ActiveWorkbook.Worksheets ("Sheet1"). ListObjects ("Table1"). AutoFilter.ShowAllDataKoniec pod

Odstránenie riadka pomocou VBA

Riadok v databáze vašej tabuľky môžete odstrániť pomocou metódy ListRows.Delete. Pomocou čísla riadka musíte určiť, ktorý riadok je. Máme nasledujúcu tabuľku s názvom Tabuľka1.

Povedzme, že ste chceli odstrániť druhý riadok v databáze vašej tabuľky, nasledujúci kód by vám to umožnil:

12345 Sub DeleteARow ()ActiveWorkbook.Worksheets ("Sheet1"). ListObjects ("Table1"). ListRows (2) .DeleteKoniec pod

Výsledkom je:

Odstránenie stĺpca pomocou VBA

Stĺpec môžete z tabuľky odstrániť pomocou metódy ListColumns.Delete. Nasledujúca tabuľka s názvom Tabuľka1 je uvedená nižšie:

Na odstránenie prvého stĺpca by ste použili nasledujúci kód:

12345 Podradený stĺpec AC ()ActiveWorkbook.Worksheets ("Sheet1"). ListObjects ("Table1"). ListColumns (1) .DeleteKoniec pod

Výsledkom je:

Konvertovanie tabuľky späť na rozsah vo VBA

Tabuľku môžete previesť späť na normálny rozsah pomocou VBA. Nasledujúci kód ukazuje, ako previesť tabuľku s názvom Table1 späť na rozsah:

12345 SubkonvertovanieATableBackToANormalRange ()ActiveWorkbook.Sheets ("Sheet1"). ListObjects ("Table1"). UnlistKoniec pod

Pridanie páskovaných stĺpcov a formátovanie do všetkých tabuliek v hárku pomocou jazyka VBA

K všetkým tabuľkám v pracovnom hárku máte prístup pomocou kolekcie ListObjects. V nižšie uvedenom hárku máme dve tabuľky a chceli by sme do oboch tabuliek naraz pridať pruhovaný stĺpček a pomocou VBA zmeniť písmo dátovej sekcie oboch tabuliek na tučné.

12345678910111213 SubAddingBandedColumns ()Dim tbl ako ListObjectDim sht As ako pracovný listNastaviť sht = ThisWorkbook.ActiveSheetZa každý tbl v sht.ListObjectstbl.ShowTableStyleColumnStripes = Pravdatbl.DataBodyRange.Font.Bold = PravdaĎalej tblKoniec pod

Výsledkom je:

Vytvorenie tabuľky v programe Access v jazyku VBA pomocou DoCmd.RunSQL

Jeden z hlavných spôsobov vytvorenia tabuľky v Accesse vo VBA je použitie metódy DoCmd.RunSQL na spustenie akčného dotazu s príkazom SQL.

V našom vzorovom formulári máme tlačidlo a keď klikneme na tlačidlo, chceli by sme vytvoriť tabuľku s názvom ProductsTable s dvoma poliami alebo stĺpcami, jedno by bolo poľom primárneho kľúča s názvom ProductsID a druhým poľom s názvom Predaj.

Na vytvorenie tejto tabuľky by sme použili nasledujúci kód:

123456 Private Sub cmdCreateProductsTable_Click ()DoCmd.RunSQL "CREATE TABLE ProductsTable" _& "(ProductID INTEGER PRIMARY KEY, Sales Integer);"Koniec pod

Výsledkom je:

Filtrovanie tabuľky v programe Access pomocou VBA

Tabuľku v Accesse môžete filtrovať aj pomocou metódy DoCmd.ApplyFilter. V Accesse máme nižšie uvedenú našu jednoduchú tabuľku s názvom ProductsTable.

Radi by sme stlačili toto tlačidlo na našom formulári a potom sa zobrazili iba predaje vyššie ako 1 500.

Na tento účel by sme použili nasledujúci kód:

1234567 Súkromný podradený cmdFilter_Click ()DoCmd.OpenTable "ProductsTable"DoCmd.ApplyFilter, "[Predaj]> 1500"Koniec pod

Výsledkom je:

Vám pomôže rozvoju miesta, zdieľať stránku s priateľmi

wave wave wave wave wave