Знаем как да създадем каскадно падащо меню на работен лист, използвайки валидиране на данни. Но как да създадем каскадно падащо падащо комбинирано поле върху потребителската форма на VBA. Това е една от основните нужди.
В тази статия ще научим как да създадем зависима комбинирана кутия във VBA.
Логика за зависими Combobox във VBA
За да създадем зависима комбинирана кутия във VBA, трябва да инициализираме комбинираната кутия за събитието на изходния елемент. Например, ако комбинираната кутия зависи от група с бутони за избор, тогава кодът за зареждане на зависима комбинирана кутия трябва да се стартира веднага след като някой избере радио бутон. Или ако комбинираната кутия зависи от друга комбинирана кутия, тогава в зависимост от комбинираната кутия трябва да се зарежда всеки път, когато стойността в комбинираната кутия се промени.
Стига с теорията. Нека да преминем към пример, за да видим как работи.
ComboBox В зависимост от друг Combobox
Създайте две комбинирани полета. Първо трябва да се изброят няколкото имена на държави. Другият трябва да изброява имената на щатите на избраната държава. Ако потребителят промени държавата в първата комбинирана кутия, списъкът с втората комбинирана кутия трябва да бъде променен.
Нека създадем формуляр, който има две комбинирани полета с етикети държави и щати и команден бутон за подаване на въведените данни.
Първото комбинирано поле трябва да изброява имената на държави и не зависи от никаква стойност. Така че ще го заредим в form_intialize събитие, както правим за основната инициализация на комбинираната кутия.
Щракнете двукратно върху потребителската форма. Той ще отвори областта за кодиране в UserForm Object. Сега от лявото падащо меню изберете потребителска форма. След това от дясно падащо меню изберете инициализиране.
Ще бъде вмъкнато празно подзаглавие UserForm_Initialize (). Всичко, написано в тази подпозиция, ще бъде изпълнено преди да се появи потребителската форма.
Така че ние пишем инициализационния код за combobox тук.
Private Sub UserForm_Initialize () countries = Array ("Индия", "Непал", "Бутан", "Шри Ланка") UserForm1.ComboBox1.List = посочва End Sub
Инициализирахме първия си комбиниран списък. Всеки път, когато зареждате потребителския формуляр, първият комбиниран пакет ще бъде готов с името на държавите.
Сега, за да заредим втората комбинирана кутия, трябва да разгледаме каква стойност е избрана в първата комбинирана кутия1 и да стартираме кода всеки път, когато комбинираната кутия1 променя стойностите си. За това ще използваме събитието Combobox_AfterUpdate.
От лявото падащо меню изберете combobox1. От дясно падащо меню изберете AfterUpdate. Можем също да използваме събитието Change, но ще се придържаме към AfterUpdate в статията.
Сега напишете кода по -долу:
Private Sub ComboBox1_AfterUpdate () Изберете случай ComboBox1.Value Case "India": states = Array ("Delhi", "UP", "UK", "Gujrat", "Kashmir") Case "Nepal": states = Array ("Arun Kshetra "," Janakpur Kshetra "," Kathmandu Kshetra ", _" Gandak Kshetra "," Kapilavastu Kshetra ") Дело" Бутан ": държави = Array (" Bumthang "," Trongsa "," Punakha "," Thimphu "," Paro ") Дело" Shree Lanka ": states = Array (" Galle "," Ratnapura "," Colombo "," Badulla "," Jaffna ") End Изберете ComboBox2.List = състояния End Sub
Тук сме използвали изявление за избран случай. Избраният случай е добър, когато искаме да видим каква стойност е избрана от много стойности. Тук съм го обяснил подробно.
За да съхраните стойността, въведена от потребителя, използвайте бутона за изпращане. Напишете кода по -долу в командния бутон за изпращане, за да запазите страната и състоянието, избрани от потребителя, в работния лист.
Private Sub CommandButton1_Click () country = ComboBox1.Value State = ComboBox2.Value ThisWorkbook.Worksheets ("sheet1"). Range ("G1") = country ThisWorkbook.Worksheets ("sheet1"). Range ("H1") = State Unload Me End Sub
Сега, за да покажете потребителската форма, поставете бутон в работния лист и напишете кода по -долу. Или можете да използвате прост модул, за да покажете потребителската форма.
Sub load_userform () UserForm 1. Show End Sub
Сега стартирайте кода load_userform.
Как работи?
Когато изпълнявате подсистемата, която има код userform.show, VBA изпълнява userform_initialize събития веднага след като изпълни командата userform.show. В събитието userform_intialize сме инициализирали първото комбинирано поле със списък на държави. След това формулярът се показва на потребителя.
Сега, когато потребителят избере каквато и да е стойност от първото комбинирано поле, събитието combobox1_AfterUpdate се изпълнява. Това събитие съдържа кода, за да провери коя стойност е избрана от потребителя в combobox1 и въз основа на тази стойност, той задава масива на състоянията и инициализира стойностите combobox2 с масив на състоянията.
Така че да, момчета, ето как създавате каскадно комбинирано поле във VBA потребителска форма. Надявам се, че бях достатъчно обяснителен и статията изпълни своята цел. Ако имате някакви съмнения относно тази статия или някоя VBA тема, попитайте ме в секцията за коментари по -долу.
Първи стъпки с потребителските формуляри на Excel VBA| Ще обясня как да създам формуляр в excel, как да използвам VBA инструментариума, как да боравя с потребителските входни данни и накрая как да съхранявам потребителските входни данни. Ще преминем през тези теми, като използваме един пример и стъпка по стъпка ръководство.
VBA променливи в Excel| VBA означава Visual Basic за приложения. Това е език за програмиране от Microsoft. Използва се с приложения на Microsoft Office като MSExcel, MS-Word и MS-Access, докато VBA променливите са специфични ключови думи.
Променлив обхват на Excel VBA| Във всички езици за програмиране имаме променливи спецификатори за достъп, които определят от къде може да се получи достъп до определена променлива. Excel VBA не е изключение. VBA също има спецификатори на обхвата.
Аргументи на ByRef и ByVal | Когато един аргумент се предава като аргумент ByRef на различна под -функция или функция, се изпраща препратката към действителната променлива. Всички промени, направени в копието на променливата, ще се отразят в първоначалния аргумент.
Изтриване на листове без подкани за потвърждение с помощта на VBA в Microsoft Excel | Тъй като изтривате листове с помощта на VBA, знаете какво правите. Бихте искали да кажете на Excel да не показва това предупреждение и да изтрие проклетия лист.
Добавяне и запазване на нова работна книга с помощта на VBA в Microsoft Excel 2016| В този код първо създадохме препратка към обект на работна книга. И тогава го инициализирахме с нов обект на работна книга. Ползата от този подход е, че можете лесно да извършвате операции с тази нова работна книга. Като запазване, затваряне, изтриване и т.н.
Показване на съобщение в лентата за състоянието на Excel VBA| Лентата на състоянието в Excel може да се използва като монитор на кодове. Когато вашият VBA код е дълъг и изпълнявате няколко задачи с помощта на VBA, често деактивирате актуализацията на екрана, така че да не виждате този екран да трепти.
Изключете предупредителните съобщения с помощта на VBA в Microsoft Excel 2016| Този код не само деактивира сигналите за VBA, но също така увеличава ефективността на кода във времето. Да видим как.
Популярни статии:
50 преки пътища в Excel за повишаване на вашата производителност | Бъдете по -бързи в задачата си. Тези 50 преки пътища ще ви накарат да работите още по -бързо в Excel.
Функцията VLOOKUP в Excel | Това е една от най -използваните и популярни функции на excel, която се използва за търсене на стойност от различни диапазони и листове.
COUNTIF в Excel 2016 | Пребройте стойностите с условия, използвайки тази невероятна функция. Не е необходимо да филтрирате данните си, за да броите конкретни стойности. Функцията Countif е от съществено значение за подготовката на вашето табло.
Как да използвате функцията SUMIF в Excel | Това е друга основна функция на таблото. Това ви помага да обобщите стойностите при конкретни условия.