Страницы

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

понедельник, 30 марта 2020 г.

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

#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


Подскажите как реализовать такое окно, буду очень благодарен
    


Ответы

Ответ 1



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

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

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