ВБА табеле и ЛистОбјекти

Преглед садржаја

Овај водич ће показати како се ради са Таблицама и ЛистОбјектима у ВБА.

ВБА табеле и ЛистОбјекти

Табеле су једна од најкориснијих и најмоћнијих функција програма Екцел, у овом водичу ћемо размотрити како користити ВБА за креирање табеле, додати једноставно сортирање табели, филтрирати табелу и обављати друге задатке везане за табелу.

Направите табелу са ВБА

Метод ЛистОбјецтс.Адд може додати табелу на радни лист, на основу опсега у том радном листу. Распон је приказан у ($ А $ 1: $ Б $ 8) на радном листу под називом Схеет1.

Следећи код ће додати табелу под називом Табле1 на ваш радни лист, на основу опсега ($ А $ 1: $ Б $ 8) користећи подразумевани стил табеле:

123456 Суб ЦреатеТаблеИнЕкцел ()АцтивеВоркбоок.Схеетс ("Схеет1"). ЛистОбјецтс.Адд (клСрцРанге, Ранге ("$ А $ 1: $ Б $ 8"),, клДа). Име = _"Табела 1"Енд Суб

Резултат је:

Уметање колоне на крају табеле са ВБА

Можете користити методу ЛистЦолумнс.Адд да бисте додали колону на крај табеле. Имамо нашу табелу која се зове Табела1 приказана испод.

Можете додати колону у табелу помоћу следећег кода, који ће увек додати колону на крај табеле:

12345 Суб АддЦолумнТоТхеЕндОфТхеТабле ()АцтивеВоркбоок.Схеетс ("Схеет1"). ЛистОбјецтс ("Табле1"). ЛистЦолумнс.АддЕнд Суб

Резултат је:

Уметање реда на дну табеле помоћу ВБА

Можете користити методу ЛистРовс.Адд да додате ред на дно табеле. Имамо нашу табелу која се зове Табела1 приказана испод.

Следећи код ће увек додати ред на дно табеле.

12345 Суб АддРовТоТхеБоттомОфТхеТабле ()АцтивеСхеет.ЛистОбјецтс ("Табела1"). ЛистРовс.АддЕнд Суб

Резултат је:

Додавање једноставног сортирања са ВБА

Можете сортирати табелу са ВБА. Доле имамо нашу табелу која се зове Табела1 и помоћу ВБА можемо сортирати продајну колону од најниже до највише.

Следећи код ће сортирати колону Продаја по растућем редоследу.

12345678910111213141516171819 Суб СимплеСортОнТхеТабле ()Опсег ("Табела1 [[#заглавља], [Продаја]]"). ИзаберитеАцтивеВоркбоок.Ворксхеетс ("Схеет1"). ЛистОбјецтс ("Табле1"). Сорт.СортФиелдс.ЦлеарАцтивеВоркбоок.Ворксхеетс ("Схеет1"). ЛистОбјецтс ("Табле1"). Сорт.СортФиелдс.Адд _Кључ: = Опсег ("Табела1 [[#Све], [Продаја]]"), СортОн: = клСортОнВалуес, Редослед: = _клАсцендинг, ДатаОптион: = клСортНормалСа АцтивеВоркбоок.Ворксхеетс ("Схеет1"). ЛистОбјецтс ("Табле1"). Сорт.Хеадер = клДа.МатцхЦасе = Нетачно.Оријентација = клТопТоБоттом.СортМетход = клПинИин.ПрименитиЗавршитиЕнд Суб

Резултат је:

Филтрирајте табелу са ВБА

Такође можете филтрирати Екцел табелу помоћу ВБА. Имамо нашу табелу која се зове Табле1 и желимо да филтрирамо табелу тако да се приказују само продаје веће од 1500.

Можемо користити методу Аутофилтер, која има пет опционих параметара. Пошто желимо да филтрирамо колону Продаја која је друга колона, поље смо поставили на 2 и користимо параметар оператора клАнд, који се користи за датуме и бројеве.

123456 Суб СимплеФилтер ()АцтивеВоркбоок.Схеетс ("Схеет1"). ЛистОбјецтс ("Табле1"). Ранге.АутоФилтер Фиелд: = 2, Цритериа1: = _"> 1500", Оператор: = клАндЕнд Суб

Резултат је:

Очистите филтер помоћу методе СховАллДата у ВБА

Можете приступити методи СховАллДата класе радног листа да бисте обрисали филтер. Ако желите да обришете филтере табеле, прво морате да изаберете ћелију у табели, што можете да урадите у ВБА.

Метода СховАллДата ће генерисати грешку ако се не користи условна логика да би се проверило да ли је на радном листу примењен филтер. Следећи код вам показује како то да урадите:

123456789 Суб ЦлеарингТхеФилтер ()Опсег ("Табела1 [[#заглавља], [Продаја]]"). ИзаберитеАко је АцтивеВоркбоок.Ворксхеетс ("Схеет1"). ФилтерМоде = ТачноАцтивеСхеет.СховАллДатаКрај АкоЕнд Суб

Обришите све филтере из Екцел табеле

Можете приступити методи СховАллДата класе ЛистОбјецт без да морате прво изабрати ћелију у табели. Следећи код вам показује како то да урадите:

123 Суб ЦлеарАллТаблеФилтерс ()АцтивеВоркбоок.Ворксхеетс ("Схеет1"). ЛистОбјецтс ("Табле1"). АутоФилтер.СховАллДатаЕнд Суб

Брисање реда помоћу ВБА

Можете избрисати ред у телу података ваше табеле помоћу методе ЛистРовс.Делете. Морате да наведете који ред користећи број реда. Имамо следећу табелу која се зове Табела1.

Рецимо да сте желели да избришете други ред у телу података своје табеле, следећи код би вам то омогућио:

12345 Суб ДелетеАРов ()АцтивеВоркбоок.Ворксхеетс ("Схеет1"). ЛистОбјецтс ("Табле1"). ЛистРовс (2) .ДелетеЕнд Суб

Резултат је:

Брисање колоне са ВБА

Можете избрисати колону из табеле помоћу методе ЛистЦолумнс.Делете. Доле имамо следећу табелу која се зове Табела1:

Да бисте избрисали прву колону, користили бисте следећи код:

12345 Суб ДелетеАЦолумн ()АцтивеВоркбоок.Ворксхеетс ("Схеет1"). ЛистОбјецтс ("Табле1"). ЛистЦолумнс (1) .ДелетеЕнд Суб

Резултат је:

Претварање табеле у опсег у ВБА

Помоћу ВБА можете претворити табелу у нормални опсег. Следећи код вам показује како да вратите табелу под називом Табле1 назад у опсег:

12345 Суб ЦонвертингАТаблеБацкТоАНормалРанге ()АцтивеВоркбоок.Схеетс ("Схеет1"). ЛистОбјецтс ("Табле1"). УнлистЕнд Суб

Додавање тракастих колона и обликовање свим табелама на радном листу помоћу ВБА

Можете приступити свим табелама на свом радном листу помоћу колекције ЛистОбјецтс. На доњем листу имамо две табеле и желели бисмо да додамо опсежну колону у обе табеле одједном и променимо фонт одељка података обе табеле у подебљано, користећи ВБА.

12345678910111213 Суб АддингБандедЦолумнс ()Дим тбл Као ЛистОбјецтДим схт Ас ВорксхеетСет схт = ТхисВоркбоок.АцтивеСхеетЗа сваки тбл У схт.ЛистОбјецтстбл.СховТаблеСтилеЦолумнСтрипес = Тачнотбл.ДатаБодиРанге.Фонт.Болд = ТачноНект тблЕнд Суб

Резултат је:

Креирање табеле у Аццессу у ВБА помоћу ДоЦмд.РунСКЛ

Један од главних начина за креирање табеле у програму Аццесс у ВБА је коришћење методе ДоЦмд.РунСКЛ за покретање упита акције са СКЛ изразом.

На нашем узорку обрасца имамо дугме, а када кликнемо на дугме, желимо да направимо табелу под називом ПродуцтсТабле са два поља или колоне, једно би било поље примарног кључа под називом ПродуцтсИД, а друго поље које се зове Продаја.

Да бисмо направили ову табелу, користили бисмо следећи код:

123456 Привате Суб цмдЦреатеПродуцтсТабле_Цлицк ()ДоЦмд.РунСКЛ "ЦРЕАТЕ ТАБЛЕ ПродуцтсТабле" _& "(ПРОИЗВОД ИНТЕГЕР ПРИМАРНИ КЉУЧ, Цео број продаје);"Енд Суб

Резултат је:

Филтрирање табеле у програму Аццесс помоћу ВБА

Такође можете филтрирати табелу у програму Аццесс помоћу методе ДоЦмд.АпплиФилтер. У наставку имамо једноставну табелу која се приказује у Аццессу под називом ПродуцтсТабле.

Желели бисмо да притиснемо ово дугме на нашем обрасцу, а затим видимо само продају која је већа од 1500.

Дакле, за то бисмо користили следећи код:

1234567 Приватна под цмдФилтер_Цлицк ()ДоЦмд.ОпенТабле "ПродуцтсТабле"ДоЦмд.АпплиФилтер, "[Продаја]> 1500"Енд Суб

Резултат је:

Ви ће помоћи развој сајта, дељење страницу са пријатељима

wave wave wave wave wave