Страницы

Поиск по вопросам

пятница, 7 июня 2019 г.

Как в VBA при начале выполнения макроса указать окно для ввода нескольких значений?

В общем при выполнении макроса мне нужно открыть диалоговое окно в котором будет сразу несколько полей и combobox с выбором. После указания всех значений мне нужно с ними работать. Как создать такое окно? В комбобоксе должно быть указано "Машина, Марка". Всего 2 значения в комбобоксе: Машина1 Марка1, Машина2 Марка2. Но дальше при работе мне нужно будет записать это в разные ячейки, к примеру в А1: Машина1, в А2: Марка1, А3: масса нетто, а4: масса брутто и т.д.
На данный момент у меня по очереди открываются окна в которых я ввожу по 1 значению, combobox вообще не знаю как сделать.
Вот как я открываю нужные мне окна, но они должны быть в одном окне:
inputNetto = Val(InputBox("Введите вес Нетто")) NewWorkbook.Worksheets(1).Cells(3, 25).Value = inputNetto
inputBrutto = Val(InputBox("Введите вес Брутто")) NewWorkbook.Worksheets(1).Cells(27, 23).Value = inputBrutto
inputPallets = Val(InputBox("Введите кол-во палетов")) NewWorkbook.Worksheets(1).Cells(27, 26).Value = inputPallets
Подскажите как реализовать такое окно, буду очень благодарен


Ответ

Нет такого диалогового окна. Нужно рисовать форму (UserForm).
Создаем форму - Insert-UserForm. Кнопочкой ToolBox вызываем окошко с элементами формы. Перетаскиваем нужные элементы на форму, размещае/форматируем. Параметры элемента (или формы) задаются в окне Properties (по F4).
Обработки элементов и самой формы (инициализирование, активация, изменение, выход и проч.) прописываются в модуле формы (ПКМ на форме - View Code)/
Двойной клик на элементе создает пустой макрос (обычно - событие изменения), в теле которого можно дописать необходимый код:
Private Sub TextBox1_Change()
End Sub
Для удобства работы с формой элементы желательно переименовать:
tBoxName - TextBox для ввода имени, cButClose - кнопка закрытия и проч.
Часто при открытии формы должны быть заполнены списки, в зависимости от ситуации вписаны данные... Для придания форме требуемого вида - событие инициализации формы:
Private Sub UserForm_Initialize()

Комментариев нет:

Отправить комментарий