Tooprogram.ru

Компьютерный справочник
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Combobox excel заполнение

Как быстро заполнить/очистить элементы на форме(TextBox-ы, ComboBox-ы)

Очень часто при работе с формами(UserForm) приходится заполнять значениями КомбоБоксы(ComboBox) и ТекстБоксы(TextBox). Иногда однотипными данными. Или очистить их все после выполнения какого-либо действия. А может проверить, все ли элементы заполнены, прежде чем продолжать действие. Если КомбоБоксов/ТекстБоксов пару штучек — не проблема

и всех делов. А если их порядка двадцати? Или больше? Мало того, что писать это все долго, так еще и код растягивается, как портянка. Но это можно сделать гораздо проще и удобнее. Воспользоваться можно несколькими способами. Этот способ наиболее популярен, если необходимо произвести однотипные действия со всеми ТекстБоксами на форме:

Sub All_TextBoxes() Dim oControl As Control For Each oControl In UserForm1.Controls If TypeOf oControl Is MSForms.TextBox Then oControl.Value = «» Next oControl End Sub

В примере элементы формы очищаются, но в код можно подставить любое действие — добавление нового элемента списка(для ComboBox), поменять представление данных в TextBox, проверить наличие данных в проверяемом элементе и т.д. Тут уж зависит от поставленной задачи. Конечно, подобным способом можно проделать разные действия и с остальными элементами формы. Только надо будет заменить тип для проверки элементов:

ComboBox — MSForms.ComboBox CheckBox — MSForms.CheckBox CommandButton — MSForms.CommandButton Frame — MSForms.Frame Image — MSForms.Image Label — MSForms.Label ListBox — MSForms.ListBox MultiPage — MSForms.MultiPage SpinButton — MSForms.SpinButton TabStrip — MSForms.TabStrip ToggleButton — MSForms.ToggleButton

Это не единственный способ проделывания однотипных действий с элементами формы. Код ниже использует имена элементов для обращения к ним:

Sub All_TextBoxes() Dim li As Long For li = 1 To 10 UserForm1.Controls(«TextBox» & li).Value = li Next li End Sub

Недостаток данного метода: имена элементов должны строго соответствовать используемым в коде и лишь нумерация на конце имени должна различаться. За нумерацию отвечает переменная li и, конечно, цикл, в котором задается начальное и конечные значения. В примере ТекстБоксам с именами от «TextBox1» до «TextBox10» будут подставлены значения номеров самих ТекстБоксов. Но такой недостаток может быть очень полезным. Например, если необходимо проделать действия не над всеми ТекстБоксами, а лишь над некоторыми из них. Тогда все, что необходимо дать ТекстБоксам определенные имена с нумерацией(«ToDB1″,»ToDB2» и т.д.) и в зависимости от имени можно проделывать различные действия: стирать значения, менять свойства элементов и т.д.
И есть еще один плюс такого подхода: когда необходимо заполнить значения ТекстБоксов значениями ячеек. Скажем надо заполнить 10 ТекстБоксов(с именами TextBox1 , TextBox2 , TextBox3 и т.д.) из ячеек диапазона A2:A11 листа с именем «Лист2″(т.е. из 10 ячеек, начиная с ячейки A2). Код будет выглядеть так:

Sub Fill_TextBoxes_FromCells() Dim li As Long For li = 1 To 10 UserForm1.Controls(«TextBox» & li).Value = Sheets(«Лист2»).Range(«A» & li).Value ‘или применить Cells вместо Range ‘UserForm1.Controls(«TextBox» & li).Value = Sheets(«Лист2»).Cells(li, 1).Value Next li End Sub

Подробнее про обращение к диапазонам из VBA можно узнать из этой статьи: Как обратиться к диапазону из VBA

Tips_Macro_WorkWithGroupControls.xls (51,5 KiB, 3 458 скачиваний)

Статья помогла? Поделись ссылкой с друзьями!

Поиск по меткам

Вы правильно идете. Просес овладения VBA (как и любой) содержит две параллельные дороги — теория и задачи. По теории горы книг и все переписывают азы друг у друга, да ктому же читаешь на 30 странице и не помнишь что на 1 -ой. Решение отдельной задачи с подробными коментариями, это вторая, очень нужная Дорога. Спосибо.

А как сделать тоже самое, имею ввиду очистку, только на листе.Сейчас пользуюсь
таким кодом.
Private Sub test()
TextBox1 = «»
TextBox2 = «»
TextBox3 = «»
TextBox4 = «»
TextBox5 = «»
End Sub

Читать еще:  Создание загрузочной флешки видео

Спасибо пришлось самой найти
For iCount = 1 To 10
OLEObjects(«TextBox» & iCount).Object.Value = «»
Но я вам благодарна, что ваши идеи заставляют извилины работать.

При использовании combobox (в макросе Exel) часто возникают новые значения,которые должны быть занесены в ниспадающий список. Мохно ли автоматизировать занесение этих значений в список после набора их в окне combobox.

Яков, я бы рекомендовал на форум обратиться. Ваш вопрос к статье никакого отношения не имеет.

Добрый день у меня на форме 10 комбобоксов я использую такой код т.е. пишу для каждого соmbobox отдельно

With Sheets(«справка»)
LastRow = .Cells(Rows.Count, 2).End(xlUp).Row
Me.ComboBox1.List = .Range(«b2:b» & LastRow).Value
Me.ComboBox2.List = .Range(«b2:b» & LastRow).Value
Me.ComboBox3.List = .Range(«b2:b» & LastRow).Value

Как можно сократить код.Спасибо.

Юрий, а статью-то прочитать не судьба? Там есть Ваш случай, только в качестве примера TextBox.

Разобрался .Все работает. Главное внимательно прочесть
Спасибо за сайт.

Ваш сайт для меня — просто находка! Какой вопрос ни возникает, здесь есть практически все ответы. Спасибо! И за эту статью отдельное спасибо!

На форме используются текстбоксы:
txtb_НачальнаяДата,txtb_КонечнаяДата,txtb_Cтоимость и т.д. до 10 штук. Начальные буквы txtb, а далее меняются окончания. Как очистить текстбоксы.
Вариант :txtb_НачальнаяДата.Value=»» -это понятно ,а через цикл можно?

Юрий, применить смекалку и доступные инструкции проверки:

Sub All_TextBoxes() Dim oControl As Control For Each oControl In UserForm1.Controls If TypeOf oControl Is MSForms.TextBox Then If left(Control.Name,4) = «txtb» Then oControl.Value = «» End If End If Next oControl End Sub

Подскажите пожалуйста, как мне заполнить Textbox, которые имеют разные названия (по типу «a», «h». ) из ячеек с7:с12.
Сейчас я использую такой код, но он очень уж не оптимальный исходя из того что мне надо заполнять 10 заданий, 10 вариантов, в каждом по 7 textbox (700 строчек).
.
If Co = «Вариант1» Then
h = Range(«c7»)
d = Range(«c8»)
q = Range(«c9»)
h1 = Range(«c10»)
d1 = Range(«c11»)
q1 = Range(«c12»)
ElseIf Co = «Вариант2» Then
h = Range(«d7»)
d = Range(«d8»)
q = Range(«d9»)
h1 = Range(«d10»)
d1 = Range(«d11»)
q1 = Range(«d12»)
ElseIf Co = «Вариант3» Then
h = Range(«e7»)
d = Range(«e8»)
q = Range(«e9»)
h1 = Range(«e10»)
d1 = Range(«e11»)
q1 = Range(«e12»)
.
заранее спасибо.

Add a list box or combo box to a worksheet in Excel

When you want to display a list of values that users can choose from, add a list box to your worksheet.

Add a list box to a worksheet

Create a list of items that you want to displayed in your list box like in this picture.

Click Developer > Insert.

Note: If the Developer tab isn’t visible, click File > Options > Customize Ribbon. In the Main Tabs list, check the Developer box, and then click OK.

Under Form Controls, click List box (Form Control).

Click the cell where you want to create the list box.

Click Properties > Control and set the required properties:

In the Input range box, type the range of cells containing the values list.

Note: If you want more items displayed in the list box, you can change the font size of text in the list.

In the Cell link box, type a cell reference.

Tip: The cell you choose will have a number associated with the item selected in your list box, and you can use that number in a formula to return the actual item from the input range.

Читать еще:  Log в excel

Under Selection type, pick a Single and click OK.

Note: If you want to use Multi or Extend, consider using an ActiveX list box control.

Add a combo box to a worksheet

You can make data entry easier by letting users choose a value from a combo box. A combo box combines a text box with a list box to create a drop-down list.

You can add a Form Control or an ActiveX Control combo box. If you want to create a combo box that enables the user to edit the text in the text box, consider using the ActiveX Combo Box. The ActiveX Control combo box is more versatile because, you can change font properties to make the text easier to read on a zoomed worksheet and use programming to make it appear in cells that contain a data validation list.

Pick a column that you can hide on the worksheet and create a list by typing one value per cell.

Note: You can also create the list on another worksheet in the same workbook.

Click Developer > Insert.

Note: If the Developer tab isn’t visible, click File > Options > Customize Ribbon. In the Main Tabs list, check the Developer box, and then click OK.

Pick the type of combo box you want to add:

Under Form Controls, click Combo box (Form Control).

Under ActiveX Controls, click Combo Box (ActiveX Control).

Click the cell where you want to add the combo box and drag to draw it.

To resize the box, point to one of the resize handles, and drag the edge of the control until it reaches the height or width you want.

To move a combo box to another worksheet location, select the box and drag it to another location.

Format a Form Control combo box

Right-click the combo box and pick Format Control.

Click Control and set the following options:

Input range: Type the range of cells containing the list of items.

Cell link: The combo box can be linked to a cell where the item number is displayed when you select an item from the list. Type the cell number where you want the item number displayed.

For example, cell C1 displays 3 when the item Sorbet is selected, because it’s the third item in our list.

Tip: You can use the INDEX function to show an item name instead of a number. In our example, the combo box is linked to cell B1 and the cell range for the list is A1:A2. If the following formula, is typed into cell C1: =INDEX(A1:A5,B1), when we select the item «Sorbet» is displayed in C1.

Drop-down lines: The number of lines you want displayed when the down arrow is clicked. For example, if your list has 10 items and you don’t want to scroll you can change the default number to 10. If you type a number that’s less than the number of items in your list, a scroll bar is displayed.

Format an ActiveX combo box

Click Developer > Design Mode.

Right-click the combo box and pick Properties, click Alphabetic, and change any property setting that you want.

Here’s how to set properties for the combo box in this picture:

Читать еще:  Как открыть редактор vba в excel

To set this property

Click BackColor > the down arrow > Pallet, and then pick a color.

Font type, style or size

Click Font > the . button and pick font type, size, or style.

Click ForeColor > the down arrow > Pallet, and then pick a color.

Link a cell to display selected list value.

Link Combo Box to a list

Click the box next to ListFillRange and type the cell range for the list.

Change the number of list items displayed

Click the ListRows box and type the number of items to be displayed.

Close the Property box and click Designer Mode.

After you complete the formatting, you can right-click the column that has the list and pick Hide.

Need more help?

You can always ask an expert in the Excel Tech Community, get support in the Answers community, or suggest a new feature or improvement on Excel User Voice.

5.3.4 Элемент управления ComboBox (комбинированный список)

Элемент управления ComboBox, метод AddItem(), свойство Value

Комбинированный список также используется очень часто. Этот элемент управления позволяет пользователю как выбирать «готовые» значения из списка, так и вводить значения самостоятельно (хотя это можно запретить). Пример элемента управления ComboBox представлен на рис. 5.4.

Рис. 5.4 Комбинированный список (элемент управления ComboBox)

Обычно ComboBox используется в двух ситуациях:

  • когда пользователю необходимо выбрать одно или несколько значений из списка размером от 4-х до нескольких десятков позиций. Если позиций меньше, то проще использовать переключатели, если больше — то ориентироваться в списке становится неудобно и необходимо использовать специальные приемы, когда пользователь вводит первые буквы нужного слова и в списке остаются только значения, которые начинаются на эти буквы;
  • когда список позиций для выбора необходимо формировать динамически на основании данных из источника (базы данных, листа Excel и т.п.)

К сожалению, через окно свойств заполнить список позициями не получится — для этой цели придется использовать специальный метод AddItem(). Обычно он помещается в обработчик события Initialize для формы. Применение его может выглядеть так:

Private Sub UserForm_Initialize()

ComboBox1.AddItem «Ленинградская область»

ComboBox1.AddItem «Московская область»

Параметр varIndex (необязательный) может использоваться для определения положения элемента в списке, но он не может превышать значения ListCount и поэтому для начальной загрузки ComboBox не подходит.

Самые важные свойства комбинированного списка:

  • ColumnCount, ColumnWidth, BoundColumn, ColumnHeads, RowSource — свойства, которые применяются при работе со списками из нескольких столбцов. Пользователями нелюбимы и к использованию не рекомендуются (гораздо проще сделать несколько комбинированных списков);
  • MatchEntry — будут ли при вводе пользователем первых символов значения выбраться подходящие позиции из списка. возможность очень удобная, рекомендуется сохранить значение, которое используется по умолчанию.
  • MatchRequired — разрешается ли пользователю вводить то значение, которого нет в списке. По умолчанию False, то есть разрешено.
  • Value (или Text) — позволяет программным способом установить выбранное значение в списке или вернуть выбранное/введенное пользователем значение.

Остальные свойства (AutoSize, Enabled, Locked, ControlText, ControlTipText, MaxLength) — применяются точно так же, как и для TextBox.

Главное событие для комбинированного списка — Change, то же, что и для TextBox. Обычно в обработчике этого события проверяются введенные пользователем значения, эти значения переносятся в текстовое поле или ListBox (если нужно дать пользователю возможность выбрать несколько значений, поскольку свойства MultiSelect у ComboBox нет) и т.п.

Ссылка на основную публикацию
Adblock
detector