VBA таблици и ListObjects

Съдържание

Този урок ще покаже как се работи с таблици и ListObjects във VBA.

VBA таблици и ListObjects

Таблиците са една от най-полезните и мощни функции на Excel, в този урок ще разгледаме как да използваме VBA за създаване на таблица, добавяне на просто сортиране към таблица, филтриране на таблица и изпълнение на други задачи, свързани с таблицата.

Създайте таблица с VBA

Методът ListObjects.Add може да добави таблица към работен лист въз основа на диапазон в този работен лист. Имаме диапазона, показан в ($ A $ 1: $ B $ 8) на работен лист, наречен Sheet1.

Следният код ще добави таблица, наречена Table1 към вашия работен лист, въз основа на диапазона ($ A $ 1: $ B $ 8), използвайки стила на таблицата по подразбиране:

123456 Sub CreateTableInExcel ()ActiveWorkbook.Sheets ("Sheet1"). ListObjects.Add (xlSrcRange, Range ("$ A $ 1: $ B $ 8"),, xlДа). Име = _"Маса 1"End Sub

Резултатът е:

Вмъкване на колона в края на таблицата с VBA

Можете да използвате метода ListColumns.Add, за да добавите колона в края на вашата таблица. Имаме нашата таблица, наречена Table1, показана по -долу.

Можете да добавите колона към таблицата си, като използвате следния код, който винаги ще добавя колона в края на таблицата:

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

Резултатът е:

Вмъкване на ред в дъното на таблицата с VBA

Можете да използвате метода ListRows.Add, за да добавите ред в долната част на таблицата. Имаме нашата таблица, наречена Table1, показана по -долу.

Следният код винаги ще добавя ред в долната част на вашата таблица.

12345 Sub AddRowToTheBottomOfTheTable ()ActiveSheet.ListObjects ("Таблица1"). ListRows.AddEnd Sub

Резултатът е:

Добавяне на просто сортиране с VBA

Можете да сортирате таблица с VBA. Имаме нашата таблица, наречена Table1, показана по -долу и можем да използваме VBA, за да сортираме Колоната за продажби от най -ниската към най -високата.

Следният код ще сортира колоната Продажби във възходящ ред.

12345678910111213141516171819 Sub SimpleSortOnTheTable ()Диапазон ("Таблица1 [[#Заглавки], [Продажби]]"). ИзберетеActiveWorkbook.Worksheets ("Sheet1"). ListObjects ("Table1"). Sort.SortFields.ClearActiveWorkbook.Worksheets ("Sheet1"). ListObjects ("Table1"). Sort.SortFields.Add _Ключ: = Диапазон ("Таблица1 [[#Всички], [Продажби]]"), SortOn: = xlSortOnValues, Поръчка: = _xlНарастващо, DataOption: = xlSortNormalС ActiveWorkbook.Worksheets ("Sheet1"). ListObjects ("Table1"). Сортиране.Хедера = xlДа.MatchCase = False.Ориентация = xlTopToBottom.SortMethod = xlPinYin.ПриложиКрай сEnd Sub

Резултатът е:

Филтрирайте таблица с VBA

Можете също така да филтрирате таблица в Excel, като използвате VBA. Имаме нашата таблица, наречена Table1 и бихме искали да филтрираме таблицата, така че да се показват само продажби над 1500.

Можем да използваме метода Autofilter, който има пет незадължителни параметъра. Тъй като бихме искали да филтрираме колоната „Продажби“, която е втората колона, задаваме полето на 2 и използваме операторския параметър xlAnd, който се използва за дати и числа.

123456 Sub SimpleFilter ()ActiveWorkbook.Sheets ("Sheet1"). ListObjects ("Table1"). Range.AutoFilter Field: = 2, Criteria1: = _"> 1500", Оператор: = xlAndEnd Sub

Резултатът е:

Изчистете филтъра с метода ShowAllData във VBA

Можете да получите достъп до метода ShowAllData от класа на работен лист, за да изчистите филтъра. Ако това е филтър (и) на таблица, който искате да изчистите, първо трябва да изберете клетка в таблицата, което можете да направите във VBA.

Методът ShowAllData ще генерира грешка, ако човек не използва условна логика, за да провери дали е бил приложен филтър в работния лист. Следният код ви показва как да направите това:

123456789 Sub ClearingTheFilter ()Диапазон ("Таблица1 [[#Заглавки], [Продажби]]"). ИзберетеАко ActiveWorkbook.Worksheets ("Sheet1"). FilterMode = Истина тогаваActiveSheet.ShowAllDataКрай АкоEnd Sub

Изчистете всички филтри от таблица на Excel

Можете да получите достъп до метода ShowAllData на класа ListObject, без да се налага първо да избирате клетка в таблицата. Следният код ви показва как да направите това:

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

Изтриване на ред с VBA

Можете да изтриете ред в тялото на данни на вашата таблица, като използвате метода ListRows.Delete. Трябва да посочите кой ред, като използвате номера на реда. Имаме следната таблица, наречена Table1.

Да предположим, че сте искали да изтриете втория ред в тялото на данните на вашата таблица, следният код би ви позволил да направите това:

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

Резултатът е:

Изтриване на колона с VBA

Можете да изтриете колона от таблицата си, като използвате метода ListColumns.Delete. Имаме следната таблица, наречена Таблица 1, показана по -долу:

За да изтриете първата колона, ще използвате следния код:

12345 Sub DeleteAColumn ()ActiveWorkbook.Worksheets ("Sheet1"). ListObjects ("Table1"). ListColumns (1) .DeleteEnd Sub

Резултатът е:

Конвертиране на таблица обратно в диапазон във VBA

Можете да конвертирате таблица обратно в нормален диапазон с помощта на VBA. Следният код ви показва как да конвертирате таблица, наречена Table1 обратно в диапазон:

12345 Sub ConvertingATableBackToANormalRange ()ActiveWorkbook.Sheets ("Sheet1"). ListObjects ("Table1"). UnlistEnd Sub

Добавяне на лентови колони и форматиране към всички таблици в работен лист, използвайки VBA

Можете да получите достъп до всички таблици във вашия работен лист, като използвате колекцията ListObjects. В листа по -долу имаме две таблици и бихме искали да добавим лентова колона към двете таблици наведнъж и да променим шрифта на секцията с данни на двете таблици на удебелен, използвайки VBA.

12345678910111213 Sub AddingBandedColumns ()Dim tbl като ListObjectDim sht като работен листЗадайте sht = ThisWorkbook.ActiveSheetЗа всеки tbl В sht.ListObjectstbl.ShowTableStyleColumnStripes = Вярноtbl.DataBodyRange.Font.Bold = ВярноСледващата tblEnd Sub

Резултатът е:

Създаване на таблица в Access във VBA с помощта на DoCmd.RunSQL

Един от основните начини за създаване на таблица в Access във VBA е чрез използване на метода DoCmd.RunSQL за изпълнение на заявка за действие с SQL израз.

Имаме бутон на нашия примерен формуляр и когато щракнем върху бутона, бихме искали да създадем таблица, наречена ProductsTable с две полета или колони, едното би било полето с първичен ключ, наречено ProductsID, а другото би било поле, наречено Sales.

За да създадем тази таблица, бихме използвали следния код:

123456 Частен под cmdCreateProductsTable_Click ()DoCmd.RunSQL "CREATE TABLE ProductsTable" _& "(ИДЕНТИФИЦИРАН ИНТЕГЪР НА ПРОДУКТ, ПРОДЪЛЖИТЕЛЕН КЛЮЧ, Продажбено цяло число);"End Sub

Резултатът е:

Филтриране на таблица в Access с помощта на VBA

Можете също така да филтрирате таблица в Access, като използвате метода DoCmd.ApplyFilter. Имаме нашата проста таблица, показана по -долу в Access, наречена ProductsTable.

Бихме искали да натиснем този бутон във формуляра си и след това да видим само продажби, които са по -големи от 1500.

Така че, ние ще използваме следния код, за да направим това:

1234567 Частен под cmdFilter_Click ()DoCmd.OpenTable "ProductsTable"DoCmd.ApplyFilter, "[Продажби]> 1500"End Sub

Резултатът е:

Така ще помогнете за развитието на сайта, сподели с приятелите си

wave wave wave wave wave