Как сделать формы в excel

Создание форм для заполнения и печати в Excel

Вы можете создать форму в Excel, добавив в книгу элементы управления содержимым, такие как кнопки, флажки, списки и поля со списками. После этого другие пользователи смогут заполнить эту форму в приложении Excel и при желании распечатать ее.

Шаг 1. Отображение вкладки "Разработчик".

В меню Excel выберите элемент Параметры.

В разделе Разработка выберите Представление.

В разделе Показывать на ленте установите флажок Вкладка "Разработчик".

Шаг 2. Добавление и форматирование элементов управления содержимым

На вкладке Разработчик выберите элемент управления, который хотите добавить.

На листе щелкните место, куда нужно вставить элемент управления.

Чтобы задать свойства элемента управления, щелкните его, удерживая нажатой клавишу CONTROL, и выберите пункт Формат элемента управления.

В окне Формат объекта задайте такие свойства элемента управления, как шрифт, выравнивание и цвет.

Повторите действия 1–4 для каждого добавляемого элемента управления.

Шаг 3. Защита листа, содержащего форму

В меню Сервис наведите указатель на пункт Защита и выберите команду Защитить лист.

Выберите нужные параметры защиты.

Сохраните и закройте книгу.

Совет: Чтобы продолжить редактирование после защиты формы, в меню Сервис наведите указатель на пункт Защита и выберите команду Снять защиту листа.

Шаг 4. Проверка формы (необязательно)

При необходимости вы можете проверить форму, прежде чем распространять ее.

Защитите форму, как указано в описании шага 3.

Откройте форму еще раз, заполните ее обычным способом и сохраните как копию.

Как в офисе.

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

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

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

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

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

Наименование для листа в Microsoft Excel

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

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

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

Второй столбец таблицы в Microsoft Excel

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

If .Range("A2").Value = "" And .Range("B2").Value = "" Then

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

Две первые ячейки таблицы с данными в Microsoft Excel

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

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

Имя поля наименования товара в форме ввода в Microsoft Excel

.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» означают названия, которые мы присвоили полям «Количество» и «Цена» в той же форме ввода.

Наименование полей количество и цена в Microsoft Excel

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

Колонки в таблице в Microsoft Excel

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

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

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

Колонка для вывода суммы в Microsoft Excel

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

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

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

Столбец с нумерацией в Microsoft Excel

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

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

Наименование полей для ввода данных в Microsoft Excel

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

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

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