Tabelele VBA și ListObjects

Acest tutorial va arăta cum să lucrați cu Tables și ListObjects în VBA.

Tabelele VBA și ListObjects

Tabelele sunt una dintre cele mai utile și mai puternice caracteristici ale Excelului, în acest tutorial, vom trece în revistă modul de utilizare a VBA pentru a crea un tabel, vom adăuga o sortare simplă la un tabel, vom filtra un tabel și vom efectua alte sarcini legate de tabel.

Creați un tabel cu VBA

Metoda ListObjects.Add poate adăuga un tabel la o foaie de lucru, pe baza unui interval din foaia de lucru respectivă. Avem intervalul afișat în ($ A $ 1: $ B $ 8) pe o foaie de lucru numită Sheet1.

Următorul cod va adăuga un tabel, numit Table1 în foaia de lucru, pe baza intervalului ($ A $ 1: $ B $ 8) utilizând stilul de tabel implicit:

123456 Sub CreateTableInExcel ()ActiveWorkbook.Sheets ("Sheet1"). ListObjects.Add (xlSrcRange, Range ("$ A $ 1: $ B $ 8"),, xlYes) .Name = _"Tabelul 1"Sfârșitul Sub

Rezultatul este:

Inserarea unei coloane la sfârșitul tabelului cu VBA

Puteți utiliza metoda ListColumns.Add pentru a adăuga o coloană la sfârșitul tabelului. Tabelul nostru numit Tabelul 1 este prezentat mai jos.

Puteți adăuga o coloană în tabel folosind următorul cod, care va adăuga întotdeauna o coloană la sfârșitul tabelului:

12345 Sub AddColumnToTheEndOfTheTable ()ActiveWorkbook.Sheets ("Sheet1"). ListObjects ("Table1"). ListColumns.AddSfârșitul Sub

Rezultatul este:

Introducerea unui rând în partea de jos a tabelului cu VBA

Puteți utiliza metoda ListRows.Add pentru a adăuga un rând în partea de jos a tabelului. Tabelul nostru numit Tabelul 1 este prezentat mai jos.

Următorul cod va adăuga întotdeauna un rând în partea de jos a tabelului.

12345 Sub AddRowToTheBottomOfTheTable ()ActiveSheet.ListObjects ("Table1"). ListRows.AddSfârșitul Sub

Rezultatul este:

Adăugarea unui Sortare simplă cu VBA

Puteți sorta un tabel cu VBA. Avem tabelul numit Tabelul 1 prezentat mai jos și putem folosi VBA pentru a sorta Coloana de vânzări de la cea mai mică la cea mai mare.

Următorul cod va sorta coloana Vânzări în ordine crescătoare.

12345678910111213141516171819 Sub SimpleSortOnTheTable ()Interval („Tabel1 [[# Anteturi], [Vânzări]]”). SelectațiActiveWorkbook.Worksheets ("Sheet1"). ListObjects ("Table1"). Sort.SortFields.ClearActiveWorkbook.Worksheets ("Sheet1"). ListObjects ("Table1"). Sort.SortFields.Add _Cheie: = Interval ("Tabelul 1 [[# Toate], [Vânzări]]"), SortOn: = xlSortOnValues, Comandă: = _xlAscending, DataOption: = xlSortNormalCu ActiveWorkbook.Worksheets ("Sheet1"). ListObjects ("Table1"). Sortează.Header = xlDa.MatchCase = False.Orientation = xlTopToBottom.SortMethod = xlPinYin.AplicaSe termina cuSfârșitul Sub

Rezultatul este:

Filtrează un tabel cu VBA

De asemenea, puteți filtra un tabel Excel folosind VBA. Avem tabelul nostru numit Tabelul 1 și am dori să filtrăm tabelul astfel încât să fie afișate numai vânzările mai mari de 1500.

Putem folosi metoda Autofilter, care are cinci parametri opționali. Deoarece dorim să filtrăm coloana Vânzări care este a doua coloană, setăm câmpul la 2 și folosim parametrul operator xlAnd, care este utilizat pentru date și numere.

123456 Sub SimpleFilter ()ActiveWorkbook.Sheets ("Sheet1"). ListObjects ("Table1"). Range.AutoFilter Field: = 2, Criteria1: = _"> 1500", Operator: = xlAndSfârșitul Sub

Rezultatul este:

Ștergeți filtrul cu metoda ShowAllData în VBA

Puteți accesa Metoda ShowAllData a clasei Foaie de lucru pentru a șterge filtrul. Dacă doriți să ștergeți filtrele unui tabel, trebuie mai întâi să selectați o celulă din tabel, pe care o puteți face în VBA.

Metoda ShowAllData va genera o eroare dacă nu se folosește logica condițională pentru a verifica dacă a fost aplicat un filtru în foaia de lucru. Următorul cod vă arată cum să faceți acest lucru:

123456789 Sub ClearingTheFilter ()Interval ("Tabelul 1 [[# Anteturi], [Vânzări]]"). SelectațiDacă ActiveWorkbook.Worksheets ("Sheet1"). FilterMode = True AtunciActiveSheet.ShowAllDataEnd IfSfârșitul Sub

Ștergeți toate filtrele dintr-un tabel Excel

Puteți accesa metoda ShowAllData a clasei ListObject fără a fi nevoie să selectați mai întâi o celulă din tabel. Următorul cod vă arată cum să faceți acest lucru:

123 Sub ClearAllTableFilters ()ActiveWorkbook.Worksheets ("Sheet1"). ListObjects ("Table1"). AutoFilter.ShowAllDataSfârșitul Sub

Ștergerea unui rând cu VBA

Puteți șterge un rând din corpul de date al tabelului dvs. utilizând metoda ListRows.Delete. Trebuie să specificați ce rând folosind numărul rândului. Avem următorul tabel numit Table1.

Să presupunem că ați dorit să ștergeți al doilea rând din corpul de date al tabelului dvs., următorul cod vă va permite să faceți acest lucru:

12345 Sub DeleteARow ()ActiveWorkbook.Worksheets ("Sheet1"). ListObjects ("Table1"). ListRows (2) .StergeSfârșitul Sub

Rezultatul este:

Ștergerea unei coloane cu VBA

Puteți șterge o coloană din tabel utilizând metoda ListColumns.Delete. Avem următorul tabel numit Tabelul 1 prezentat mai jos:

Pentru a șterge prima coloană, veți utiliza următorul cod:

12345 Sub DeleteAColumn ()ActiveWorkbook.Worksheets ("Sheet1"). ListObjects ("Table1"). ListColumns (1). ȘtergețiSfârșitul Sub

Rezultatul este:

Conversia unui tabel înapoi la un interval în VBA

Puteți converti un tabel înapoi la un interval normal folosind VBA. Următorul cod vă arată cum să convertiți un tabel numit Table1 într-un interval:

12345 Sub ConvertingATableBackToANormalRange ()ActiveWorkbook.Sheets ("Sheet1"). ListObjects ("Table1"). UnlistSfârșitul Sub

Adăugarea coloanelor în bandă și formatarea la toate tabelele dintr-o foaie de lucru folosind VBA

Puteți accesa toate tabelele din foaia de lucru folosind colecția ListObjects. În foaia de mai jos avem două tabele și am dori să adăugăm o coloană bandată la ambele tabele simultan și să schimbăm fontul secțiunii de date a ambelor tabele în bold, folosind VBA.

12345678910111213 Sub AddingBandedColumns ()Dim tbl Ca ListObjectDim sht Ca foaie de lucruSetați sht = ThisWorkbook.ActiveSheetPentru fiecare tbl In sht.ListObjectstbl.ShowTableStyleColumnStripes = Adevărattbl.DataBodyRange.Font.Bold = AdevăratUrmătorul tblSfârșitul Sub

Rezultatul este:

Crearea unui tabel în Access în VBA folosind DoCmd.RunSQL

Una dintre principalele modalități de a crea un tabel în Access în VBA este prin utilizarea metodei DoCmd.RunSQL pentru a rula o interogare de acțiune cu o instrucțiune SQL.

Avem un buton pe formularul de eșantionare și, atunci când facem clic pe buton, am dori să creăm un tabel numit ProductsTable cu două câmpuri sau coloane, unul ar fi câmpul cheie principal numit ProductsID, iar celălalt ar fi un câmp numit Sales.

Pentru a crea acest tabel, vom folosi următorul cod:

123456 Private Sub cmdCreateProductsTable_Click ()DoCmd.RunSQL "CREATE TABLE ProductsTable" _& "(ProductID INTEGER PRIMARY KEY, Sales Integer);"Sfârșitul Sub

Rezultatul este:

Filtrarea unui tabel în acces utilizând VBA

De asemenea, puteți filtra un tabel în Access utilizând metoda DoCmd.ApplyFilter. Avem tabelul nostru simplu prezentat mai jos în Access numit ProductsTable.

Am dori să apăsăm acest buton pe formularul nostru și apoi să vedem doar vânzări mai mari de 1500.

Deci, am folosi următorul cod pentru a face acest lucru:

1234567 Private Sub cmdFilter_Click ()DoCmd.OpenTable "ProductsTable"DoCmd.ApplyFilter, „[Vânzări]> 1500”Sfârșitul Sub

Rezultatul este:

wave wave wave wave wave