заполнение таблицы excel через форму vba

VBA Excel. Пользовательская автоформа (создание)

Создание пользовательской автоформы с помощью кода VBA и ее преимущества перед встроенной автоформой Excel. Отображение встроенной автоформы.

Встроенная автоформа Excel

Чтобы использовать в Excel встроенную автоформу, необходимо добавить кнопку ее вызова на панель инструментов. Как это сделать, смотрите в статье «Умная таблица» в Excel.

Встроенная автоформа работает с любой таблицей Excel, а не только с «умной». Главное, чтобы приложение могло интерпретировать диапазон как таблицу. Для этого необходимо выделить заголовки столбцов отличающимся от тела таблицы форматированием (цветом, курсивом, полужирным начертанием) и заполнить хотя бы одну строку.

Чтобы отобразить встроенную автоформу Excel, выберите ячейку внутри таблицы и нажмите кнопку вызова автоформы на панели инструментов.

заполнение таблицы excel через форму vba

Главный недостаток встроенной автоформы Excel заключается в невозможности использования раскрывающихся списков для заполнения ее полей. Для таблицы на изображении выше мы создадим с помощью кода VBA Excel пользовательскую автоформу с текстовыми полями и раскрывающимися списками.

Создание пользовательской автоформы

Рабочая таблица и списки

Наименования полей и наборы данных для раскрывающихся списков при создании пользовательской автоформы будем брать с листа «Списки».

заполнение таблицы excel через форму vba

Все изменения в наименования полей и наборы данных также вносятся на листе «Списки». На лист «Таблица» наименования граф копируются с листа «Списки» формулами, строка заголовков закреплена и добавлена кнопка «Новая запись» для вызова пользовательской автоформы.

заполнение таблицы excel через форму vba

В коде VBA, создающем автоформу, используются имена листов: Лист1 («Таблица») и Лист2 («Списки»). Благодаря этому, можно переименовывать ярлычки листов без внесения изменений в код. Кнопка «Новая запись» добавлена на рабочий лист из коллекции «Элементы ActiveX».

Создание проекта формы

Добавьте в проект VBA пользовательскую форму UserForm1 и добавьте на нее кнопки CommandButton1 и CommandButton2:

заполнение таблицы excel через форму vba

Размеры формы и кнопок не имеют значения, мы будем задавать их программно.

Код инициализации автоформы

В процессе инициализации формы мы будем добавлять элементы управления, их расположение и размеры. Наименования полей таблицы будут записаны в параметры Caption элементов Label.

Поля таблицы для заполнения в пользовательской автоформе будут представлены элементами TextBox и ComboBox. Если в таблице на листе «Списки» под наименованием графы есть данные для раскрывающегося списка, на форму добавляется ComboBox, если нет – TextBox.

Процедура размещается в модуле пользовательской формы UserForm1.

Источник

Excel: форма ввода данных в таблицу

Доброго времени суток!
Но форуме в первый раз, так что извините, если что не так.
Мне нужно быстро заполнять таблицу в экселе, через гуглпоиск нашла, что это надо сделать форму ввода и через программирование. Мои знания экселя на этом заканчиваются.
Суть такая, я хочу нажимать на горячие клавиши, чтобы появлялась форма, далее я начинаю вводить информацию, она должна искаться в столбце (только уникальные само собой), и если я выбираю этот вариант, то автоматически подставляются значение из соседних столбцов, но только если количество данного товара один, если не один, то общую сумму поделить на количество и присвоить это в цену.
Одно из полей это должна быть дата (календарь для выбора).
И еще в поле количество значение по уполчанию 1.
В общем объяснила как смогла, лучше посмотрите на таблицу и сразу все поймете.
__новая таблица учета.xlsx

Форма ввода данных в таблицу VBA макрос
Доброго времени суток! Но форуме во второй раз, так что извините, если что не так. Мне нужно.

Разработать форму для ввода данных в таблицу на рабочем листе Excel
Форма такая: Название фильма/Жанр/Год выпуска/Страна/Продолжительность в мин.

Форма для ввода данных в таблицу
Здравствуйте. Не получается создать форму для ввода данных в таблицу. Форма должна быть создана в.

Форма для ввода данных в таблицу
Здравствуйте! Есть задание: 1.Создать таблицы: Таблица 1. Регионы Структура таблицы: Код.

Источник

Microsoft Excel

трюки • приёмы • решения

Как в VBA Excel сделать автоматизацию заполнения списка заказа в фирме, занимающейся ремонтом

Будем считать, что наша условная организация занимается поставками покупателям дорогостоящей строительной техники. Кроме непосредственно поставок, еще один из участков деятельности связан с ее ремонтом. Разрабатываемая далее книга Microsoft Excel будет включать несколько листов данных и несколько листов управления. Исходная ситуация такова: мы располагаем рядом клиентов (заказчиков), которые обращаются к нам по поводу ремонта проданной им техники (ремонт в течение гарантийного срока является вполне нормальным делом).

Технически сам ремонт, как правило, связан с заменой большого количества деталей. С учетом этого, очевидно, что существуют определенные трудности работы персонала, связанные с обеспечением хранения и извлечения необходимой информации по договорам с клиентами, а также с формированием отчетов по клиентам и договорам. В рабочей книге Microsoft Excel мы разработаем единую информационную базу, которая позволит существенно облегчить труд сотрудников офиса. Это облегчение работы будет достигнуто за счет размещения в книге элементов управления и последующего их программирования.

Итак, начнем работу с создания новой рабочей книги Microsoft Excel. Один из ее листов показан на рис. 3.1. В нем размещается справочная информация по нашим заказчикам (клиентам). Каждая строка на листе Клиенты представляет запись об одной из наших организаций-партнеров. Обратим внимание на то, что в дальнейшем в программных процедурах обращение к данному листу будет производиться по имени, поэтому следует присвоить ему имя Клиенты. Столбец Код предназначен для присвоения каждой фирме уникального кода (для того, чтобы однозначно идентифицировать каждую фирму). В целом информация, представленная в строках листа (см. рис. 3.1), достаточно стандартная: название, адрес, телефон, факс и ряд финансовых реквизитов.

заполнение таблицы excel через форму vba

Рис. 3.1. Справочная информация о клиентах

В верхней части листа располагается кнопка для ввода очередной записи о новой фирме. Конечно, пользователь, при появлении у нашей организации очередного партнера, может непосредственно внести информацию о нем в очередную свободную строку. Однако для удобства, с одной стороны, и контроля возможных технических ошибок, с другой, мы разработаем более удобную технологию.

К кнопке ввода нового клиента мы еще вернемся, а пока разберем следующий шаг, связанный с созданием формы ввода, которая приведена на рис. 3.2. От пользователя требуется внести данные в необходимые поля и щелкнуть на кнопке Внести для фиксации введенной информации на листе Клиенты. Это приведет к тому, что в очередную свободную строку листа будут внесены сведения по новой фирме. При этом процедура обработки щелчка на кнопке Внести предварительно проверит, встречался ли уже такой код у фирм. Если да, то ввод будет отменен. Также ввод будет отменен, если пользователь оставит поле пустым. Кроме того, процедура посмотрит: не является ли данная запись дублирующей (если уже имеется строка, включающая данное название фирмы, а также указанный адрес). И в этом случае ввод информации на лист Клиенты будет отменен.

заполнение таблицы excel через форму vba

Рис. 3.2. Форма ввода информации о клиентах

Таким образом, наша ближайшая цель — создать форму ввода (рис. 3.2) и расположить на ней необходимые элементы управления. С формами мы еще не сталкивались, поэтому рассмотрим процесс их создания более подробно. Для создания пользовательской формы необходимо перейти в окно редактора Visual Basic. Здесь требуется воспользоваться разделом UserForm в меню Insert (рис. 3.3). В результате на экране появится новая форма, которая фактически представляет собой контейнер для размещения на ней необходимых элементов управления.

заполнение таблицы excel через форму vba

Рис. 3.3. Пользовательская форма в среде Microsoft Visual Basic

У формы, как и у любого элемента управления, есть свойства. Для того чтобы открыть окно свойств, следует воспользоваться разделом Properties Window из меню View. Изменим значение Name на Client, а также значение свойства CaptionФорма для ввода нового клиента. В результате в заголовке формы будет отражен новый текст. Что касается свойства Name, то оно нам понадобится при работе с формой (при активизации формы).

Далее расположим на форме необходимые элементы управления. Для этого сначала необходимо отобразить на экране панель инструментов (View ► Toolbox). В соответствии с рис. 3.2 на форме нам следует разместить 7 элементов управления типа Label (надпись) и 7 элементов TextBox (текстовое окно). При этом значения свойства Name для надписей принципиального значения не имеют, так как программно мы обращаться к ним не будем. Для этих элементов выберите рассматриваемые значения произвольно (главное, чтобы не было повторяющихся имен — иначе среда Microsoft Visual Basic обратит на это внимание). Аналогичное свойство для текстовых окоп лам потребуется в программных процедурах, поэтому в табл. 3 приведены значения свойства Name текстовых окон, которые следует установить.

Таблица 3.1. Значения свойства Name текстовых окон

ПодписьName
КодCod
Название фирмыFirma
АдресAdress
ТелефонTel
ФаксFax
ИННInn
КППKpp

От пользователя требуется внести информацию в текстовые окна, расположенные на форме, после чего щелкнуть на кнопке Внести. Это приводит к выполнению процедуры, которая должна предварительно проверить корректность вводимых данных. Если на листе запись с указанным кодом фирмы уже существует, то процедура обратит на это внимание. Также процедура обратит внимание, если на листе уже присутствует фирма с аналогичным названием и с тем же указанным адресом. Текст данной процедуры приведен в листинге 3.1.

‘ Листинг 3.1. Обработка щелчка на кнопке Внести на форме Private Sub CommandButton1_Click() If Cod.Text = «» Then MsgBox («Поле КОД необходимо заполнить») Exit Sub End If Nom = 0 While Worksheets(«Клиенты»).Cells(Nom + 2, 2).Value <> «» Nom = Nom + 1 Wend For i = 1 To Nom If CStr(Worksheets(«Клиенты»).Cells(i + 1, 2).Value = _ CStr(Firma.Text) And _ CStr(Worksheets(«Клиенты»).Cells(i + 1, 3).Value) = _ CStr(Adress.Text)) Then MsgBox («Такой код фирмы уже встречался») Exit Sub End If Next Worksheets(«Клиенты»).Cells(i + 1, 1).Value = Cod.Text Worksheets(«Клиенты»).Cells(i + 1, 2).Value = Firma.Text Worksheets(«Клиенты»).Cells(i + 1, 3).Value = Adress.Text Worksheets(«Клиенты»).Cells(i + 1, 4).Value = Tel.Text Worksheets(«Клиенты»).Cells(i + 1, 5).Value = Fax.Text Worksheets(«Клиенты»).Cells(i + 1, 6).Value = Inn.Text Worksheets(«Клиенты»).Cells(i + 1, 7).Value = Kpp.Text MsgBox («Информация внесена») Client.Hide End Sub

Новый момент связал с предпоследней строкой текста в листинге 3.1. Здесь для формы Client применяется метод Hide, который приводит к закрытию этой формы. Разумеется, ее необходимо сначала отобразить, и об этом мы еще не упоминали. В листинге 3.2 приведена процедура, которая выполняется по щелчку на кнопке Ввести нового клиента (см. рис. 3.1). Здесь для отображения на экране формы Client используется метод Show.

‘ Листинг 3.2. Обработка щелчка на кнопке Ввести нового клиента Private Sub CommandButton1_Click() Client.Show End Sub

На рис. 3.4 приведен результат заполнения формы данными об очередной фирме. Теперь щелчком на кнопке Внести это данные переносятся на текущий рабочий лист (в очередную свободную строку).

заполнение таблицы excel через форму vba

Рис. 3.4. Внесение информации о новом клиенте

Перейдем к разработке еще двух листов. Один из них под названием Номенклатура показан на рис. 3.5. В каждой строке листа располагается название конкретной запасной части. Значение в столбце Номер запчасти позволяет однозначно ее идентифицировать.

заполнение таблицы excel через форму vba

Рис. 3.5. Информация о номенклатуре

Лист Номенклатура является справочным и не содержит элементов управления. Технически пользователь просто вручную заполняет данный прайс-лист. Еще один лист, который также не содержит элементов управления, показан на рис. 3.6. Здесь содержится информация о заказах — названиях и их составе. Столбец А предназначен для уникального кода каждого заказа. Далее располагаются поля для отображения даты заказа и кода фирмы (по коду фирмы легко определить необходимые реквизиты организации).

заполнение таблицы excel через форму vba

Рис. 3.6. Лист для хранения информации о заказах

Начиная с пятого столбца размещается информация о запасных частях, которые входят в заказ. Структура этой информации выглядит следующим образом: в пятом столбце код запчасти, далее в шестом количество таких запчастей в заказе, затем в седьмом столбце код другой запчасти, и далее их количество. Таким образом, в каждой строке перечисляется все содержимое определенного заказа. Понятно, что вручную заполнять подобную информацию не слишком удобно. Для этого мы создадим специальный лист с необходимыми элементами управления. В результате будет обеспечено удобство для пользователя, а также контроль уникальности кода заказа. Лист, который будет выполнять необходимый «функционал», показан на рис. 3.7. В качестве названия листа выберем Бланк для нового заказа.

Рассмотрим организацию листа Бланк для нового заказа и техническую работу пользователя с ним. Ячейка C1 отводится для номера заказа. Ниже поясняющего текста Заказчик (расположенного в ячейке А1) располагается элемент управления «Поле со списком». В качестве значения свойства Name этого элемента управления выбрано Firma. Ниже поясняющего текста Список запчастей располагается еще один элемент управления «Поле со списком». В качестве значения свойства Name выбрано Spk.

Щелчком на определенной запчасти она включается в заказ, который формируется с 11-й строки на данном листе. Столбцы Номер запчасти, Наименование и Цена заполняются исходя из имеющейся информации на листе Номенклатура. Пользователю следует лишь внести количество единиц указанной детали в перечне запасных частей. Для этого предназначено текстовое окно (Name — Col) с надписью выше — Количество. После этого осталось щелкнуть на кнопке Включить (Name — InputNom), и в очередную свободную строку на данном листе запишется новая позиция заказа.

заполнение таблицы excel через форму vba

Рис. 3.7. Лист для формирования заказа

После того как список запасных частей таким образом заполнен и номер заказа указан, осталось щелкнуть на кнопке Включить в список заказов. В качестве значения свойства Name этой кнопки выбрано InputSpk. За счет программной процедуры это приводит к переносу информации о заказе на лист Названия заказов. Таким образом, теперь можно перейти к рассмотрению процедур, которые обеспечивают выполнение описанных действий. Когда пользователь в процессе работы с книгой переходит на лист Бланк для нового заказа, списки заказчиков и запасных частей должны быть заполнены. Проще всего это обеспечить с помощью процедуры, выполняемой при активизации листа, которая представлена в листинге 3.3.

‘ Листинг 3.3. Процедура, выполняемая при активизации листа Private Sub Worksheet_Activate() Firma.Clear N = 0 While Worksheets(«Клиенты»).Cells(N + 2, 1).Value <> «» N = N + 1 Wend For i = 1 To N Firma.AddItem Worksheets(«Клиенты»).Cells(i + 2, 2).Value Next Spk.Clear N = 0 While Worksheets(«Nomen»).Cells(N + 2, 1).Value <> «» N = N + 1 Wend For i = 1 To N Spk.AddItem Worksheets(«Nomen»).Cells(i + 1, 1).Value + _ «» + Worksheets(«Номенклатура»).Cells(i + 1, 2).Value + «» + _ CStr(Worksheets(«Номенклатура»).Cells(i + 1, 3).Value) + «руб.» Next End Sub

Приведенная процедура заполнения полей со списками организаций и запчастей похожа на рассмотренные ранее примеры и не требует комментария. Более интересна следующая процедура (листинг 3.4), которая выполняется при щелчке на кнопке Включить.

‘ Листинг 3.4. Процедура обработки щелчка на кнопке Включить Private Sub InputNom_Click() Nom = Spk.ListIndex N = 0 While Cells(N + 11, 1).Value <> «» N = N + 1 Wend Cells(N + 11, 1) = Worksheets(«Номенклатура»).Cells(Spk.ListIndex + 2, 1) Cells(N + 11, 2) = Worksheets(«Номенклатура»).Cells(Spk.ListIndex + 2, 2) Cells(N + 11, 3) = Worksheets(«Номенклатура»).Cells(Spk.ListIndex + 2, 3) Cells(N + 11, 4) = Col.Text End Sub

Здесь в переменную Nom заносится индекс (номер) элемента, который выделен в элементе управления «Поле со списком», отведенном для запасных частей. Далее подсчитывается число уже заполненных позиций в заказе — они располагаются начиная с 11-й строки. После этого в следующую свободную строку заносится очередная запись. При этом количество единиц указанной позиции заказа извлекается из содержимого текстового окна Col.

Теперь на очереди другая процедура (листинг 3.5), которая переносит информацию с листа Бланк для нового заказа на лист Названия заказов, о котором мы уже говорили. В начале процедуры InputSpk_Click() предварительно проверяется — внесена ли информация в ячейку C1. Далее производится поиск присутствия заказа с указанным на листе номером. В случае положительного ответа на этот вопрос процедура не производит запись, а возвращает пользователя к работе с листом формирования нового заказа. В случае уникальности нового номера заказа процедура последовательно переносит имеющуюся информацию в каталог заказов. Для формирования даты используется стандартная функция VBA Date.

Таким образом, мы обеспечили удобный механизм внесения информации в лист Названия заказов. На рис. 3.8 показан результат ввода двух заказов на запасные части.

заполнение таблицы excel через форму vba

Рис. 3.8. Пример формирования заказов

Перейдем к отчетам, и один из них показан на рис. 3.9. На этом листе часть информации статична (заголовок и подписи столбцов), а ряд ячеек заполняется исходя из содержания конкретного заказа, которое зафиксировано на листе Названия заказов.

заполнение таблицы excel через форму vba

Рис. 3.9. Отчет о заказе

Нам требуется программно обеспечить заполнение ячеек листа, отводимых для номера заказа, заказчика, а также заполнение адреса, телефона и факса. Табличная часть на рис. 3.9 используется в случае, если число позиций в заказе не превышает трех. В противном случае данная табличная часть не заполняется, а создается другой документ — Приложение (рис. 3.10). Наша задача — обеспечить данные функциональные особенности разрабатываемой книги.

заполнение таблицы excel через форму vba

Рис. 3.10. Приложение к отчету о заказе

Для заполнения отчета о заказе (и при необходимости приложения к нему) па листе Названия заказов создадим кнопку Создать отчет (см. рис. 3.8). По нажатию этой кнопки будет открываться форма, где от пользователя требуется выбрать заказ, по которому необходимо сформировать отчет. На рис. 3.11 показана данная форма ввода в окне редактора Visual Basic.

Процедура, вызываемая щелчком на кнопке Создать отчет, представлена в листинге 3.6. Ее назначение — открыть форму, обеспечивающую необходимый интерфейс для формирования отчета (см. рис. 3.11).

‘ Листинг 3.6. Процедура обработки щелчка на кнопке Создать отчет Private Sub CommandButton1_Click() Zakaz.Show End Sub

заполнение таблицы excel через форму vba

Рис. 3.11. Форма выбора заказа для отчета

В листинге 3.7 приведена процедура, которая выполняется при активизации формы. Ее назначение заключается в заполнении элемента управления «Поле со списком». При этом сначала подсчитывается количество заказов, уже имеющихся в базе данных. Информация о том, какая фирма его сделала, расположена на листе Клиенты. Поэтому для заполнения поля со списком на рис. 3.11 необходимо обратиться к информации о клиентах.

‘ Листинг 3.7. Процедура, выполняемая при активизации формы Private Sub UserForm_Activate() ‘ Подсчет числа заказов Nom = 0 While Worksheets(«Названия заказов»).Cells(Nom + 2, 1).Value <> «» Nom = Nom + 1 Wend ‘ Подсчет числа фирм Nfir = 0 While Worksheets(«Клиенты»).Cells(Nfir + 2, 1).Value <> «» Nfir = Nfir + 1 Wend ‘ Очистка и последующее заполнение поля со списком Spk.Clear ‘ Перебор числа заказов For i = 1 To Nom ‘ Извлечение кода фирмы NomFirma = Worksheets(«Названия заказов»).Cells(i + 1, 3).Value For j = 1 To Nfir If NomFirma = Worksheets(«Клиенты»).Cells(j + 1, 1).Value Then Firma = Worksheets(«Клиенты»).Cells(j + 1, 2).Value ‘ При нахождении фирмы выход из цикла Exit For End If Next Spk.AddItem CStr(Worksheets(«Названия заказов»).Cells(i + 1, 1).Value) _ + » » + CStr(Worksheets(«Названия заказов»).Cells(i + 1, 2).Value) _ + » » + CStr(Firma) Next End Sub

Теперь пользователь должен выбрать интересующую его фирму (рис. 3.12). Следующая процедура — обработка щелчка на кнопке Заполнить акт и приложение. Учитывая сложность полного программного кода, приведем его сначала для варианта заполнения только листа АКТ (листинг 3.8).

заполнение таблицы excel через форму vba

Рис. 3.12. Выбор заказа для отчета

В зависимости от количества позиций заказа процедура позволяет заполнить или только лист АКТ, или параллельно с актом еще и лист Приложение. В листинге 3.8 приведен первоначальный вариант, который приводит к заполнению только листа АКТ (в случае количества заявок не более трех).

Источник

Формы ввода данных в Microsoft Excel

заполнение таблицы excel через форму vba

Для облегчения ввода данных в таблицу в Excel можно воспользоваться специальными формами, которые помогут ускорить процесс заполнения табличного диапазона информацией. В Экселе имеется встроенный инструмент позволяющий производить заполнение подобным методом. Также пользователь может создать собственный вариант формы, которая будет максимально адаптирована под его потребности, применив для этого макрос. Давайте рассмотрим различные варианты использования этих полезных инструментов заполнения в Excel.

Применение инструментов заполнения

Форма заполнения представляет собой объект с полями, наименования которых соответствуют названиям колонок столбцов заполняемой таблицы. В эти поля нужно вводить данные и они тут же будут добавляться новой строкой в табличный диапазон. Форма может выступать как в виде отдельного встроенного инструмента Excel, так и располагаться непосредственно на листе в виде его диапазона, если она создана самим пользователем.

Теперь давайте рассмотрим, как пользоваться этими двумя видами инструментов.

Способ 1: встроенный объект для ввода данных Excel

Прежде всего, давайте узнаем, как применять встроенную форму для ввода данных Excel.

заполнение таблицы excel через форму vba

В поле «Выбрать команды из» устанавливаем значение «Команды не на ленте». Далее из списка команд, расположенного в алфавитном порядке, находим и выделяем позицию «Форма…». Затем жмем на кнопку «Добавить».

заполнение таблицы excel через форму vba

заполнение таблицы excel через форму vba

заполнение таблицы excel через форму vba

заполнение таблицы excel через форму vba

заполнение таблицы excel через форму vba

заполнение таблицы excel через форму vba

заполнение таблицы excel через форму vba

заполнение таблицы excel через форму vba

заполнение таблицы excel через форму vba

заполнение таблицы excel через форму vba

заполнение таблицы excel через форму vba

заполнение таблицы excel через форму vba

заполнение таблицы excel через форму vba

заполнение таблицы excel через форму vba

заполнение таблицы excel через форму vba

заполнение таблицы excel через форму vba

заполнение таблицы excel через форму vba

заполнение таблицы excel через форму vba

заполнение таблицы excel через форму vba

Способ 2: создание пользовательской формы

Кроме того, с помощью макроса и ряда других инструментов существует возможность создать собственную пользовательскую форму для заполнения табличной области. Она будет создаваться прямо на листе, и представлять собой её диапазон. С помощью данного инструмента пользователь сам сможет реализовать те возможности, которые считает нужными. По функционалу он практически ни в чем не будет уступать встроенному аналогу Excel, а кое в чем, возможно, превосходить его. Единственный недостаток состоит в том, что для каждого табличного массива придется составлять отдельную форму, а не применять один и тот же шаблон, как это возможно при использовании стандартного варианта.

заполнение таблицы excel через форму vba

заполнение таблицы excel через форму vba

заполнение таблицы excel через форму vba

заполнение таблицы excel через форму vba

Существует ещё один вариант отключения фильтра. При этом не нужно даже будет переходить на другую вкладку, оставаясь во вкладке «Главная». После выделения ячейки табличной области на ленте в блоке настроек «Редактирование» щелкаем по значку «Сортировка и фильтр». В появившемся списке выбираем позицию «Фильтр».

заполнение таблицы excel через форму vba

заполнение таблицы excel через форму vba

Второй столбец объекта ввода данных оставим пока что пустым. Непосредственно в него позже будут вводиться значения для заполнения строк основного табличного диапазона.

заполнение таблицы excel через форму vba

заполнение таблицы excel через форму vba

заполнение таблицы excel через форму vba

заполнение таблицы excel через форму vba

заполнение таблицы excel через форму vba

заполнение таблицы excel через форму vba

заполнение таблицы excel через форму vba

заполнение таблицы excel через форму vba

заполнение таблицы excel через форму vba

заполнение таблицы excel через форму vba

заполнение таблицы excel через форму vba

заполнение таблицы excel через форму vba

заполнение таблицы excel через форму vba

заполнение таблицы excel через форму vba

заполнение таблицы excel через форму vba

заполнение таблицы excel через форму vba

заполнение таблицы excel через форму vba

заполнение таблицы excel через форму vba

В поле «Name» тоже можно заменить название на более удобное. Но это не обязательно. При этом допускается использование пробелов, кириллицы и любых других знаков. В отличие от предыдущего параметра, который задает наименование листа для программы, данный параметр присваивает название листу, видимое пользователю на панели ярлыков.

Как видим, после этого автоматически изменится и наименование Листа 1 в области «Project», на то, которое мы только что задали в настройках.

заполнение таблицы excel через форму vba

заполнение таблицы excel через форму vba

Но этот код не универсальный, то есть, он в неизменном виде подходит только для нашего случая. Если вы хотите его приспособить под свои потребности, то его следует соответственно модифицировать. Чтобы вы смогли сделать это самостоятельно, давайте разберем, из чего данный код состоит, что в нем следует заменить, а что менять не нужно.

Итак, первая строка:

«DataEntryForm» — это название самого макроса. Вы можете оставить его как есть, а можете заменить на любое другое, которое соответствует общим правилам создания наименований макросов (отсутствие пробелов, использование только букв латинского алфавита и т.д.). Изменение наименования ни на что не повлияет.

Везде, где встречается в коде слово «Producty» вы должны его заменить на то наименование, которое ранее присвоили для своего листа в поле «(Name)» области «Properties» редактора макросов. Естественно, это нужно делать только в том случае, если вы назвали лист по-другому.

заполнение таблицы excel через форму vba

Теперь рассмотрим такую строку:

nextRow = Producty.Cells(Producty.Rows.Count, 2).End(xlUp).Offset(1, 0).Row

Цифра «2» в данной строчке означает второй столбец листа. Именно в этом столбце находится колонка «Наименование товара». По ней мы будем считать количество рядов. Поэтому, если в вашем случае аналогичный столбец имеет другой порядок по счету, то нужно ввести соответствующее число. Значение «End(xlUp).Offset(1, 0).Row» в любом случае оставляем без изменений.

заполнение таблицы excel через форму vba

Далее рассмотрим строку

«A2» — это координаты первой ячейки, в которой будет выводиться нумерация строк. «B2» — это координаты первой ячейки, по которой будет производиться вывод данных («Наименование товара»). Если они у вас отличаются, то введите вместо этих координат свои данные.

заполнение таблицы excel через форму vba

Переходим к строке

В ней параметр «Name» означат имя, которое мы присвоили полю «Наименование товара» в форме ввода.

заполнение таблицы excel через форму vba

.Cells(nextRow, 2).PasteSpecial Paste:=xlPasteValues
.Cells(nextRow, 3).Value = Producty.Range(«Volum»).Value
.Cells(nextRow, 4).Value = Producty.Range(«Price»).Value
.Cells(nextRow, 5).Value = Producty.Range(«Volum»).Value * Producty.Range(«Price»).Value

наименования «Volum» и «Price» означают названия, которые мы присвоили полям «Количество» и «Цена» в той же форме ввода.

заполнение таблицы excel через форму vba

В этих же строках, которые мы указали выше, цифры «2», «3», «4», «5» означают номера столбцов на листе Excel, соответствующих колонкам «Наименование товара», «Количество», «Цена» и «Сумма». Поэтому, если в вашем случае таблица сдвинута, то нужно указать соответствующие номера столбцов. Если столбцов больше, то по аналогии нужно добавить её строки в код, если меньше – то убрать лишние.

заполнение таблицы excel через форму vba

В строке производится умножение количества товара на его цену:

.Cells(nextRow, 5).Value = Producty.Range(«Volum»).Value * Producty.Range(«Price»).Value

Результат, как видим из синтаксиса записи, будет выводиться в пятый столбец листа Excel.

заполнение таблицы excel через форму vba

В этом выражении выполняется автоматическая нумерация строк:

If nextRow > 2 Then
Range(«A2»).Select
Selection.AutoFill Destination:=Range(«A2:A» & nextRow)
Range(«A2:A» & nextRow).Select
End If

Все значения «A2» означают адрес первой ячейки, где будет производиться нумерация, а координаты « — адрес всего столбца с нумерацией. Проверьте, где именно будет выводиться нумерация в вашей таблице и измените данные координаты в коде, если это необходимо.

заполнение таблицы excel через форму vba

В строке производится очистка диапазона формы ввода данных после того, как информация из неё была перенесена в таблицу:

Не трудно догадаться, что («Diapason») означает наименование того диапазона, который мы ранее присвоили полям для ввода данных. Если вы дали им другое наименование, то в этой строке должно быть вставлено именно оно.

заполнение таблицы excel через форму vba

Дальнейшая часть кода универсальна и во всех случаях будет вноситься без изменений.

После того, как вы записали код макроса в окно редактора, следует нажать на значок сохранения в виде дискеты в левой части окна. Затем можно его закрывать, щелкнув по стандартной кнопке закрытия окон в правом верхнем углу.

заполнение таблицы excel через форму vba

заполнение таблицы excel через форму vba

заполнение таблицы excel через форму vba

заполнение таблицы excel через форму vba

В нашем случае, например, логично будет дать ей имя «Добавить». Переименовываем и кликаем мышкой по любой свободной ячейке листа.

заполнение таблицы excel через форму vba

заполнение таблицы excel через форму vba

заполнение таблицы excel через форму vba

заполнение таблицы excel через форму vba

заполнение таблицы excel через форму vba

В Экселе существует два способа применения формы заполнения данными: встроенная и пользовательская. Применение встроенного варианта требует минимум усилий от пользователя. Его всегда можно запустить, добавив соответствующий значок на панель быстрого доступа. Пользовательскую форму нужно создавать самому, но если вы хорошо разбираетесь в коде VBA, то сможете сделать этот инструмент максимально гибким и подходящим под ваши нужды.

Помимо этой статьи, на сайте еще 12409 инструкций.
Добавьте сайт Lumpics.ru в закладки (CTRL+D) и мы точно еще пригодимся вам.

Отблагодарите автора, поделитесь статьей в социальных сетях.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *