ВБА Листбок - Изабрана ставка

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

Оквири са листама се углавном користе у ВБА обрасцима, али се могу користити и на вашем Екцел радном листу. Корисницима приказују листу опција, од којих једну или више њих корисник може изабрати.

Креирање листе у ВБА обрасцу

Да бисмо креирали оквир са листом у ВБА облику, прво морамо да направимо УсерФорм.

Након што креирате образац, изаберите контролу оквира оквира у пољу са алаткама, а затим превуците да бисте креирали оквир са листом на обрасцу.

Додавање вредности у оквир са листом

У догађај Инитиализе обрасца откуцајте следећи код. Оквир са листом ће покупити вредности које су сачуване у опсегу ћелија на вашем Екцел радном листу.

123456 Привате Суб УсерФорм_Инитиализе ()Дим рнг Ас РангеЗа сваки рнг у домету ("А1: А50")Ме.лстСтате.АддИтем рнг.ВалуеНект рнгЕнд Суб

Када покренемо образац, приказаће се оквир са листом као што је приказано на доњој слици:

Избор вредности из оквира са листом

Подразумевано, једна вредност се може изабрати у оквиру за листу у корисничком облику. Међутим, ово се може изменити променом својства Вишеструки одабир оквира са листом.

Кликните на оквир са листом да бисте га изабрали, а затим у прозору Својства промените својство за вишеструки избор из 0-фрмМултиСелецтСингле до 1-фрмМултиСелецтМулти.

Сада када покренемо образац, можемо да изаберемо више опција у оквиру за листу.

Ако променимо опцију да се 2-фрмМултиСелецтЕктендед, то значи да можемо изабрати једну од вредности, а затим, држећи тастер СХИФТ, изаберите другу вредност даље на листи, а све ставке између 2 изабране вредности ће такође бити изабране.

ВБА програмирање | Генератор кода ради за вас!

Рад са изабраним вредностима у ВБА

У зависности од врсте опције коју смо користили за својство Мулти-Селецт у оквиру за листу, постоји неколико начина на које можемо користити вредност или вредности изабране у оквиру листе у ВБА коду.

Додела вредности променљивој

Можемо користити Афтер_Упдате догађај оквира са листом за додељивање изабране вредности променљивој.

Прво, креирајмо променљиву нивоа модула на врху модула обрасца.

Испод речи, Опција Експлицитно, креирајте следећу променљиву стринга.

1 Дим стрСтате као Стринг.

Након што смо креирали ову променљиву, можемо двапут кликнути на оквир Листа да бисмо отишли ​​до кода иза обрасца, или можемо кликнути на дугме кода у ВБЕ Едитору.

Цлицк Евент у оквиру са листом биће аутоматски креиран. Изаберите Афтер_Упдате Догађај са листе доступних процедура.

У догађај Афтер_Упдате откуцајте следећи код:

123 Приватни Суб лстСтате_АфтерУпдате ()стрСтате = Ме.лстСтатеЕнд Суб

НАПОМЕНА: Можете избрисати догађај Цлицк јер то није потребно.

Сада, ако покренемо образац и кликнемо на оквир са листом, изабрана вредност ће бити сачувана у променљивој. Да бисмо ово тестирали, можемо да ставимо тачку БРЕАК у код.

Сада када покренемо образац, ако кликнемо на оквир са листом, код ће прећи у ДЕБУГ режим и зауставити се на нашој тачки прекида. Ако тада притиснемо Ф8 на тастатури за помак корак даље у коду, променљива ће бити попуњена изабраном ставком на листи.

Ову вредност можемо видети тако што ћемо поставити миша на променљиву.

ИЛИ

Вредност можемо видети у непосредном прозору.

Уморни сте од тражења примера ВБА кода? Испробајте АутоМацро!

Коришћење командног дугмета за враћање вредности у Екцел

Прво, креирамо командно дугме на обрасцу како бисмо имали дугме ОК за враћање вредности или вредности изабраних у оквиру са листом у Екцел.

Изаберите контролу командног дугмета, а затим кликните и превуците образац да бисте креирали дугме.

У прозору Својства промените назив дугмета у цмдОК, и промените наслов и акцелератор дугмета.

Сврха акцелератора је да корисник у овом случају помоћу тастатуре активира дугме Алт+О. би активирао дугме.

Да би командно дугме функционисало, морамо додати код иза њега, тако да када се притисне дугме, код се покреће. Ово се назива догађај клика дугмета.

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

Унесите следећи код у догађај клика командног дугмета.

123 Приватни Суб цмдОК_Цлицк ()Опсег ("Е1") = стрСтатеЕнд Суб

Код ће покупити променљиву коју смо декларисали у догађају Афтер_Упдате ЛистБок -а и вратити вредност у опсег у Екцелу.

Алтернативно, можемо покупити вредност директно из оквира са листом без употребе променљиве.

123 Приватни Суб цмдОК_Цлицк ()Опсег ("Е1") = ме.лстСтатеЕнд Суб

Када покренемо образац, изабрана вредност ће бити враћена у Екцел када кликнемо на дугме У реду.

Избор више вредности

Ако смо својство вишеструког одабира оквира са листом поставили на 1 или 2 што нам омогућава да изаберемо више вредности на листи, онда је код за избор ових вредности мало другачији.

Тхе Афтер_Упдате догађај се више не покреће при избору вредности у оквиру са листом - стога не можемо да користимо овај догађај.

Још увек можемо да користимо догађај клика на командном дугмету, али морамо да прођемо кроз вредности изабране у оквиру са листом да бисмо их вратили у Екцел.

У командно дугме Кликните догађај, унесите следећи код.

12345678910 Приватни Суб цмдОК_Цлицк ()Дим к као цео бројРаспон ("Е1"). ИзаберитеЗа к = 0 за Ме.лстСтате.ЛистЦоунт - 1Ако је Ме.лстСтате.Селецтед (к) = ТачноАцтивеЦелл = Ме.лстСтате.Лист (к)АцтивеЦелл.Оффсет (1, 0) .ОдаберитеКрај АкоДаље кЕнд Суб

Сада када покренемо образац, само изабране вредности ће бити враћене на Екцел листу.

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

wave wave wave wave wave