Создание формы в excel пример

Содержание

  • Применение инструментов заполнения
    • Способ 1: встроенный объект для ввода данных Excel
    • Способ 2: создание пользовательской формы
  • Вопросы и ответы

Форма в Microsoft Excel

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

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

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

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

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

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

  1. Нужно отметить, что по умолчанию значок, который её запускает, скрыт и его нужно активировать. Для этого переходим во вкладку «Файл», а затем щелкаем по пункту «Параметры».
  2. Переход в параметры в Microsoft Excel

  3. В открывшемся окне параметров Эксель перемещаемся в раздел «Панель быстрого доступа». Большую часть окна занимает обширная область настроек. В левой её части находятся инструменты, которые могут быть добавлены на панель быстрого доступа, а в правой – уже присутствующие.

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

  4. Добавление инструмента форма на панель быстрого доступа в Microsoft Excel

  5. После этого нужный нам инструмент отобразится в правой части окна. Жмем на кнопку «OK».
  6. Инструмент форма добавлен на панель быстрого доступа в Microsoft Excel

  7. Теперь данный инструмент располагается в окне Excel на панели быстрого доступа, и мы им можем воспользоваться. Он будет присутствовать при открытии любой книги данным экземпляром Excel.
  8. Инструмент форма отображается на панеле быстрого доступа в Microsoft Excel

  9. Теперь, чтобы инструмент понял, что именно ему нужно заполнять, следует оформить шапку таблицы и записать любое значение в ней. Пусть табличный массив у нас будет состоять из четырех столбцов, которые имеют названия «Наименование товара», «Количество», «Цена» и «Сумма». Вводим данные названия в произвольный горизонтальный диапазон листа.
  10. Шапка таблицы в Microsoft Excel

  11. Также, чтобы программа поняла, с каким именно диапазонам ей нужно будет работать, следует ввести любое значение в первую строку табличного массива.
  12. первое значение в таблице в Microsoft Excel

  13. После этого выделяем любую ячейку заготовки таблицы и щелкаем на панели быстрого доступа по значку «Форма…», который мы ранее активировали.
  14. Запуск формы в Microsoft Excel

  15. Итак, открывается окно указанного инструмента. Как видим, данный объект имеет поля, которые соответствуют названиям столбцов нашего табличного массива. При этом первое поле уже заполнено значением, так как мы его ввели вручную на листе.
  16. Форма открыта в Microsoft Excel

  17. Вводим значения, которые считаем нужными и в остальные поля, после чего жмем на кнопку «Добавить».
  18. Ввод значений в форму в Microsoft Excel

  19. После этого, как видим, в первую строку таблицы были автоматически перенесены введенные значения, а в форме произошел переход к следующему блоку полей, который соответствуют второй строке табличного массива.
  20. Значения перенесы в таблицу в Microsoft Excel

    Lumpics.ru

  21. Заполняем окно инструмента теми значениями, которые хотим видеть во второй строке табличной области, и снова щелкаем по кнопке «Добавить».
  22. Добавление второй строки в таблицу через форму в Microsoft Excel

  23. Как видим, значения второй строчки тоже были добавлены, причем нам даже не пришлось переставлять курсор в самой таблице.
  24. Вторая строка заполнена в таблице в Microsoft Excel

  25. Таким образом, заполняем табличный массив всеми значениями, которые хотим в неё ввести.
  26. Все значения в таблицу введены в Microsoft Excel

  27. Кроме того, при желании, можно производить навигацию по ранее введенным значениям с помощью кнопок «Назад» и «Далее» или вертикальной полосы прокрутки.
  28. Навигация по форме в Microsoft Excel

  29. При необходимости можно откорректировать любое значение в табличном массиве, изменив его в форме. Чтобы изменения отобразились на листе, после внесения их в соответствующий блок инструмента, жмем на кнопку «Добавить».
  30. Корректировка данных в форме в Microsoft Excel

  31. Как видим, изменение сразу произошло и в табличной области.
  32. Изменение произведено в таблице в Microsoft Excel

  33. Если нам нужно удалить, какую-то строчку, то через кнопки навигации или полосу прокрутки переходим к соответствующему ей блоку полей в форме. После этого щелкаем по кнопке «Удалить» в окошке инструмента.
  34. Удаление строки через форму в Microsoft Excel

  35. Открывается диалоговое окно предупреждения, в котором сообщается, что строка будет удалена. Если вы уверены в своих действиях, то жмите на кнопку «OK».
  36. Подтверждение удаления строки в Microsoft Excel

  37. Как видим, строчка была извлечена из табличного диапазона. После того, как заполнение и редактирование закончено, можно выходить из окна инструмента, нажав на кнопку «Закрыть».
  38. Закрытие формы в Microsoft Excel

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

Таблица отформатированв в Microsoft Excel

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

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

  1. Как и в предыдущем способе, прежде всего, нужно составить шапку будущей таблицы на листе. Она будет состоять из пяти ячеек с именами: «№ п/п», «Наименование товара», «Количество», «Цена», «Сумма».
  2. Шапка таблицы создана в Microsoft Excel

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

  5. Затем открывается небольшое окошко форматирования таблицы. В нем указан диапазон, который мы ранее выделили, то есть, диапазон шапки. Как правило, в данном поле заполнено все верно. Но нам следует установить галочку около параметра «Таблица с заголовками». После этого жмем на кнопку «OK».
  6. Окошко форматирования таблицы в Microsoft Excel

  7. Итак, наш диапазон отформатирован, как «умная» таблица, свидетельством чему является даже изменение визуального отображения. Как видим, помимо прочего, около каждого названия заголовка столбцов появились значки фильтрации. Их следует отключить. Для этого выделяем любую ячейку «умной» таблицы и переходим во вкладку «Данные». Там на ленте в блоке инструментов «Сортировка и фильтр» щелкаем по значку «Фильтр».
    Отключение фильтра через вкладку Данные в Microsoft Excel

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

  8. Отключение фильтра через вкладку Главная в Microsoft Excel

  9. Как видим, после этого действия значки фильтрации исчезли из шапки таблицы, как это и требовалось.
  10. Фильтр снят в Microsoft Excel

  11. Затем нам следует создать саму форму ввода данных. Она тоже будет представлять собой своего рода табличный массив, состоящий из двух столбцов. Наименования строк данного объекта будут соответствовать именам столбцов основной таблицы. Исключение составляют столбцы «№ п/п» и «Сумма». Они будут отсутствовать. Нумерация первого из них будет происходить при помощи макроса, а расчет значений во втором будет производиться путем применения формулы умножения количества на цену.

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

  12. Форма ввода данных на листе в Microsoft Excel

  13. После этого создаем ещё одну небольшую таблицу. Она будет состоять из одного столбца и в ней разместится список товаров, которые мы будем выводить во вторую колонку основной таблицы. Для наглядности ячейку с заголовком данного перечня («Список товаров») можно залить цветом.
  14. Таблица со списком товаров в Microsoft Excel

  15. Затем выделяем первую пустую ячейку объекта ввода значений. Переходим во вкладку «Данные». Щелкаем по значку «Проверка данных», который размещен на ленте в блоке инструментов «Работа с данными».
  16. Переход к проверке данных в Microsoft Excel

  17. Запускается окно проверки вводимых данных. Кликаем по полю «Тип данных», в котором по умолчанию установлен параметр «Любое значение».
  18. Окно проверки вводимых значений в Microsoft Excel

  19. Из раскрывшихся вариантов выбираем позицию «Список».
  20. Выбор списка в окне проверки вводимых значений в Microsoft Excel

  21. Как видим, после этого окно проверки вводимых значений несколько изменило свою конфигурацию. Появилось дополнительное поле «Источник». Щелкаем по пиктограмме справа от него левой клавишей мыши.
  22. Переход к выбору источника в окне проверки вводимых значений в Microsoft Excel

  23. Затем окно проверки вводимых значений сворачивается. Выделяем курсором с зажатой левой клавишей мыши перечень данных, которые размещены на листе в дополнительной табличной области «Список товаров». После этого опять жмем на пиктограмму справа от поля, в котором появился адрес выделенного диапазона.
  24. Адрес диапазона внесен в поле в Microsoft Excel

  25. Происходит возврат к окошку проверки вводимых значений. Как видим, координаты выделенного диапазона в нем уже отображены в поле «Источник». Кликаем по кнопке «OK» внизу окна.
  26. Закрытие окна проверки вводимых значений в Microsoft Excel

  27. Теперь справа от выделенной пустой ячейки объекта ввода данных появилась пиктограмма в виде треугольника. При клике на неё открывается выпадающий список, состоящий из названий, которые подтягиваются из табличного массива «Список товаров». Произвольные данные в указанную ячейку теперь внести невозможно, а только можно выбрать из представленного списка нужную позицию. Выбираем пункт в выпадающем списке.
  28. Список со значениями в Microsoft Excel

  29. Как видим, выбранная позиция тут же отобразилась в поле «Наименование товара».
  30. Выбранная позиция отобразилась в ячейке в Microsoft Excel

  31. Далее нам нужно будет присвоить имена тем трем ячейкам формы ввода, куда мы будем вводить данные. Выделяем первую ячейку, где уже установлено в нашем случае наименование «Картофель». Далее переходим в поле наименования диапазонов. Оно расположено в левой части окна Excel на том же уровне, что и строка формул. Вводим туда произвольное название. Это может быть любое наименование на латинице, в котором нет пробелов, но лучше все-таки использовать названия близкие к решаемым данным элементом задачам. Поэтому первую ячейку, в которой содержится название товара, назовем «Name». Пишем данное наименование в поле и жмем на клавишу Enter на клавиатуре.
  32. Наименование первой ячейки в Microsoft Excel

  33. Точно таким же образом присваиваем ячейке, в которую будем вводить количество товара, имя «Volum».
  34. Наименование второй ячейки в Microsoft Excel

  35. А ячейке с ценой – «Price».
  36. Наименование третьей ячейки в Microsoft Excel

  37. После этого точно таким же образом даем название всему диапазону из вышеуказанных трех ячеек. Прежде всего, выделим, а потом дадим ему наименование в специальном поле. Пусть это будет имя «Diapason».
  38. присвоение наименования диапазону в Microsoft Excel

  39. После последнего действия обязательно сохраняем документ, чтобы названия, которые мы присвоили, смог воспринимать макрос, созданный нами в дальнейшем. Для сохранения переходим во вкладку «Файл» и кликаем по пункту «Сохранить как…».
  40. Сохранение книги в Microsoft Excel

  41. В открывшемся окне сохранения в поле «Тип файлов» выбираем значение «Книга Excel с поддержкой макросов (.xlsm)». Далее жмем на кнопку «Сохранить».
  42. Окно сохранения файла в Microsoft Excel

  43. Затем вам следует активировать работу макросов в своей версии Excel и включить вкладку «Разработчик», если вы это до сих пор не сделали. Дело в том, что обе эти функции по умолчанию в программе отключены, и их активацию нужно выполнять принудительно в окне параметров Excel.
  44. После того, как вы сделали это, переходим во вкладку «Разработчик». Кликаем по большому значку «Visual Basic», который расположен на ленте в блоке инструментов «Код».
  45. Переход в редактор макросов в Microsoft Excel

  46. Последнее действие приводит к тому, что запускается редактор макросов VBA. В области «Project», которая расположена в верхней левой части окна, выделяем имя того листа, где располагаются наши таблицы. В данном случае это «Лист 1».
  47. Редактор макросов в Microsoft Excel

  48. После этого переходим к левой нижней области окна под названием «Properties». Тут расположены настройки выделенного листа. В поле «(Name)» следует заменить кириллическое наименование («Лист1») на название, написанное на латинице. Название можно дать любое, которое вам будет удобнее, главное, чтобы в нем были исключительно символы латиницы или цифры и отсутствовали другие знаки или пробелы. Именно с этим именем будет работать макрос. Пусть в нашем случае данным названием будет «Producty», хотя вы можете выбрать и любое другое, соответствующее условиям, которые были описаны выше.

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

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

  49. Изменение наименования листа в редакторе макросов в Microsoft Excel

  50. Затем переходим в центральную область окна. Именно тут нам нужно будет записать сам код макроса. Если поле редактора кода белого цвета в указанной области не отображается, как в нашем случае, то жмем на функциональную клавишу F7 и оно появится.
  51. Поле в редкторе макросов отобразилось в Microsoft Excel

  52. Теперь для конкретно нашего примера нужно записать в поле следующий код:


    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» редактора макросов. Естественно, это нужно делать только в том случае, если вы назвали лист по-другому.

    Наименование для листа в 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

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

    Producty.Range("Name").Copy

    В ней параметр «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

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

    .Range("Diapason").ClearContents

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

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

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

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

  53. Код в редакторе макросов в Microsoft Excel

  54. После этого возвращаемся на лист Excel. Теперь нам следует разместить кнопку, которая будет активировать созданный макрос. Для этого переходим во вкладку «Разработчик». В блоке настроек «Элементы управления» на ленте кликаем по кнопке «Вставить». Открывается перечень инструментов. В группе инструментов «Элементы управления формы» выбираем самый первый – «Кнопка».
  55. Выбор элемента управления в Microsoft Excel

  56. Затем с зажатой левой клавишей мыши обводим курсором область, где хотим разместить кнопку запуска макроса, который будет производить перенос данных из формы в таблицу.
  57. Указание границ кнопки в Microsoft Excel

  58. После того, как область обведена, отпускаем клавишу мыши. Затем автоматически запускается окно назначения макроса объекту. Если в вашей книге применяется несколько макросов, то выбираем из списка название того, который мы выше создавали. У нас он называется «DataEntryForm». Но в данном случае макрос один, поэтому просто выбираем его и жмем на кнопку «OK» внизу окна.
  59. Окно назначения макроса объекту в Microsoft Excel

  60. После этого можно переименовать кнопку, как вы захотите, просто выделив её текущее название.
    Переименовывание кнопки в Microsoft Excel

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

  61. Кнопка переименована в Microsoft Excel

  62. Итак, наша форма полностью готова. Проверим, как она работает. Вводим в её поля необходимые значения и жмем на кнопку «Добавить».
  63. Ввод данных в форму в Microsoft Excel

  64. Как видим, значения перемещены в таблицу, строке автоматически присвоен номер, сумма посчитана, поля формы очищены.
  65. Значения первой строки внесены в таблицу в Microsoft Excel

  66. Повторно заполняем форму и жмем на кнопку «Добавить».
  67. Повторный ввод данных в форму в Microsoft Excel

  68. Как видим, и вторая строка также добавлена в табличный массив. Это означает, что инструмент работает.

Вторая строка добавлена в таблицу в Microsoft Excel

Читайте также:
Как создать макрос в Excel
Как создать кнопку в Excel

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

Excel для Microsoft 365 для Mac Excel 2021 для Mac Excel 2019 для Mac Excel 2016 для Mac Еще…Меньше

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Нужна дополнительная помощь?

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

Начинаем программировать с нуля
Часть 4. Первая форма
[Часть 1] [Часть 2] [Часть 3] [Часть 4]

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

Создайте или откройте файл Excel с расширением .xlsm (Книга Excel с поддержкой макросов) или с расширением .xls в старых версиях приложения.

Перейдите в редактор VBA, нажав сочетание клавиш «Левая_клавиша_Alt+F11».

В открывшемся окне редактора VBA выберите вкладку «Insert» главного меню и нажмите кнопку «UserForm». То же подменю откроется при нажатии на вторую кнопку (после значка Excel) на панели инструментов.

На экране редактора VBA появится новая пользовательская форма с именем «UserForm1»:

Добавление элементов управления

Обычно вместе с пользовательской формой открывается панель инструментов «Toolbox», как на изображении выше, с набором элементов управления формы. Если панель инструментов «Toolbox» не отобразилась, ее можно вызвать, нажав кнопку «Toolbox» во вкладке «View»:

При наведении курсора на элементы управления появляются подсказки.

Найдите на панели инструментов «Toolbox» элемент управления с подсказкой «TextBox», кликните по нему и, затем, кликните в любом месте рабочего поля формы. Элемент управления «TextBox» (текстовое поле) будет добавлен на форму.

Найдите на панели инструментов «Toolbox» элемент управления с подсказкой «CommandButton», кликните по нему и, затем, кликните в любом месте рабочего поля формы. Элемент управления «CommandButton» (кнопка) будет добавлен на форму.

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

Нажатием клавиши «F4» вызывается окно свойств, с помощью которого можно вручную задавать значения свойств пользовательской формы и элементов управления. В окне свойств отображаются свойства выбранного элемента управления или формы, если выбрана она. Также окно свойств можно вызвать, нажав кнопку «Properties Window» во вкладке «View».

Отображение формы на экране

Чтобы запустить пользовательскую форму для просмотра из редактора VBA, необходимо выбрать ее, кликнув по заголовку или свободному от элементов управления полю, и совершить одно из трех действий:

  • нажать клавишу «F5»;
  • нажать на треугольник на панели инструментов (на изображении выше треугольник находится под вкладкой «Debug»);
  • нажать кнопку «Run Sub/UserForm» во вкладке «Run».

Для запуска пользовательской формы с рабочего листа Excel, можно использовать кнопки, описанные в этой статье. Например, чтобы отобразить форму с помощью «кнопки – элемента ActiveX», используйте в модуле рабочего листа следующий код:

Private Sub CommandButton1_Click()

    UserForm1.Show

End Sub

Для «кнопки – элемента управления формы» можно использовать следующий код, размещенный в стандартном программном модуле:

Sub ShowUserForm()

    UserForm1.Show

End Sub

В результате вышеперечисленных действий мы получаем на рабочем листе Excel пользовательскую форму с мигающим курсором в текстовом поле:

Добавление программного кода

Программный код для пользовательской формы и элементов управления формы записывается в модуль формы. Перейти в модуль формы можно через контекстное меню, кликнув правой кнопкой мыши на поле формы или на ссылке «UserForm1» в проводнике слева и нажав кнопку «View Code».

Переходить между открытыми окнами в редакторе VBA можно через вкладку «Window» главного меню.

Изменить название пользовательской формы и элементов управления, их размеры и другие свойства можно через окно свойств (Properties Window), которое можно отобразить клавишей «F4». Мы же это сделаем с помощью кода VBA Excel, записанного в модуль формы.

Откройте модуль формы, кликнув правой кнопкой мыши по форме и нажав кнопку «View Code» контекстного меню. Скопируйте следующий код VBA, который будет задавать значения свойств формы и элементов управления перед ее отображением на экране:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

Private Sub UserForm_Initialize()

    ‘Me — это обращение к форме в ее модуле

    With Me

        ‘Присваиваем форме заголовок

        .Caption = «Новая форма»

        ‘Задаем ширину формы

        .Width = 300

        ‘Задаем высоту формы

        .Height = 150

    End With

    With TextBox1

        ‘Задаем ширину текстового поля

        .Width = 200

        ‘Задаем высоту текстового поля

        .Height = 20

        ‘Задаем расстояние от внутреннего края

        ‘формы сверху до текстового поля

        .Top = 30

        ‘Задаем расстояние от внутреннего края

        ‘формы слева до текстового поля, чтобы

        ‘текстовое поле оказалось по центру

        .Left = Me.Width / 2 .Width / 2 6

        ‘Задаем размер шрифта

        .Font.Size = 12

        ‘Присваиваем текст по умолчанию

        .Text = «Напишите что-нибудь своё!»

    End With

    With CommandButton1

        ‘Задаем ширину кнопки

        .Width = 70

        ‘Задаем высоту кнопки

        .Height = 25

        ‘Задаем расстояние от внутреннего края

        ‘формы сверху до кнопки

        .Top = 70

        ‘Задаем расстояние от внутреннего края

        ‘формы слева до кнопки, чтобы

        ‘кнопка оказалось по центру

        .Left = Me.Width / 2 .Width / 2 6

        ‘Задаем размер шрифта

        .Font.Size = 12

        ‘Присваиваем кнопке название

        .Caption = «OK»

    End With

End Sub

Вставьте скопированный код в модуль формы:

Познакомьтесь еще с одним способом отображения на экране пользовательской формы в процессе тестирования: установите курсор внутри процедуры UserForm_Initialize() и нажмите клавишу «F5» или треугольник на панели инструментов. Все предыдущие способы (с выбором формы в редакторе и кнопками на рабочем листе) тоже работают.

В результате мы получаем следующую форму:

Теперь перейдите в редактор VBA, откройте проект формы «UserForm1» и дважды кликните по кнопке «CommandButton1». В результате откроется модуль формы и будет создан шаблон процедуры CommandButton1_Click(), которая будет запускаться при нажатии кнопки:

Private Sub CommandButton1_Click()

End Sub

Вставьте внутрь шаблона процедуры CommandButton1_Click() следующую строку кода, которая будет копировать текст из текстового поля в ячейку «A1» активного рабочего листа:

Range(«A1») = TextBox1.Text

Отобразите пользовательскую форму на экране и проверьте работоспособность кнопки «OK».


Как создать простую форму ввода без VBA в Microsoft Excel

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

Подготовительные действия

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

  1. Зажмите левую кнопку мыши и выделите все содержимое таблицы, после чего перейдите на вкладку «Вставка».Выделение таблицы для создания простой формы ввода в Microsoft Excel

  2. На ней разверните список «Таблицы» и кликните левой кнопкой мыши по варианту «Таблица».Кнопка создания таблицы для создания простой формы ввода в Microsoft Excel

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

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

  5. Далее понадобится добавить кнопку вызова формы, для чего перейдите на вкладку «Файл».Переход на вкладку Файл для создания простой формы ввода в Microsoft Excel

  6. Нажмите по пункту «Другие» и из появившегося меню выберите пункт «Параметры».Открытие раздела с параметрами для создания простой формы ввода в Microsoft Excel

  7. В новом окне с настройками на панели слева выберите раздел «Панель быстрого доступа» и установите фильтр для команд «Команды не на ленте».Выбор параметра для создания простой формы ввода в Microsoft Excel

  8. Среди всех команд отыщите «Форма», выделите ее левой кнопкой мыши и нажмите «Добавить».Добавление кнопки на панель быстрого доступа для создания простой формы ввода в Microsoft Excel

  9. На этом процесс настройки закончен, поэтому убедитесь в том, что кнопка теперь отображается в перечне справа, после чего нажмите «ОК».Подтверждение добавления кнопки для создания простой формы ввода в Microsoft Excel

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

Комьюнити теперь в Телеграм

Подпишитесь и будьте в курсе последних IT-новостей

Подписаться

Заполнение простой формы ввода

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

  1. Выделите абсолютно любую ячейку, входящую в таблицу, после чего нажмите по кнопке «Форма» на панели быстрого доступа.Вызов кнопки после выделения таблицы для создания простой формы ввода в Microsoft Excel

  2. Начните с нажатия по кнопке «Добавить», чтобы создать новую строку для заполнения.Создание новой строки для создания простой формы ввода в Microsoft Excel

  3. Введите по очереди значения для каждых ячеек из столбцов с названиями, затем нажмите Enter для подтверждения ввода.Заполнение данных для создания простой формы ввода в Microsoft Excel

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

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

Наши постоянные авторы и читатели делятся лайфхаками, основанными на личном опыте. Полная свобода самовыражения.

Рекомендуем

Поворот текста в Google Таблицах

Как посмотреть упоминания в Discord

Открытие Microsoft Excel в разных окнах

Как удалить сервер в Discord

Как исправить работу стрелок клавиатуры в Microsoft Excel

A UserFrom refers to a form or a dialog box on the screen that enables a user to input data into Excel’s user interface. it can be created using the Visual Basic Editor and is used to control data entry and avoid errors.

1. Creating a UserForm: 

To create a userform head on to the Developer tab-> Visual Basic->Insert->UserForm.

You can also go to the Project window on the left side and right-click the workbook you want to use and select Insert->UserForm. This opens up a blank userform (UserForm1) and a toolbox(if the toolbox doesn’t pop up head on to View>toolbox).

2. Naming the UserForm:

By default, excel opens up an userform with the name UserForm1 in order to change that name:

  • Head to the Properties window(view>Properties window), This opens a pane on the left.
  • Click on the ‘Name’ section and type a name of your choice. (don’t add spaces)
  • The name won’t be reflected on the userform when you do so because that’s a different property of the form.
  • Head to the ‘Caption’ property and type in a name, and it will be reflected on your UserForm.

Now let’s play with some controls and learn how to add them to our UserForm.

3. Adding a Textbox to the UserForm:

A Textbox is used to enable users to input information into the form. 

  • To add a TextBox head onto the ToolBox. Click on( View->Toolbox) if it isn’t visible by default.
  • Select the TextBox button
  • Click on the userform to place it or drag it to a position of your choice.
  • You can resize the Textbox to the dimensions of your liking

To rename the Textbox With the new textbox selected, double-click on the ‘Name’ property in the Properties window and rename it(its been renamed to ‘TextBox’ here).

4. Adding a Label to the UserForm:

A Label can be used to describe what type of data is being entered into the textboxes, a message, or instructions.

  • To add a Label head onto the ToolBox.
  • Select the ‘Label ‘button
  • Click on the userform to place it or drag it to a position of your choice.
  • You can resize it to the dimensions of your liking or leave it in standard size.

To rename the Label With the new Label selected, double-click on the ‘Name‘ property in the Properties window and rename it. Also, change the ‘Caption’ property accordingly. its been renamed to ‘LblSelectSheet’ and captioned to ‘Please select a worksheet’.

5. Adding Buttons to the Userform:

To make the form interactive you can place buttons to perform certain actions. 

  • To add a Button head onto the ToolBox.
  • Select the ‘CommandButton’ button
  • Click on the userform to place it or drag it to a position of your choice.
  • You can resize it to the dimensions of your liking or reposition the buttons by dragging them to a new location on the form.

To rename the button With the new button selected, double-click on the ‘Name’ property in the Properties window and rename it. Then change the ‘Caption’ property to name the button relevantly close to the action it will be performing. For example the AddSheet and CloseFom button in the image below. In the below images 2 buttons have been added and renamed to ‘CmdAddSheet’ and ‘CmdCloseFrm’ and captioned to ‘Add Sheet’ and ‘Close Form’.

6. Adding code to the buttons:

To ensure the buttons are performing the actions we need to code inside VBA and to add code for specific controls double-click on the controls in the form, and it directs you to the specific code segment. After adding the necessary code for each of the controls click on the run button to display the userform.

  • Select the button for example Add sheet button in this example
  • On the Menu bar, choose View >Code.
  • This creates a procedure, where you can add your code.
  • Enter the following code to add another sheet to your workbook and name it according to your choice.
Private Sub CmdAddSheet_Click()
Worksheets.Add before:=Worksheets(1)
ActiveSheet.Name = InputBox("please enter the name for the worksheet")
End Sub

7. Adding code to the close button :

Add the following code to close the form by clicking on the ‘close from’ button and redirect to the VBE.

Private Sub CmdCloseFrm_Click()
  Unload Me
End Sub

8. Testing the userform :

To test the UserForm simply go to the menu bar and hit the Run button. It runs userform and displays it on the screen. For example, a userform that selects a sheet from the combobox and directs you to it, with 2 buttons Add Sheet and Close form button to add an extra sheet in the workbook and the close the userform is displayed. 

Complete code to run the above userform inclusive of a combobox with the list of worksheets currently present in the workbook and functionality of buttons is:

Private Sub CmdAddSheet_Click()
Worksheets.Add before:=Worksheets(1)
ActiveSheet.Name = InputBox("please enter the name for the worksheet")
End Sub

Private Sub CmdCloseFrm_Click()
Unload Me
End Sub

Private Sub combobox_Change()
Worksheets(Me.combobox.Value).Select


End Sub

Private Sub UserForm_Initialize()
   
    Dim i As Integer
    i = 1
    Do While i <= Worksheets.Count
    Me.combobox.AddItem Worksheets(i).Name
    i = i + 1
    Loop
   
   
End Sub

To automate the userform experience or to display it  as soon as you open the workbook the following needs to be done:

Making use of the workbook event

  • Head on to the Developer tab>Visual Basic.
  • Double click  “This workbook”  from the project window.
  • Change the drop-down on the top left from General to workbook.
  • Add this line of code to the procedure “formname.show”(in the below example frmFinalReport.show).
  • Save and run.

Ранее я рассмотрел методы создания пользовательских форм и основы работы с ними (если вы никогда не работали с пользовательскими формами, рекомендую для начала прочитать указанную заметку). В настоящем материале приводится целый ряд практически полезных примеров пользовательских диалоговых окон.[1]

Рис. 1. Меню на основе элементов управления CommandButton или ListBox

Скачать заметку в формате Word или pdf, примеры в архиве

Создание меню

Меню можно создать с помощью элементов управления CommandButton (рис. 1; см. файл userform menus.xlsm) и с помощью элемента управления ListBox. Каждый элемент управления CommandButton имеет собственную процедуру обработки событий. Например, представленная ниже процедура выполняется после щелчка на кнопке CommandButton1:

Private Sub CommandButton1_Click()

    Me.Hide

    Call Macro1

    Unload Me

End Sub

Эта процедура приводит к вызову макроса Macro1 и закрытию диалогового окна UserForm. После щелчка на других кнопках (отличных от CommandButton1) вызываются похожие процедуры обработки событий.

В случае использования элемента управления ListBox, перед отображением пользовательского диалогового окна вызывается процедура обработки события Initialize. В следующей процедуре используется метод Addltem для добавления шести опций в элемент управления ListBox:

Private Sub UserForm_Initialize()

    With ListBox1

        .AddItem «Макрос1»

        .AddItem «Макрос2»

        .AddItem «Макрос3»

        .AddItem «Макрос4»

        .AddItem «Макрос5»

        .AddItem «Макрос6»

    End With

End Sub

Процедура обработки события привязывается к кнопке Выполнить:

Private Sub ExecuteButton_Click()

    Select Case ListBox1.ListIndex

        Case 1

            MsgBox «Выберите макрос из списка.»

            Exit Sub

        Case 0: Me.Hide: Call Macro1

        Case 1: Me.Hide: Call Macro2

        Case 2: Me.Hide: Call Macro3

        Case 3: Me.Hide: Call Macro4

        Case 4: Me.Hide: Call Macro5

        Case 5: Me.Hide: Call Macro6

    End Select

    Unload Me

End Sub

Данная процедура проверяет значение свойства Listlndex элемента управления ListBox, чтобы определить, какой элемент выбран в списке (если свойство Listlndex равно –1, то не выбран ни один из элементов). После этого запускается соответствующий макрос.

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

Некоторые встроенные диалоговые окна Excel предоставляют пользователю возможность выбирать диапазон. Например, диалоговое окно Подбор параметра, для вызова которого следует пройти по меню Данные –> Работа с данными –> Анализ «что если « –> Подбор параметра, запрашивает у пользователя два диапазона. Пользователь может или ввести имя диапазона непосредственно в окне, или применить мышь для выделения диапазона на листе.

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

К сожалению, элемент управления RefEdit не позволяет использовать специальные клавиши при выделении диапазона (например, невозможно выделить ячейки до конца столбца, нажав комбинацию клавиш Shift+↓). Кроме того, после щелчка мышью на маленькой кнопке в правой части элемента управления (для временного сокрытия диалогового окна) можно применять только выделения с помощью мыши. Клавиатуру в этом случае применять нельзя.

На рис. 2 представлено пользовательское диалоговое окно с добавленным элементом управления RefEdit (см. файл range selection demo.xlsm). Это диалоговое окно выполняет простую математическую операцию над всеми не содержащими формул и непустыми ячейками указанного диапазона. Выполняемая операция задается активным переключателем OptionButton.

Рис. 2. С помощью элемента управления RefEdit можно выбрать диапазон

Элемент управления RefEdit возвращает текстовую строку, которая представляет выбранный диапазон. Можно преобразовать эту строку в объект Range. Для этого используется оператор:

Set UserRange = Range(RefEditl.Text)

Удачной практикой считается инициализация элемента управления RefEdit для представления текущего выделения. Для этого в процедуре UserForm_Initialize воспользуйтесь оператором:

RefEditl.Text = ActiveWindow.RangeSelection.Address

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

Следующий код — это пример одного из способов проверки допустимости введенного значения. Если определено, что значение неправильное, то пользователю выдается сообщение, а элемент управления RefEdit становится активным, предоставляя возможность ввести корректный диапазон.

    On Error Resume Next

    Set UserRange = Range(RefEdit1.Text)

    If Err <> 0 Then

        MsgBox «Выбран некорректный диапазон»

        RefEdit1.SetFocus

        Exit Sub

    End If

    On Error GoTo 0

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

Set OneCell = Range(RefEditl.Text).Range("Al")

Создание заставки

Некоторые разработчики предпочитают отображать определенную вступительную информацию при запуске приложения. Эта методика называется заставкой. Без сомнения, все пользователи видели заставку Excel, которая отображается несколько секунд при запуске программы. В приложении Excel заставку можно создать с помощью пользовательского диалогового окна. В приведенном ниже примере реализуется автоматическое отображение заставки, которое исчезает по истечении пяти секунд (рис. 3; см. файл splash screen.xlsm). Для создания заставки выполните следующие действия:

  1. Создайте рабочую книгу.
  2. Активизируйте редактор VBE и вставьте пользовательское диалоговое окно в проект. Код в этом примере предполагает, что объект UserForm называется UserForm1.
  3. Поместите любые необходимые элементы управления в только что созданное диалоговое окно UserForm1. Например, вам может понадобиться расположить элемент управления Image, который будет содержать логотип компании (рис. 3).
  4. Вставьте процедуру в модуль кода для объекта ЭтаКнига (ThisWorkbook):

Private Sub Workbook_Open()

    UserForm1.Show

End Sub

  1. Вставьте следующую процедуру в модуль кода для объекта UserForm1 (эта процедура обеспечивает пятисекундную задержку). Если нужно другое время задержки, измените значение аргумента функции TimeValue.

Private Sub UserForm_Activate()

    Application.OnTime Now + TimeValue(«00:00:05»), «KillTheForm»

End Sub

Рис. 3. Эта заставка на короткое время появляется на экране после открытия рабочей книги

  1. В общий модуль VBA вставьте следующую процедуру.

Private Sub KillTheForm()

    Unload UserForm1

End Sub

При открытии рабочей книги будет выполнена процедура Workbook_Open и появится диалоговое окно UserForm (п. 4). В этот момент генерируется событие Activate, которое приводит к выполнению процедуры UserForm_ Activate (п. 5). Данная процедура использует метод OnTime объекта Application для выполнения процедуры KillTheForm в определенный момент времени. Однако предварительно определена задержка в пять секунд с момента возникновения события Activate. Процедура KillTheForm просто выгружает диалоговое окно UserForm из памяти.

  1. В качестве необязательного действия можно добавить элемент управления CommandButton с именем CancelButton, установить его свойство Cancel равным True и добавить представленную ниже процедуру обработки события в модуль кода формы UserForm.

Private Sub CancelButton_Click()

    Unload Me

End Sub

Таким образом, пользователь сможет закрыть заставку, прежде чем пройдет указанное время задержки. Окно будет закрыто также в результате нажатия клавиши <Esc>. Эту небольшую кнопку можно разместить за другим объектом, чтобы она не была видна.

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

Для того чтобы выполнить VBA-процедуру при открытии документа, нужно так отобразить пользовательское диалоговое окно в немодальном режиме, чтобы код продолжал выполняться. Для этого измените процедуру WorkbookOpen следующим образом.

Private Sub Workbook_Open()

    UserForml.Show vbModeless

     другой код

End Sub

Отключение кнопки закрытия пользовательского диалогового окна

Если пользовательское диалоговое окно уже отображено на экране, щелчок на кнопке Закрыть в правом верхнем углу приведет к выгрузке формы UserForm из памяти. Иногда этого допускать нельзя. Например, иногда требуется, чтобы диалоговое окно UserForm закрывалось только после щелчка на специальной кнопке CommandButton. Несмотря на то что реально отключить кнопку Закрыть невозможно, вы вправе предотвратить закрытие диалогового окна, вызванное щелчком на этой кнопке. Для этого воспользуйтесь обработчиком события QueryClose (см. файл gueryclose demo.xlsm). Следующая процедура, которая расположена в модуле кода диалогового окна UserForm, выполняется перед закрытием формы (т.е. в момент возникновения события QueryClose).

Private Sub UserForm_QueryClose _

  (Cancel As Integer, CloseMode As Integer)

    If CloseMode = vbFormControlMenu Then

        MsgBox «Щелкните на кнопке OK для закрытия формы.»

        Cancel = True

    End If

End Sub

Процедура UserForm_QueryClose использует два аргумента. Аргумент CloseMode содержит значение, которое указывает на причину возникновения события QueryClose. Если значение аргумента CloseMode равно vbFormControlMenu (встроенная константа), значит, пользователь щелкнул на кнопке Закрыть. В таком случае будет отображено сообщение (рис. 4); аргумент Cancel устанавливается равным True, и форма не закрывается.

Рис. 4. Процедура перехватывает закрытие окна, и оставляет его открытым

Имейте в виду, что пользователь может нажать клавиши <Ctrl+Break>, прекратив тем самым выполнение макроса. В рассматриваемом примере нажатие клавиш <Ctrl+Break> во время отображения формы UserForm на экране приведет к тому, что пользовательское диалоговое окно будет закрыто. Во избежание этого выполните следующий оператор до отображения пользовательского диалогового окна:

Application.EnableCancelKey = xlDisabled

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

Изменение размера диалогового окна

Во многих приложениях используются окна, которые могут изменять собственные размеры, добавляя кнопки и опции. Например, высота диалогового окна Excel Найти и заменить, которое отображается после выбора команды Главная –> Редактирование –> Найти и выделить –> Заменить, увеличивается после щелчка на кнопке Параметры.

Изменение размеров пользовательского диалогового окна осуществляется путем изменения значений свойств Width и Height объекта UserForm. На рис. 5а показано первоначальное диалоговое окно, а на рис. 5б показано это же окно после щелчка на кнопке Параметры. Обратите внимание на то, что надпись на кнопке изменяется в зависимости от размера диалогового окна (см. файл change userform size.xlsm).

Рис. 5. Диалоговое окно: вверху – в стандартном режиме; внизу – после нажатия на кнопке Параметры

Создавая пользовательское диалоговое окно, определите его максимальный размер, чтобы получить доступ ко всем элементам управления. После этого воспользуйтесь процедурой UserForm_Initialize для установки размеров диалогового окна по умолчанию.

В коде применяются две константы, определенные в верхней части модуля.

Const SmallSize As Integer = 124
Const LargeSize As Integer = 164

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

Private Sub OptionsButton_Click()

    If OptionsButton.Caption = «Параметры >>» Then

        Me.Height = LargeSize

        OptionsButton.Caption = «<< Параметры»

    Else

        Me.Height = SmallSize

        OptionsButton.Caption = «Параметры >>»

    End If

End Sub

Эта процедура проверяет значение свойства Caption объекта CommandButton и устанавливает значение свойства Height объекта UserForm в соответствии с полученным значением свойства Caption.

Если элементы управления не отображаются из-за того, что находятся за пределами границы диалогового окна, соответствующие этим элементам управления комбинации клавиш будут продолжать функционировать. В рассматриваемом примере пользователь может нажать клавиши <Alt+L> (для выбора альбомной ориентации страницы), даже если соответствующий элемент управления не отображается на экране.

Масштабирование и прокрутка листа в пользовательском диалоговом окне

Для прокрутки и масштабирования листа при активном диалоговом окне можно применить элемент управления ScrollBar (рис. 6; см. файл zoom and scroll sheet.xlsm). В этом примере масштаб можно изменять в диапазоне от 100 до 400%. Два элемента управления ScrollBar в нижней части диалогового окна позволяют прокручивать лист по горизонтали и по вертикали.

Рис. 6. Элементы управления ScrollBar позволяют прокручивать лист и изменять его масштаб

Элементы управления инициализируются в процедуре UserForm_Initialize:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

Private Sub UserForm_Initialize()

    LabelZoom.Caption = ActiveWindow.Zoom & «%»

‘   Масштабирование

    With ScrollBarZoom

        .Min = 10

        .Max = 400

        .SmallChange = 1

        .LargeChange = 10

        .Value = ActiveWindow.Zoom

    End With

   Прокрутка по горизонтали

    With ScrollBarColumns

        .Min = 1

        .Max = ActiveSheet.UsedRange.Columns.Count

        .Value = ActiveWindow.ScrollColumn

        .LargeChange = 25

        .SmallChange = 1

    End With

   Прокрутка по вертикали

    With ScrollBarRows

        .Min = 1

        .Max = ActiveSheet.UsedRange.Rows.Count

        .Value = ActiveWindow.ScrollRow

        .LargeChange = 25

        .SmallChange = 1

    End With

End Sub

Эта процедура позволяет устанавливать значения различных свойств элементов управления ScrollBar. Значения определяются на основе данных, полученных из активного окна. При использовании элемента управления ScrollBarZoom выполняется процедура ScrollBarZoom_Change. Она устанавливает значение свойства Zoom объекта ActiveWindow равным значению свойства Value элемента управления ScrollBar. Кроме того, изменяется текст подписи, которая представляет текущий масштаб рабочего листа.

Private Sub ScrollBarZoom_Change()

    With ActiveWindow

        .Zoom = ScrollBarZoom.Value

        LabelZoom = .Zoom & «%»

        .ScrollColumn = ScrollBarColumns.Value

        .ScrollRow = ScrollBarRows.Value

    End With

End Sub

Прокрутка листа осуществляется с помощью двух процедур. Эти процедуры устанавливают значение свойств ScrollRow и ScrollColumns объекта ActiveWindow равными значениям свойств Value элементов управления ScrollBar.

Private Sub ScrollBarColumns_Change()

    ActiveWindow.ScrollColumn = ScrollBarColumns.Value

End Sub

Private Sub ScrollBarRows_Change()

    ActiveWindow.ScrollRow = ScrollBarRows.Value

End Sub

При нажатии на кнопку Ok пользовательская форма закрывается:

Private Sub OKButton_Click()

    Unload Me

End Sub

Применение элемента управления MultiPage

Элемент управления MultiPage применяется при отображении в пользовательских диалоговых окнах множества элементов управления. Элемент управления MultiPage позволяет группировать опции, а также размещать каждую группу на отдельной вкладке (рис. 7; см. файл multipage control demo.xlsm). Панель инструментов Toolbox также включает элемент управления TabStrip, напоминающий элемент управления MultiPage. Однако в отличие от MultiPage, элемент управления TabStrip не может включать другие объекты. Поскольку элемент управления MultiPage является более гибким, вряд ли вам придется обращаться к элементу управления TabStrip.

Рис. 7. Элемент управления MultiPage группирует элементы управления на страницах, доступ к которым обеспечивается с вкладки

Вкладка (или страница), которая отображается поверх всех остальных, определяется значением свойства Value элемента управления MultiPage. Значение 0 соответствует первой вкладке. Значение 1 вызывает отображение второй вкладки и т.д. По умолчанию элемент управления MultiPage состоит из двух страниц. Для того чтобы добавить дополнительные вкладки, щелкните на любой вкладке правой кнопкой мыши и в контекстном меню выберите пункт New Page.

При работе с элементом управления MultiPage щелкните на вкладке, чтобы установить свойства страницы. В окне Properties отобразятся свойства, значения которых можно изменить. Иногда сложно выделить сам элемент управления MultiPage, так как щелчок на нем приводит к выделению страницы элемента управления. Для того чтобы выделить только элемент управления, щелкните на его границе. Кроме того, можете воспользоваться клавишей <Таb> для циклического перемещения между элементами управления. Еще одним вариантом выделения элемента управления является выбор пункта MultiPage из раскрывающегося списка окна Properties.

Если элемент управления MultiPage содержит много вкладок, то присвойте его свойству MultiRow значение True, чтобы отобразить вкладки в несколько строк. Если необходимо, то вместо вкладок можно отображать кнопки. Достаточно изменить значение свойства Style на 1. Если значение свойства Style равно 2, элемент управления MultiPage не будет отображать ни вкладки, ни кнопки.

Свойство TabOrientation определяет расположение вкладок на элементе управления MultiPage. Для каждой страницы можно установить эффект перехода. Для этого воспользуйтесь свойством TransitionEffect. Например, щелчок на вкладке приведет к тому, что новая страница «отодвинет» старую. Применяйте свойство TransitionPeriod, чтобы задать скорость эффекта перехода.

Использование внешних элементов управления

Пример, рассматриваемый в этом разделе, основан на элементе управления Microsoft Windows Media Player. Несмотря на то что он не является элементом управления Excel (настраивается при установке Windows), он прекрасно работает с формами UserForm. Для того чтобы воспользоваться элементом управления Microsoft Windows Media Player выполните следующие действия:

  1. Активизируйте среду VBE.
  2. Создайте новую пользовательскую форму: Insert –> UserForm.
  3. Щелкните правой кнопкой мыши на панели Toolbox и в контекстном меню выберите параметр Additional Controls (Дополнительные элементы управления). Если окно Toolbox не отображается, выполните команду View –> Toolbox.
  4. В окне Additional Controls установите флажок Windows Media Player (рис. 8).
  5. Щелкните на кнопке ОК. Набор инструментов пополнится новым элементом управления.

Рис. 8. Подключение элемента управления Microsoft Windows Media Player

На рис. 9 показаны элемент управления Windows Media Player, встроенный в форму UserForm, а также окно Properties (см. также файл mediaplayer.xlsm, расположенный в отдельной папке). Свойство URL определяет URL-ссылку воспроизводимой композиции (музыкальная запись или видеоролик). Если композиция находится на жестком диске вашего компьютера, свойство URL определяет полный путь и имя соответствующего файла.

Рис. 9. Элемент управления Windows Media Player, встроенный в форму

На рис. 10 показан пример использования этого элемента управления. Для сокрытия окна, предназначенного для отображения видеороликов, была уменьшена высота окна элемента управления Windows Media Player. Также был добавлен список, созданный на основе элемента управления ListBox, в котором отображаются аудиофайлы MP3. После щелчка на кнопке Пуск начинается воспроизведение выбранного файла. Щелчок на кнопке Закрыть приведет к прекращению воспроизведения и к закрытию окна UserForm. Форма UserForm отображается в немодальном режиме, поэтому можно продолжать работу во время отображения диалогового окна.

Рис. 10. Элемент управления Windows Media Player в действии

Названия МРЗ-файлов в окне списка отображаются с помощью процедуры UserForm_Initialize. В целях упрощения алгоритма аудофайлы находятся в той же папке, что и рабочая книга. Можно реализовать и более гибкий подход, предусматривающий выбор пользователем папки, содержащей требуемые аудиофайлы.

Private Sub UserForm_Initialize()

    Dim FileName As String

   Заполнение списка MP3файлами

    FileName = Dir(ThisWorkbook.Path & «*.mp3», vbNormal)

    Do While Len(FileName) > 0

        ListBox1.AddItem FileName

        FileName = Dir()

    Loop

    ListBox1.ListIndex = 0

End Sub

Код обработчика событий PlayButton_Click включает единственный оператор, который присваивает выбранное имя файла свойству URL объекта WindowsMediaPlayer1.

Private Sub PlayButton_Click()

   Свойство URL загружает трек и запускает плеер

    WindowsMediaPlayer1.URL = _

      ThisWorkbook.Path & «« & ListBox1.List(ListBox1.ListIndex)

End Sub

Анимация элемента управления Label

Форма UserForm (рис. 11) представляет собой интерактивный генератор случайных чисел. Два элемента управления TextBox содержат верхнее и нижнее значения для случайного числа. Элемент управления Label изначально отображает четыре знака вопроса, а после щелчка мышью на кнопке Пуск отображаются анимированные случайные числа. При этом кнопка Пуск превращается в кнопку Остановить, а щелчок на ней мышью приводит к прекращению анимации и отображению случайного числа. Код, связанный с кнопкой генератора случайных чисел можно найти в модуле UserForm1 файла random number generator.xlsm.

Рис. 11. Генератор случайных чисел

Поскольку кнопка выполняет две функции (запуск и остановка анимации), в процедуре используется общедоступная переменная Stopped, с помощью которой отслеживается состояние кнопки. Первая часть процедуры состоит из двух структур If-Then, с помощью которых проверяется содержимое элементов управления TextBox. Два другая подобных оператора позволяют удостовериться в том, что меньшая величина действительно не превосходит большей величины. В следующем разделе кода осуществляется настройка размера шрифта элемента управления Label на основании максимальной величины. Цикл Do Until loop генерирует и отображает случайные числа. Обратите внимание на оператор DoEvents. Он позволяет Excel использовать все возможности операционной системы. Если бы его не было, элемент управления Label не смог бы отобразить каждое генерируемое случайное число. Другими словами, именно оператор DoEvents делает возможной анимацию.

Форма UserForm также включает элемент управления CommandButton, который выполняет функции кнопки Отмена. Этот элемент управления находится за пределами окна UserForm, поэтому невидим. Свойству Cancel элемента управления CommandButton присвоено значение True. Вследствие этого нажатие клавиши <Esc> дает тот же эффект, что и щелчок на кнопке Отмена. Соответствующая процедура обработки событий присваивает переменной Stopped значение True и выгружает форму UserForm.

[1] По материалам книги Джон Уокенбах. Excel 2010. Профессиональное программирование на VBA. – М: Диалектика, 2013. – С. 439–449, 466–472.

Итак, сегодня мы поговорим о функции «Форма».

Содержание

  1. Какая польза от этой функции
  2. Как её использовать?
  3. Как добавить функцию «Форма» на панель быстрого доступа
  4. Окно функции
  5. Записываем новые данные в таблицу
  6. Перемещение по таблице
  7. Удалить строку
  8. Проверка вводимых данных

Какая польза от этой функции

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

В основном у этой функции 2 плюса:

  1. Она очень сильно экономит время, причем не только при вводе, но и при поиске нужных данных в таблице;
  1. А еще она исключает ошибки, потому что данные будут проверяться.

Давайте я покажу вам на примере, что это такое.

Допустим, у нас есть такая табличка:

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

А можно сделать это намного практичней используя функцию «Форма».

Вот как она выглядит для нашей таблички:

Эти поля для ввода данных — наши столбики.

Как добавить значение?

Посмотрите на изображении ниже:

Я надеюсь, вы убедились что функция «Форма» — прекрасна.

Как её использовать?

Да, эта функция прекрасна, но найти её будет сложно если вам никто не покажет как это делается. Потому что в главном меню программы Excel её нет.

Давайте быстро добавим её на панель быстрого доступа.

Как добавить функцию «Форма» на панель быстрого доступа

Пошаговая инструкция:

  1. Правой кнопкой мышки по панели -> «Настройка панели быстрого доступа…»;

  1. Из списка выберите «Все команды»;

  1. И найдите нашу функцию, она называется «Форма»;

  1. Далее — «Добавить > >»;

  1. Подтвердите.

Готово, теперь функция появится на панели быстрого доступа:

Итак, как же её теперь использовать?

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

Окно функции

Итак, в окне функции довольно много разных кнопок.

Давайте разберемся что каждая из них делает:

  • Добавить: добавит новые данные в таблицу, значения возьмет из полей в окне;
  • Удалить: удалит выделенные данные из таблички;
  • Вернуть: восстановит данные выделенной строки;
  • Далее: переключится на следующую строку;
  • Назад: переключится на предыдущую строку;
  • Критерий: будет искать только по заданным критериям;
  • Закрыть: закрыть;

Также вы можете прокручивать это окно колесиком мышки, значения будут меняться от строки к строке.

Итак, теперь давайте посмотрим на практике, что можно с помощью этого окна делать.

Такая ошибка возникает если у вас нет выделенных ячеек:

Записываем новые данные в таблицу

Пошаговая инструкция:

  1. Откройте окно функции «Форма»;

  1. Заполните поля в окошке;
  2. Подтвердите.

Перемещение по таблице

Это очень удобная штука, выполнять поиск только по заданной табличке с помощью функции «Форма».

А если у вас еще и куча столбиков, функция не раз будет выручать вас!

Пошаговая инструкция:

  1. Откройте окно функции «Форма»;
  2. Используйте кнопки «Назад» и «Далее» для перемещения в позициях строк;

  1. А если вы нашли нужное и хотите его изменить — просто поменяйте поля и подтвердите.

Также можно пользоваться колесиком мышки для прокрутки значений таблички от строки к строке.

Вы можете видеть это на изображении выше.

А теперь давайте рассмотрим кнопку «Критерии».

С помощью неё мы можем быстро найти конкретные значения:

  • Откройте окно функции «Форма»;
  • Щелкните на «Критерии»;

  • В нашем случае, проведем поиск по статусу;

  • А теперь, когда нашлось несколько значений мы можем перемещаться между ними с помощью кнопок «Назад» и «Далее».

Да, именно критерии мы можем использовать для поиска.

Также не забудьте, что можно искать одновременно по всем полям и когда везде будут совпадения — вы получите результат.

Например, нам нужно найти строки, в которых дата позднее 07.08.18, а статус в процессе:

Также при указании критерия можно использовать операторы.

К примеру, мы забыли как именно вписывали статус в процессе и выполним поиск следующим образом:

  1. Откроем окно функции «Форма»;
  2. Щелкнем на «Критерии»;
  3. Введем следующее в поле статус (на картинке):

  1. Используем кнопки «Назад» или «Далее» для навигации по табличке.

Оператор “*” работает также, как и везде — заменяет несколько символов. Если нам нужно заменить только 1 символ — используем оператор «?»;

Удалить строку

А напоследок, рассмотрим удаление.

Допустим вы нашли нужное значение, а теперь хотите его удалить. Как это сделать?

Пошаговая инструкция:

  1. Откройте окно функции «Форма»;
  2. Найдите нужную строку;

  1. Далее -> «Удалить»;

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

Проверка вводимых данных

А теперь рассмотрим проверку данных, чтобы не допускать ошибок.

В нашем примере, мы создадим проверку которая, будет следить за тем, чтобы в столбик Дата, вводились только значения даты, а если вводится что-то другое — Excel будет выдавать ошибку.

Как это сделать?

Пошаговая инструкция:

  1. Выделяем диапазон ячеек и жмем «Данные»;

  1. Щелкните «Проверка данных»;

  1. Далее из списка выбираем «Дата»;

  1. Можно указать диапазон, чтобы случайно не указать, например, 2108 год;

  1. Подтверждаем.

Можете попробовать ввести в диапазон, для которого мы создали проверку, что-то отличное от нашего диапазона дат.

Excel выдаст вам следующую ошибку:

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

Важная информация о функции «Форма»:

  1. Мы можем использовать операторы поиска и замены;
  1. Ширина поля в окне функции «Форма» такая же, как и в самой таблице, то есть если вам кажется что поле в окне функции маленькое, расширьте столбик в самой табличке.

Понравилась статья? Поделить с друзьями:
  • Создание формы бланка в word
  • Создание формулы массива в excel
  • Создание формулы для word
  • Создание формулы времени в excel
  • Создание формулы в ячейке excel