Для полегшення введення даних в таблицю в Excel можна скористатися спеціальними формами, які допоможуть прискорити процес заповнення табличного діапазону інформацією. У Ексель є вбудований інструмент дозволяє виробляти заповнення подібним методом. Також користувач може створити власний варіант форми, яка буде максимально адаптована під його потреби, застосувавши для цього макрос. Давайте розглянемо різні варіанти використання цих корисних інструментів заповнення в Excel.
зміст
Форма заповнення є об'єктом з полями, назви яких співпадають з назвами колонок стовпців заповнюється таблиці. У ці поля потрібно вводити дані і вони тут же будуть додаватися новим рядком в табличний діапазон. Форма може виступати як у вигляді окремого вбудованого інструменту Excel, так і розташовуватися безпосередньо на аркуші у вигляді його діапазону, якщо вона створена самим користувачем.
Тепер давайте розглянемо, як користуватися цими двома видами інструментів.
Перш за все, давайте дізнаємося, як застосовувати вбудовану форму для введення даних Excel.
В поле «Вибрати команди з" встановлюємо значення «Команди не на стрічці». Далі зі списку команд, розташованого в алфавітному порядку, знаходимо і виділяємо позицію «Форма ...». Потім тиснемо на кнопку «Додати».
Крім того, за допомогою макросу і ряду інших інструментів існує можливість створити власну призначену для користувача форму для заповнення табличній області. Вона буде створюватися прямо на аркуші, і представляти собою її діапазон. За допомогою даного інструменту користувач сам зможе реалізувати ті можливості, які вважає потрібними. За функціоналом він практично ні в чому не буде поступатися вбудованому аналогу Excel, а де в чому, можливо, перевершувати його. Єдиний недолік полягає в тому, що для кожного табличного масиву доведеться складати окрему форму, а не застосовувати один і той же шаблон, як це можливо при використанні стандартного варіанту.
Існує ще один варіант відключення фільтра. При цьому не потрібно навіть буде переходити на іншу вкладку, залишаючись у вкладці «Головна». Після виділення осередку табличній області на стрічці в блоці налаштувань «Редагування» клацаємо по значку «Сортування і фільтр». У списку вибираємо позицію «Фільтр».
Другий стовпець об'єкта введення даних залишимо поки що порожнім. Безпосередньо в нього пізніше будуть вводитися значення для заповнення рядків основного табличного діапазону.
В поле «Name» теж можна замінити назву на більш зручне. Але це не обов'язково. При цьому допускається використання прогалин, кирилиці і будь-яких інших знаків. На відміну від попереднього параметра, який задає найменування листа для програми, даний параметр присвоює назву листу, видиме користувачеві на панелі ярликів.
Як бачимо, після цього автоматично зміниться і найменування Ліста 1 в області «Project», на те, що ми тільки що поставили в налаштуваннях.
Sub DataEntryForm()
Dim nextRow As Long
nextRow = Producty.Cells(Producty.Rows.Count, 2).End(xlUp).Offset(1, 0).Row
With Producty
If .Range("A2").Value = "" And .Range("B2").Value = "" Then
nextRow = nextRow - 1
End If
Producty.Range("Name").Copy
.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
.Range("A2").Formula = "=IF(ISBLANK(B2), """", COUNTA($B$2:B2))"
If nextRow > 2 Then
Range("A2").Select
Selection.AutoFill Destination:=Range("A2:A" & nextRow)
Range("A2:A" & nextRow).Select
End If
.Range("Diapason").ClearContents
End With
End Sub
Але цей код не універсальний, тобто, він в незмінному вигляді підходить тільки для нашого випадку. Якщо ви хочете його пристосувати під свої потреби, то його слід відповідно модифікувати. Щоб ви змогли зробити це самостійно, давайте розберемо, з чого цей код складається, що в ньому слід замінити, а що міняти не потрібно.
Отже, перший рядок:
Sub DataEntryForm()
«DataEntryForm» - це назва самого макросу. Ви можете залишити його як є, а можете замінити на будь-яке інше, яке відповідає загальним правилам створення найменувань макросів (відсутність пробілів, використання тільки букв латинського алфавіту і т.д.). Зміна найменування ні на що не вплине.
Скрізь, де зустрічається в коді слово «Producty» ви повинні його замінити на те найменування, яке раніше привласнили для свого листа в поле «(Name)» області «Properties» редактора макросів. Природно, це потрібно робити тільки в тому випадку, якщо ви назвали лист по-іншому.
Тепер розглянемо такий рядок:
nextRow = Producty.Cells(Producty.Rows.Count, 2).End(xlUp).Offset(1, 0).Row
Цифра «2» в даній сходинці означає другий стовпець аркуша. Саме в цьому стовпці знаходиться колонка «Найменування товару». По ній ми будемо вважати кількість рядів. Тому, якщо у вашому випадку аналогічний стовпець має інший порядок за рахунком, то потрібно ввести відповідне число. Значення «End (xlUp) .Offset (1, 0) .Row» в будь-якому випадку залишаємо без змін.
Далі розглянемо рядок
If .Range("A2").Value = "" And .Range("B2").Value = "" Then
«A2» - це координати першого осередку, в якій буде виводитися нумерація рядків. «B2» - це координати першого осередку, через яку здійснюватиметься висновок даних ( «Найменування товару»). Якщо вони у вас відрізняються, то введіть замість цих координат свої дані.
Переходимо до рядка
Producty.Range("Name").Copy
В ней параметр «Name» означат имя, которое мы присвоили полю «Наименование товара» в форме ввода.
В строках
.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» означают названия, которые мы присвоили полям «Количество» и «Цена» в той же форме ввода.
В этих же строках, которые мы указали выше, цифры «2» , «3» , «4» , «5» означают номера столбцов на листе Excel, соответствующих колонкам «Наименование товара» , «Количество» , «Цена» и «Сумма» . Поэтому, если в вашем случае таблица сдвинута, то нужно указать соответствующие номера столбцов. Если столбцов больше, то по аналогии нужно добавить её строки в код, если меньше – то убрать лишние.
В строке производится умножение количества товара на его цену:
.Cells(nextRow, 5).Value = Producty.Range("Volum").Value * Producty.Range("Price").Value
Результат, как видим из синтаксиса записи, будет выводиться в пятый столбец листа Excel.
В этом выражении выполняется автоматическая нумерация строк:
If nextRow > 2 Then
Range("A2").Select
Selection.AutoFill Destination:=Range("A2:A" & nextRow)
Range("A2:A" & nextRow).Select
End If
Все значения «A2» означают адрес первой ячейки, где будет производиться нумерация, а координаты « A» — адрес всего столбца с нумерацией. Проверьте, где именно будет выводиться нумерация в вашей таблице и измените данные координаты в коде, если это необходимо.
В строке производится очистка диапазона формы ввода данных после того, как информация из неё была перенесена в таблицу:
.Range("Diapason").ClearContents
Не трудно догадаться, что ( «Diapason» ) означает наименование того диапазона, который мы ранее присвоили полям для ввода данных. Если вы дали им другое наименование, то в этой строке должно быть вставлено именно оно.
Дальнейшая часть кода универсальна и во всех случаях будет вноситься без изменений.
После того, как вы записали код макроса в окно редактора, следует нажать на значок сохранения в виде дискеты в левой части окна. Затем можно его закрывать, щелкнув по стандартной кнопке закрытия окон в правом верхнем углу.
В нашем случае, например, логично будет дать ей имя «Добавить» . Переименовываем и кликаем мышкой по любой свободной ячейке листа.
Читайте також:
Как создать макрос в Excel
Как создать кнопку в Excel
В Экселе существует два способа применения формы заполнения данными: встроенная и пользовательская. Применение встроенного варианта требует минимум усилий от пользователя. Его всегда можно запустить, добавив соответствующий значок на панель быстрого доступа. Пользовательскую форму нужно создавать самому, но если вы хорошо разбираетесь в коде VBA, то сможете сделать этот инструмент максимально гибким и подходящим под ваши нужды.