Содержание
- Применение инструментов заполнения
- Способ 1: встроенный объект для ввода данных Excel
- Способ 2: создание пользовательской формы
- Вопросы и ответы
Для облегчения ввода данных в таблицу в Excel можно воспользоваться специальными формами, которые помогут ускорить процесс заполнения табличного диапазона информацией. В Экселе имеется встроенный инструмент позволяющий производить заполнение подобным методом. Также пользователь может создать собственный вариант формы, которая будет максимально адаптирована под его потребности, применив для этого макрос. Давайте рассмотрим различные варианты использования этих полезных инструментов заполнения в Excel.
Применение инструментов заполнения
Форма заполнения представляет собой объект с полями, наименования которых соответствуют названиям колонок столбцов заполняемой таблицы. В эти поля нужно вводить данные и они тут же будут добавляться новой строкой в табличный диапазон. Форма может выступать как в виде отдельного встроенного инструмента Excel, так и располагаться непосредственно на листе в виде его диапазона, если она создана самим пользователем.
Теперь давайте рассмотрим, как пользоваться этими двумя видами инструментов.
Способ 1: встроенный объект для ввода данных Excel
Прежде всего, давайте узнаем, как применять встроенную форму для ввода данных Excel.
- Нужно отметить, что по умолчанию значок, который её запускает, скрыт и его нужно активировать. Для этого переходим во вкладку «Файл», а затем щелкаем по пункту «Параметры».
- В открывшемся окне параметров Эксель перемещаемся в раздел «Панель быстрого доступа». Большую часть окна занимает обширная область настроек. В левой её части находятся инструменты, которые могут быть добавлены на панель быстрого доступа, а в правой – уже присутствующие.
В поле «Выбрать команды из» устанавливаем значение «Команды не на ленте». Далее из списка команд, расположенного в алфавитном порядке, находим и выделяем позицию «Форма…». Затем жмем на кнопку «Добавить».
- После этого нужный нам инструмент отобразится в правой части окна. Жмем на кнопку «OK».
- Теперь данный инструмент располагается в окне Excel на панели быстрого доступа, и мы им можем воспользоваться. Он будет присутствовать при открытии любой книги данным экземпляром Excel.
- Теперь, чтобы инструмент понял, что именно ему нужно заполнять, следует оформить шапку таблицы и записать любое значение в ней. Пусть табличный массив у нас будет состоять из четырех столбцов, которые имеют названия «Наименование товара», «Количество», «Цена» и «Сумма». Вводим данные названия в произвольный горизонтальный диапазон листа.
- Также, чтобы программа поняла, с каким именно диапазонам ей нужно будет работать, следует ввести любое значение в первую строку табличного массива.
- После этого выделяем любую ячейку заготовки таблицы и щелкаем на панели быстрого доступа по значку «Форма…», который мы ранее активировали.
- Итак, открывается окно указанного инструмента. Как видим, данный объект имеет поля, которые соответствуют названиям столбцов нашего табличного массива. При этом первое поле уже заполнено значением, так как мы его ввели вручную на листе.
- Вводим значения, которые считаем нужными и в остальные поля, после чего жмем на кнопку «Добавить».
- После этого, как видим, в первую строку таблицы были автоматически перенесены введенные значения, а в форме произошел переход к следующему блоку полей, который соответствуют второй строке табличного массива.
- Заполняем окно инструмента теми значениями, которые хотим видеть во второй строке табличной области, и снова щелкаем по кнопке «Добавить».
- Как видим, значения второй строчки тоже были добавлены, причем нам даже не пришлось переставлять курсор в самой таблице.
- Таким образом, заполняем табличный массив всеми значениями, которые хотим в неё ввести.
- Кроме того, при желании, можно производить навигацию по ранее введенным значениям с помощью кнопок «Назад» и «Далее» или вертикальной полосы прокрутки.
- При необходимости можно откорректировать любое значение в табличном массиве, изменив его в форме. Чтобы изменения отобразились на листе, после внесения их в соответствующий блок инструмента, жмем на кнопку «Добавить».
- Как видим, изменение сразу произошло и в табличной области.
- Если нам нужно удалить, какую-то строчку, то через кнопки навигации или полосу прокрутки переходим к соответствующему ей блоку полей в форме. После этого щелкаем по кнопке «Удалить» в окошке инструмента.
- Открывается диалоговое окно предупреждения, в котором сообщается, что строка будет удалена. Если вы уверены в своих действиях, то жмите на кнопку «OK».
- Как видим, строчка была извлечена из табличного диапазона. После того, как заполнение и редактирование закончено, можно выходить из окна инструмента, нажав на кнопку «Закрыть».
- После этого для предания табличному массиву более наглядного визуального вида можно произвести форматирование.
Способ 2: создание пользовательской формы
Кроме того, с помощью макроса и ряда других инструментов существует возможность создать собственную пользовательскую форму для заполнения табличной области. Она будет создаваться прямо на листе, и представлять собой её диапазон. С помощью данного инструмента пользователь сам сможет реализовать те возможности, которые считает нужными. По функционалу он практически ни в чем не будет уступать встроенному аналогу Excel, а кое в чем, возможно, превосходить его. Единственный недостаток состоит в том, что для каждого табличного массива придется составлять отдельную форму, а не применять один и тот же шаблон, как это возможно при использовании стандартного варианта.
- Как и в предыдущем способе, прежде всего, нужно составить шапку будущей таблицы на листе. Она будет состоять из пяти ячеек с именами: «№ п/п», «Наименование товара», «Количество», «Цена», «Сумма».
- Далее нужно из нашего табличного массива сделать так называемую «умную» таблицу, с возможностью автоматического добавления строчек при заполнении соседних диапазонов или ячеек данными. Для этого выделяем шапку и, находясь во вкладке «Главная», жмем на кнопку «Форматировать как таблицу» в блоке инструментов «Стили». После этого открывается список доступных вариантов стилей. На функционал выбор одного из них никак не повлияет, поэтому выбираем просто тот вариант, который считаем более подходящим.
- Затем открывается небольшое окошко форматирования таблицы. В нем указан диапазон, который мы ранее выделили, то есть, диапазон шапки. Как правило, в данном поле заполнено все верно. Но нам следует установить галочку около параметра «Таблица с заголовками». После этого жмем на кнопку «OK».
- Итак, наш диапазон отформатирован, как «умная» таблица, свидетельством чему является даже изменение визуального отображения. Как видим, помимо прочего, около каждого названия заголовка столбцов появились значки фильтрации. Их следует отключить. Для этого выделяем любую ячейку «умной» таблицы и переходим во вкладку «Данные». Там на ленте в блоке инструментов «Сортировка и фильтр» щелкаем по значку «Фильтр».
Существует ещё один вариант отключения фильтра. При этом не нужно даже будет переходить на другую вкладку, оставаясь во вкладке «Главная». После выделения ячейки табличной области на ленте в блоке настроек «Редактирование» щелкаем по значку «Сортировка и фильтр». В появившемся списке выбираем позицию «Фильтр».
- Как видим, после этого действия значки фильтрации исчезли из шапки таблицы, как это и требовалось.
- Затем нам следует создать саму форму ввода данных. Она тоже будет представлять собой своего рода табличный массив, состоящий из двух столбцов. Наименования строк данного объекта будут соответствовать именам столбцов основной таблицы. Исключение составляют столбцы «№ п/п» и «Сумма». Они будут отсутствовать. Нумерация первого из них будет происходить при помощи макроса, а расчет значений во втором будет производиться путем применения формулы умножения количества на цену.
Второй столбец объекта ввода данных оставим пока что пустым. Непосредственно в него позже будут вводиться значения для заполнения строк основного табличного диапазона.
- После этого создаем ещё одну небольшую таблицу. Она будет состоять из одного столбца и в ней разместится список товаров, которые мы будем выводить во вторую колонку основной таблицы. Для наглядности ячейку с заголовком данного перечня («Список товаров») можно залить цветом.
- Затем выделяем первую пустую ячейку объекта ввода значений. Переходим во вкладку «Данные». Щелкаем по значку «Проверка данных», который размещен на ленте в блоке инструментов «Работа с данными».
- Запускается окно проверки вводимых данных. Кликаем по полю «Тип данных», в котором по умолчанию установлен параметр «Любое значение».
- Из раскрывшихся вариантов выбираем позицию «Список».
- Как видим, после этого окно проверки вводимых значений несколько изменило свою конфигурацию. Появилось дополнительное поле «Источник». Щелкаем по пиктограмме справа от него левой клавишей мыши.
- Затем окно проверки вводимых значений сворачивается. Выделяем курсором с зажатой левой клавишей мыши перечень данных, которые размещены на листе в дополнительной табличной области «Список товаров». После этого опять жмем на пиктограмму справа от поля, в котором появился адрес выделенного диапазона.
- Происходит возврат к окошку проверки вводимых значений. Как видим, координаты выделенного диапазона в нем уже отображены в поле «Источник». Кликаем по кнопке «OK» внизу окна.
- Теперь справа от выделенной пустой ячейки объекта ввода данных появилась пиктограмма в виде треугольника. При клике на неё открывается выпадающий список, состоящий из названий, которые подтягиваются из табличного массива «Список товаров». Произвольные данные в указанную ячейку теперь внести невозможно, а только можно выбрать из представленного списка нужную позицию. Выбираем пункт в выпадающем списке.
- Как видим, выбранная позиция тут же отобразилась в поле «Наименование товара».
- Далее нам нужно будет присвоить имена тем трем ячейкам формы ввода, куда мы будем вводить данные. Выделяем первую ячейку, где уже установлено в нашем случае наименование «Картофель». Далее переходим в поле наименования диапазонов. Оно расположено в левой части окна Excel на том же уровне, что и строка формул. Вводим туда произвольное название. Это может быть любое наименование на латинице, в котором нет пробелов, но лучше все-таки использовать названия близкие к решаемым данным элементом задачам. Поэтому первую ячейку, в которой содержится название товара, назовем «Name». Пишем данное наименование в поле и жмем на клавишу Enter на клавиатуре.
- Точно таким же образом присваиваем ячейке, в которую будем вводить количество товара, имя «Volum».
- А ячейке с ценой – «Price».
- После этого точно таким же образом даем название всему диапазону из вышеуказанных трех ячеек. Прежде всего, выделим, а потом дадим ему наименование в специальном поле. Пусть это будет имя «Diapason».
- После последнего действия обязательно сохраняем документ, чтобы названия, которые мы присвоили, смог воспринимать макрос, созданный нами в дальнейшем. Для сохранения переходим во вкладку «Файл» и кликаем по пункту «Сохранить как…».
- В открывшемся окне сохранения в поле «Тип файлов» выбираем значение «Книга Excel с поддержкой макросов (.xlsm)». Далее жмем на кнопку «Сохранить».
- Затем вам следует активировать работу макросов в своей версии Excel и включить вкладку «Разработчик», если вы это до сих пор не сделали. Дело в том, что обе эти функции по умолчанию в программе отключены, и их активацию нужно выполнять принудительно в окне параметров Excel.
- После того, как вы сделали это, переходим во вкладку «Разработчик». Кликаем по большому значку «Visual Basic», который расположен на ленте в блоке инструментов «Код».
- Последнее действие приводит к тому, что запускается редактор макросов VBA. В области «Project», которая расположена в верхней левой части окна, выделяем имя того листа, где располагаются наши таблицы. В данном случае это «Лист 1».
- После этого переходим к левой нижней области окна под названием «Properties». Тут расположены настройки выделенного листа. В поле «(Name)» следует заменить кириллическое наименование («Лист1») на название, написанное на латинице. Название можно дать любое, которое вам будет удобнее, главное, чтобы в нем были исключительно символы латиницы или цифры и отсутствовали другие знаки или пробелы. Именно с этим именем будет работать макрос. Пусть в нашем случае данным названием будет «Producty», хотя вы можете выбрать и любое другое, соответствующее условиям, которые были описаны выше.
В поле «Name» тоже можно заменить название на более удобное. Но это не обязательно. При этом допускается использование пробелов, кириллицы и любых других знаков. В отличие от предыдущего параметра, который задает наименование листа для программы, данный параметр присваивает название листу, видимое пользователю на панели ярлыков.
Как видим, после этого автоматически изменится и наименование Листа 1 в области «Project», на то, которое мы только что задали в настройках.
- Затем переходим в центральную область окна. Именно тут нам нужно будет записать сам код макроса. Если поле редактора кода белого цвета в указанной области не отображается, как в нашем случае, то жмем на функциональную клавишу F7 и оно появится.
- Теперь для конкретно нашего примера нужно записать в поле следующий код:
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. Теперь нам следует разместить кнопку, которая будет активировать созданный макрос. Для этого переходим во вкладку «Разработчик». В блоке настроек «Элементы управления» на ленте кликаем по кнопке «Вставить». Открывается перечень инструментов. В группе инструментов «Элементы управления формы» выбираем самый первый – «Кнопка».
- Затем с зажатой левой клавишей мыши обводим курсором область, где хотим разместить кнопку запуска макроса, который будет производить перенос данных из формы в таблицу.
- После того, как область обведена, отпускаем клавишу мыши. Затем автоматически запускается окно назначения макроса объекту. Если в вашей книге применяется несколько макросов, то выбираем из списка название того, который мы выше создавали. У нас он называется «DataEntryForm». Но в данном случае макрос один, поэтому просто выбираем его и жмем на кнопку «OK» внизу окна.
- После этого можно переименовать кнопку, как вы захотите, просто выделив её текущее название.
В нашем случае, например, логично будет дать ей имя «Добавить». Переименовываем и кликаем мышкой по любой свободной ячейке листа.
- Итак, наша форма полностью готова. Проверим, как она работает. Вводим в её поля необходимые значения и жмем на кнопку «Добавить».
- Как видим, значения перемещены в таблицу, строке автоматически присвоен номер, сумма посчитана, поля формы очищены.
- Повторно заполняем форму и жмем на кнопку «Добавить».
- Как видим, и вторая строка также добавлена в табличный массив. Это означает, что инструмент работает.
Читайте также:
Как создать макрос в Excel
Как создать кнопку в Excel
В Экселе существует два способа применения формы заполнения данными: встроенная и пользовательская. Применение встроенного варианта требует минимум усилий от пользователя. Его всегда можно запустить, добавив соответствующий значок на панель быстрого доступа. Пользовательскую форму нужно создавать самому, но если вы хорошо разбираетесь в коде VBA, то сможете сделать этот инструмент максимально гибким и подходящим под ваши нужды.
В этой заметке описываются методы создания пользовательских диалоговых окон, которые существенно расширяют стандартные возможности Excel. Диалоговые окна – это наиболее важный элемент пользовательского интерфейса в Windows. Они применяются практически в каждом приложении Windows, и большинство пользователей неплохо представляет, как они работают. Разработчики Excel создают пользовательские диалоговые окна с помощью пользовательских форм (UserForm). Кроме того, в VBA имеются средства, обеспечивающие создание типовых диалоговых окон.[1]
Рис. 1. Работа процедуры GetName
Скачать заметку в формате Word или pdf, примеры в архиве
Перед тем как приступить к изучению тонкостей создания диалоговых окон на основе пользовательских форм, следует научиться использовать некоторые встроенные инструменты Excel, предназначенные для вывода диалоговых окон.
Использование окон ввода данных
Окно ввода данных — это простое диалоговое окно, которое позволяет пользователю ввести одно значение. Например, можно применить окно ввода данных, чтобы предоставить пользователю возможность ввести текст, число или диапазон значений. Для создания окна ввода предназначены две функции InputBox: одна— в VBA, а вторая является методом объекта Application.
Функция InputBox в VBA
Функция имеет следующий синтаксис:
InputBox(запрос [, заголовок] [, по_умолчанию] [, xpos] [, ypos] [, справка, раздел])
- Запрос. Указывает текст, отображаемый в окне ввода (обязательный параметр).
- Заголовок. Определяет заголовок окна ввода (необязательный параметр).
- По_умолчанию. Задает значение, которое отображается в окне ввода по умолчанию (необязательный параметр).
- xpos, ypos. Определяют координаты верхнего левого угла окна ввода на экране (необязательные параметры).
- Справка, раздел. Указывают файл и раздел в справочной системе (необязательные параметры).
Функция InputBox запрашивает у пользователя одно значение. Она всегда возвращает строку, поэтому результат нужно будет преобразовать в числовое значение. Текст, отображаемый в окне ввода, может достигать 1024 символов (длину допускается изменять в зависимости от ширины используемых символов). Если определить раздел справочной системы, то в диалоговом окне будет отображена кнопка Справка.
Процедура GetName запрашивает у пользователя полное имя (имя и фамилию). Затем программа выделяет имя и отображает приветствие в окне сообщения (см. рис. 1; код функции можно найти в файле VBA inputbox.xlsm).
Sub GetName() Dim UserName As String Dim FirstSpace As Integer Do Until UserName <> «» UserName = InputBox(«Укажите имя и фамилию: «, _ «Назовите себя») Loop FirstSpace = InStr(UserName, » «) If FirstSpace <> 0 Then UserName = Left(UserName, FirstSpace — 1) End If MsgBox «Привет « & UserName End Sub |
Обратите внимание: функция InputBox вызывается в цикле Do Until. Это позволяет убедиться в том, что данные введены в окно. Если пользователь щелкнет на кнопке Отмена или не введет текст, то переменная UserName будет содержать пустую строку, а окно ввода данных появится повторно. Далее в процедуре будет предпринята попытка получить имя пользователя путем поиска первого символа пробела (для этого применяется функция InStr). Таким образом, можно воспользоваться функцией Left для получения всех символов, расположенных слева от символа пробела. Если символ пробела не найден, то используется все введенное имя.
Если строка, предоставленная в качестве результата выполнения функции InputBox, выглядит как число, ее можно преобразовать с помощью функции VBA Val.
В процедуре GetWord пользователю предлагается ввести пропущенное слово (рис. 2). Этот пример также иллюстрирует применение именованных аргументов (р и t). Текст запроса выбирается из ячейки А1 рабочего листа.
Sub GetWord() Dim TheWord As String Dim p As String Dim t As String p = Range(«A1») t = «Какое слово пропущено?» TheWord = InputBox(prompt:=p, Title:=t) If UCase(TheWord) = «ВОДОКАЧКУ» Then MsgBox «Верно.» Else MsgBox «Не верно.» End If End Sub |
Рис. 2. Использование функции VBA inputBox, отображающей запрос
Метод Excel InputBox
Метод Excel InputBox по сравнению с функцией VBA InputBox предоставляет три преимущества:
- возможность задать тип возвращаемого значения;
- возможность указать диапазон листа путем выделения с помощью мыши;
- автоматическая проверка правильности введенных данных.
Метод InputBox имеет следующий синтаксис.
InputBox(запрос, [, заголовок], [, по_умолчанию], [, слева], [, сверху], [, справка, раздел], [, тип])
- Запрос. Указывает текст, отображаемый в окне ввода (обязательный параметр).
- Заголовок. Определяет заголовок окна ввода (необязательный параметр).
- По_умолчанию. Задает значение, которое отображается в окне ввода по умолчанию (необязательный параметр).
- Слева, сверху. Определяют координаты верхнего левого угла окна ввода на экране (необязательные параметры).
- Справка, раздел. Указывают файл и раздел в справочной системе (необязательные параметры).
- Тип. Указывает код типа данных, который будет возвращаться методом (необязательный параметр; значения см. рис. 3).
Рис. 3. Коды типов данных, возвращаемые методом Excel InputBox
Используя сумму приведенных выше значений, можно возвратить несколько типов данных. Например, для отображения окна ввода, которое принимает текстовый или числовой тип данных, установите код равным 3 (1 + 2 или число + текст). Если в качестве кода типа данных применить значение 8, то пользователь сможет ввести в поле адрес ячейки или диапазона ячеек. Пользователь также можент выбрать диапазон на текущем рабочем листе.
В процедуре EraseRange используется метод InputBox. Пользователь может указать удаляемый диапазон (рис. 4). Адрес диапазона вводится в окно вручную, или выделяется мышью на листе. Метод InputBox с кодом 8 возвращает объект Range (обратите внимание на ключевое слово Set). После этого выбранный диапазон очищается (с помощью метода Clear). По умолчанию в поле окна ввода отображается адрес текущей выделенной ячейки. Если в окне ввода щелкнуть на кнопке Отмена, то оператор On Error завершит процедуру.
Sub EraseRange() Dim UserRange As Range On Error GoTo Canceled Set UserRange = Application.InputBox _ (Prompt:=«Удаляемый диапазон:», _ Title:=«Удаление диапазона», _ Default:=Selection.Address, _ Type:=8) UserRange.Clear UserRange.Select Canceled: End Sub |
Рис. 4. Пример использования метода InputBox для выбора диапазона
Если в процедуре EraseRange ввести не диапазон адресов, то Excel отобразит сообщение (рис. 5) и позволит пользователю повторить ввод данных.
Рис. 5. Метод InputBox автоматически проверяет вводимые данные
Функция VBA MsgBox
Функция VBA MsgBox служит для отображения сообщения. Также она передает результат щелчка на кнопке ОК или Отмена). Синтаксис функции:
MsgBox(запрос[, кнопки][, заголовок][, справка, раздел])
- Запрос. Определяет текст, который будет отображаться в окне сообщения (обязательный параметр).
- Кнопки. Содержит числовое выражение (или константу), которое определяет кнопки, отображаемые в окне сообщения (необязательный параметр; рис. 6). Также можно задать кнопку по умолчанию.
- Заголовок. Содержит заголовок окна сообщения (необязательный параметр).
- Справка, раздел. Указывают файл и раздел справочной системы (необязательные параметры).
Рис. 6. Константы и значения, используемые для выбора кнопок в функции MsgBox
Первая группа значений (0–5) описывает номер и тип кнопок в диалоговом окне. Вторая группа (16, 32, 48, 64) описывает стиль значка. Третья группа (0, 256, 512) определяет, какая кнопка назначена по умолчанию. Четвертая группа (0, 4096) определяет модальность окна сообщения. Пятая указывает, показывать ли окно сообщений поверх других окон, устанавливает выравнивание и направление текста. В процессе сложения чисел для получения окончательного значения аргумента Buttons следует использовать только одно число из каждой группы.
Можно использовать функцию MsgBox в качестве процедуры (для отображения сообщения), а также присвоить возвращаемое этой функцией значение переменной. Функция MsgBox возвращает результат, представляющий кнопку, на которой щелкнул пользователь. В следующем примере отображается сообщение и не возвращается результат (код функций, приведенных в этом разделе см. также в файле VBA msgbox.xlsm).
Sub MsgBoxDemo() MsgBox «При выполнении макроса ошибок не произошло.» End Sub |
Чтобы получить результат из окна сообщения, присвойте возвращаемое функцией MsgBox значение переменной. В следующем коде используется ряд встроенных констант (рис. 7), которые упрощают управление возвращаемыми функцией MsgBox значениями.
Sub GetAnswer() Dim Ans As Integer Ans = MsgBox(«Продолжать?», vbYesNo) Select Case Ans Case vbYes ‘ … [код при Ans равно Yes] Case vbNo ‘ ... [код при Ans равно No] End Select End Sub |
Рис. 7. Константы, возвращаемые MsgBox
Функция MsgBox возвращает переменную, имеющую тип Integer. Вам необязательно использовать переменную для хранения результата выполнения функции MsgBox. Следующая процедура представляет собой вариацию процедуры GetAnswer.
Sub GetAnswer2() If MsgBox(«Продолжать?», vbYesNo) = vbYes Then ‘ … [код при Ans равно Yes] Else ‘ ... [код при Ans равно No] End If End Sub |
В следующем примере функции используется комбинация констант для отображения окна сообщения с кнопками Да, Нет и знаком вопроса (рис. 8). Вторая кнопка (Нет) используется по умолчанию. Для простоты константы добавлены в переменную Config.
Private Function ContinueProcedure() As Boolean Dim Config As Integer Dim Ans As Integer Config = vbYesNo + vbQuestion + vbDefaultButton2 Ans = MsgBox(«Произошла ошибка. Продолжить?», Config) If Ans = vbYes Then ContinueProcedure = True _ Else ContinueProcedure = False End Function |
Рис. 8. Параметр Кнопки функции MsgBox определяет кнопки, которые отображаются в окне сообщения
В файле VBA msgbox.xlsm функция ContinueProcedure в демонстрационных целях представлена в виде процедуры. Функция ContinueProcedure может вызываться из другой процедуры. Например, оператор
If Not ContinueProcedure() Then Exit Sub
вызывает функцию ContinueProcedure (которая отображает окно сообщения). Если функция возвращает значение ЛОЖЬ (т.е. пользователь щелкнул на кнопке Нет), то процедура будет завершена. В противном случае выполняется следующий оператор.
Если в сообщении необходимо указать разрыв строки (рис. 9), воспользуйтесь константой vbCrLf (или vbNewLine):
Sub MultiLine() Dim Msg As String Msg = «Это первая строка.» & vbCrLf & vbNewLine Msg = Msg & «Вторая строка.» & vbCrLf Msg = Msg & «Третья строка.» MsgBox Msg End Sub |
Рис. 9. Разбиение сообщения на несколько строк
Для включения в сообщение символа табуляции применяется константа vbTab. В процедуре ShowRange окно сообщения используется для отображения диапазона значений размером 10 строк на 3 столбца — ячейки А1:С10 (рис. 10). В этом случае столбцы разделены с помощью константы vbTab. Новые строки вставляются с помощью константы vbCrLf. Функция MsgBox принимает в качестве параметра строку, длина которой не превышает 1023 символов. Такая длина задает ограничение на количество ячеек, которое можно отобразить в сообщении.
Sub ShowRange() Dim Msg As String Dim r As Integer, c As Integer Msg = «» For r = 1 To 10 For c = 1 To 3 Msg = Msg & Cells(r, c).Text If c <> 3 Then Msg = Msg & vbTab Next c Msg = Msg & vbCrLf Next r MsgBox Msg End Sub |
Рис. 10. Текст в этом окне сообщения содержит символы табуляции и разрыва строк
Метод Excel GetOpenFilename
Если приложению необходимо получить от пользователя имя файла, то можно воспользоваться функцией InputBox, но этот подход часто приводит к возникновению ошибок. Более надежным считается использование метода GetOpenFilename объекта Application, который позволяет удостовериться, что приложение получило корректное имя файла (а также его полный путь). Данный метод позволяет отобразить стандартное диалоговое окно Открытие документа, но при этом указанный файл не открывается. Вместо этого метод возвращает строку, которая содержит путь и имя файла, выбранные пользователем. По окончании данного процесса с именем файла можно делать все что угодно. Синтаксис (все параметры необязательные):
Application.GetOpenFilename(фильтр_файла, индекс_фильтра, заголовок, множественный_выбор)
- Фильтр_файла. Содержит строку, определяющую критерий фильтрации файлов (необязательный параметр).
- Индекс_фильтра. Указывает индексный номер того критерия фильтрации файлов, который используется по умолчанию (необязательный параметр).
- Заголовок. Содержит заголовок диалогового окна (необязательный параметр). Если этот параметр не указать, то будет использован заголовок Открытие документа.
- Множественный_выбор. Необязательный параметр. Если он имеет значение ИСТИНА, можно выбрать несколько имен файлов. Имя каждого файла заносится в массив. По умолчанию данный параметр имеет значение ЛОЖЬ.
Аргумент Фильтр_файла определяет содержимое раскрывающегося списка Тип файлов, находящегося в окне Открытие документа. Аргумент состоит из строки, определяющей отображаемое значение, а также строки действительной спецификации типа файлов, в которой находятся групповые символы. Оба элемента аргумента разделены запятыми. Если этот аргумент не указывать, то будет использовано значение, заданное по умолчанию: "
Все файлы (*.*),*.*"
. Первая часть строки Все файлы (*.*) – то текст, отображаемый в раскрывающемся списке тип файлов. Вторая часть строки *.* указывает тип отображаемых файлов.
В следующих инструкциях переменной Filt присваивается строковое значение. Эта строка впоследствии используется в качестве аргумента фильтр_файла метода GetOpenFilename. В данном случае диалоговое окно предоставит пользователю возможность выбрать один из четырех типов файлов (кроме варианта Все файлы). Если задать значение переменной Filt, то будет использоваться оператор конкатенации строки VBA. Этот способ упрощает управление громоздкими и сложными аргументами.
Filt = «Текстовые файлы (*.txt),*.txt,» & _ «Файлы Lotus (*.prn),*.prn,» & _ «Файлы, разделенные запятой (*.csv),*.csv,» & _ «Файлы ASCII (*.asc),*.asc,» & _ «Все файлы (*.*),*.*» |
В следующем примере у пользователя запрашивается имя файла. При этом в поле типа файлов используются пять фильтров (код содержится в файле prompt for file.xlsm).
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 |
Sub GetImportFileName() Dim Filt As String Dim FilterIndex As Integer Dim FileName As Variant Dim Title As String ‘ Настройка списка фильтров Filt = «Text Files (*.txt),*.txt,» & _ «Lotus Files (*.prn),*.prn,» & _ «Comma Separated Files (*.csv),*.csv,» & _ «ASCII Files (*.asc),*.asc,» & _ «Все файлы (*.*),*.*» ‘ Отображает *.* по умолчанию FilterIndex = 3 ‘ Настройка заголовка диалогового окна Title = «Выберите файл для импорта» ‘ Получение имени файла FileName = Application.GetOpenFilename _ (FileFilter:=Filt, _ FilterIndex:=FilterIndex, _ Title:=Title) ‘ При отмене выйти из окна If FileName = False Then MsgBox «Файл не выбран.» Exit Sub End If ‘ Отображение полного имени и пути MsgBox «Вы выбрали « & FileName End Sub |
На рис. 11 показано диалоговое окно, которое выводится на экран после выполнения этой процедуры (по умолчанию предлагается фильтр *.csv).
Рис. 11. Метод GetOpenFilename отображает диалоговое окно, в котором выбирается файл
В следующем примере пользователь может, удерживая нажатыми клавиши <Shift> и <Ctrl>, выбрать в окне несколько файлов. Обратите внимание, что событие использования кнопки Отмена определяется по наличию переменной массива FileName. Если пользователь не щелкнул на кнопке Отмена, то результирующий массив будет состоять как минимум из одного элемента. В этом примере список выбранных файлов отображается в окне сообщения.
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 |
Sub GetImportFileName2() Dim Filt As String Dim FilterIndex As Integer Dim FileName As Variant Dim Title As String Dim i As Integer Dim Msg As String ‘ Установка списка фильтров файлов Filt = «Text Files (*.txt),*.txt,» & _ «Lotus Files (*.prn),*.prn,» & _ «Comma Separated Files (*.csv),*.csv,» & _ «ASCII Files (*.asc),*.asc,» & _ «All Files (*.*),*.*» ‘ Отображает *.* по умолчанию FilterIndex = 5 ‘ Настройка заголовка диалогового окна Title = «Выберите файл для импорта» ‘ Получение имени файла FileName = Application.GetOpenFilename _ (FileFilter:=Filt, _ FilterIndex:=FilterIndex, _ Title:=Title, _ MultiSelect:=True) ‘ Выход в случае отмены работы с диалоговым окном If Not IsArray(FileName) Then MsgBox «Файл не выбран.» Exit Sub End If ‘ Отображение полного пути и имени файлов For i = LBound(FileName) To UBound(FileName) Msg = Msg & FileName(i) & vbCrLf Next i MsgBox «Было выбрано:» & vbCrLf & Msg End Sub |
Обратите внимание: переменная FileName определена как массив переменного типа (а не как строка в предыдущем примере). Причина заключается в том, что потенциально FileName может содержать массив значений, а не только одну строку.
Метод Excel GetSaveAsFilename
Данный метод отображает диалоговое окно Сохранение документа и дает пользователю возможность выбрать (или указать) имя сохраняемого файла. В результате возвращается имя файла, но никакие действия не предпринимаются. Синтаксис (все параметры необязательные):
Application.GetSaveAsFilename(начальное_имя, фильтр_файла, индекс_фильтра, заголовок, текст_кнопки)
- Начальное_имя. Указывает предполагаемое имя файла.
- Фильтр_файла. Содержит критерий фильтрации отображаемых в окне файлов.
- Индекс_фильтра. Код критерия фильтрации файлов, который используется по умолчанию.
- Заголовок. Определяет текст заголовка диалогового окна.
Получение имени папки
Для того чтобы получить имя файла, проще всего воспользоваться описанным выше методом GetOpenFileName. Но если нужно получить лишь имя папки (без названия файла), лучше воспользоваться методом объекта Excel FileDialog. Следующая процедура отображает диалоговое окно, в котором можно выбрать папку (см. также файл get directory.xlsm). С помощью функции MsgBox отображается имя выбранной папки (или сообщение Отменено).
Sub GetAFolder() With Application.FileDialog(msoFileDialogFolderPicker) .InitialFileName = Application.DefaultFilePath & «» .Title = «Выберите местоположение резервной копии.« .Show If .SelectedItems.Count = 0 Then MsgBox «Отменено» Else MsgBox .SelectedItems(1) End If End With End Sub |
Объект FileDialog позволяет определить начальную папку путем указания значения свойства InitialFileName. В примере в качестве начальной папки применяется путь к файлам Excel, заданный по умолчанию.
Отображение диалоговых окон Excel
Создаваемый вами код VBA может вызывать на выполнение многие команды Excel, находящиеся на ленте. И если в результате выполнения команды открывается диалоговое окно, ваш код может делать выбор в диалоговом окне (даже если само диалоговое окно не отображается). Например, следующая инструкция VBA эквивалентна выбору команды Главная –> Редактирование –> Найти и выделить –> Перейти и указанию диапазона ячеек А1:СЗ с последующим щелчком на кнопке ОК. Но само диалоговое окно Переход при этом не отображается (именно это и нужно).
Application.Goto Reference:=Range("
А1:СЗ"
)
Иногда же приходится отображать встроенные окна Excel, чтобы пользователь мог сделать свой выбор. Для этого используется коллекция Dialogs объекта Application. Учтите, что в настоящее время компания Microsoft прекратила поддержу этого свойства. В предыдущих версиях Excel пользовательские меню и панели инструментов создавались с помощью объекта CommandBar. В версиях Excel 2007 и Excel 2010 этот объект по-прежнему доступен, хотя и работает не так, как раньше. Начиная с версии Excel 2007 возможности объекта CommandBar были существенно расширены. В частности, объект CommandBar можно использовать для вызова команд ленты с помощью VBA. Многие из команд, доступ к которым открывается с помощью ленты, отображают диалоговое окно. Например, следующая инструкция отображает диалоговое окно Вывод на экран скрытого листа (рис. 12; см. также файл ribbon control names.xlsm):
Application.CommandBars.ExecuteMso("
SheetUnhide"
)
Рис. 12. Диалоговое окно, отображаемое в результате выполнения указанного выше оператора
Метод ExecuteMso принимает лишь один аргумент, idMso, который представляет элемент управления ленты. К сожалению, сведения о многих параметрах в справочной системе отсутствуют.
В файле ribbon control names.xlsm описаны все названия параметров команд ленты Excel. Поэкспериментируйте с параметрами, перечисленными в этой рабочей книге. Многие из них вызывают команды немедленно (без промежуточных диалоговых окон). Но большинство из них генерирует ошибку при использовании в неправильном контексте. Например, Excel отображает сообщение об ошибке, если команда Functionwizard вызывается в случае выбора диаграммы.
В результате выполнения следующего оператора отображается вкладка Шрифт диалогового окна Формат ячеек:
Application.CommandBars.ExecuteMso("
FormatCellsFontDialog"
)
На самом деле пользоваться объектами CommandBar не стоит, поскольку вряд ли они будут поддерживаться в будущих версиях Excel.
Отображение формы ввода данных
Многие пользователи применяют Excel для управления списками, информация в которых ранжирована по строкам. В Excel поддерживается простой способ работы с подобными типами данных с помощью встроенных форм ввода данных, которые могут создаваться автоматически. Подобная форма предназначена для работы как с обычным диапазоном, так и с диапазоном, оформленным в виде таблицы (с помощью команды Вставка –> Таблицы –> Таблица). Пример формы ввода данных показан на рис. 13 (см. также файл data form example.xlsm).
Рис. 13. Некоторые пользователи предпочитают применять встроенные формы ввода данных Excel для ввода сведений; чтобы увеличить изображение кликните на нем правой кнопкой мыши и выберите Открыть картинку в новой вкладке
В силу каких-то неизвестных причин на ленте Excel отсутствует команда, обеспечивающая доступ к форме ввода данных. Подобную команду можно добавить на панель быстрого доступа. Для этого выполните следующие действия.
- Щелкните правой кнопкой мыши на панели быстрого доступа и в контекстном меню выберите параметр Настройка панели быстрого доступа.
- На экране появится вкладка Панель быстрого доступа диалогового окна Параметры Excel.
- В раскрывающемся списке Выбрать команды из выберите параметр Команды не на ленте.
- В появившемся списке выберите параметр Форма.
- Щелкните на кнопке Добавить для добавления выбранной команды на панель быстрого доступа.
- Щелкните на кнопке ОК для закрытия диалогового окна Параметры Excel.
После выполнения перечисленных выше действий на панели быстрого доступа появится новый значок.
Для работы с формой ввода данных следует структурировать данные таким образом, чтобы Excel распознавал их в виде таблицы. Начните с указания заголовков столбцов в первой строке диапазона вводимых данных. Выделите любую ячейку в таблице и щелкните на кнопке Форма панели быстрого доступа. Excel отображает диалоговое окно, в котором будут вводиться данные. Для перемещения между текстовыми полями в целях ввода информации используйте клавишу <Tab>. Если ячейка содержит формулу, результат вычислений отображается в виде текста (а не в формате поля ввода данных). Другими словами, невозможно изменить формулы с помощью формы ввода данных.
По завершении ввода данных в форму щелкните на кнопке Создать. После этого Excel вводит данные в строку рабочего листа, а также очищает диалоговое окно для ввода следующей строки данных.
Используйте метод ShowDataForm для отображения формы ввода данных Excel. Единственное требование заключается в том, что активная ячейка должна находиться в диапазоне. Следующий код активизирует ячейку А1 (в таблице), а затем отображает форму ввода данных.
Sub DisplayDataForm() Range(«A1»).Select ActiveSheet.ShowDataForm End Sub |
[1] По материалам книги Джон Уокенбах. Excel 2010. Профессиональное программирование на VBA. – М: Диалектика, 2013. – С. 387–403.
An Excel data form is a convenient way to enter data into an Excel database and to view a row of information in a worksheet without scrolling through the sheet. Data forms list the column headings in a spreadsheet so that an entire row of data can be viewed at one time. Data forms are also used to search for records and edit existing records.
Instructions in this article apply to Excel 2019, 2016, 2013, 2010; and Excel for Microsoft 365.
Add the Data Entry Form Icon to the Quick Access Toolbar
The first step to using the data entry form is to add the Form icon to the Quick Access Toolbar. This is a one-time operation. Once added, the Form icon remains available on the Quick Access Toolbar.
The Quick Access Toolbar is used to store shortcuts to frequently used features in Excel. It is also where you can add the shortcuts to Excel features that are not available on the ribbon.
To add the Form icon to the Quick Access Toolbar:
-
Select the Customize Quick Access Toolbar dropdown arrow.
-
Choose More Commands.
-
In the Excel Options dialog box, make sure that the Quick Access Toolbar tab is selected.
-
Select the Choose commands from the dropdown arrow and choose All Commands.
-
Scroll through the alphabetical list of commands and select Form.
-
Select Add.
-
Select OK to add the Form button to the Quick Access Toolbar.
-
You’ll find the Form button at the right end of the Quick Access Toolbar.
Add the Database Field Names
The data entry form is one of Excel’s built-in data tools. To use the form, provide the column headings to be used in your database, click the Form icon, and Excel does the rest.
The easiest way to add the field names to the form is to type them into worksheet cells. The form can include up to 32 column headings.
To follow along with this tutorial, open a blank Excel worksheet and enter the column heading data into cells A1 to E1 as shown in the image below:
Open the Data Entry Form
After your worksheet contains the column headings, it’s time to open the data entry form.
-
Select cell A2 to make it the active cell.
-
Go to the Quick Access Toolbar and select Form.
-
In the warning dialog box, select OK.
-
The form containing all of the column headings appears on the screen.
-
Now you’re ready to use the form to enter data.
Add Data Records With the Form
Adding records to the worksheet is simply a matter of typing the data in the correct form fields.
Add the first record to the worksheet by entering the data into the form fields next to the correct headings:
- StudentID: SA267-567
- Last Name: Jones
- Initial: B.
- Age: 21
- Program: Languages
Press tab to move from field to field. Select New to add the record to the worksheet and to clear the fields for the second record.
Add the second record to the worksheet:
- StudentID: SA267-211
- Last Name: Williams
- Initial: J.
- Age: 19
- Program: Science
Select New when you’ve finished adding the record.
When entering similar data such as the student ID numbers (only the numbers after the dash are different), use copy and paste to speed up data entry.
To add the remaining records to the tutorial database, use the form to enter the data shown in the image below into cells A4 to E11.
Use the Form’s Data Tools
As more records are added to the worksheet, it’s important to maintain the integrity of the data. Keep data up-to-date and relevant by fixing data errors, updating records, removing obsolete records, and deleting duplicate records.
The data entry form contains several tools that make it easy to find, correct, and delete records from the database. These tools are found on the right side of the form and include:
- Find Prev and Find Next: Scroll forward and back through the worksheet one record at a time.
- Delete: Delete records from the worksheet.
- Restore: Undo changes to a record. Restore works when a record is displayed in the form. When another record is accessed or the form is closed, Restore becomes inactive.
- Criteria: Search the worksheet for records based on specific criteria, such as name, age, or program.
Search for Records Using One Field Name
Here’s how to use the data entry form to search the database for records using one column heading, such as Last Name, Age, or Program.
-
In the data entry form, select Criteria.
When you select Criteria, the form fields are cleared from the form; no records are removed from the worksheet.
-
Place the cursor in the Program text box and type Arts to search for all students enrolled in the Arts program.
-
Select Find Next
-
The data for the first record that matches the search criteria appears in the form.
To make changes to the record, delete the existing text and enter the correct data.
-
Select Find Next to display additional records that match the search criteria.
Search for Records Using Multiple Field Names
The form can also be used to search for records using multiple criteria. For example, to search for students who are 18 years of age and enrolled in the Arts program. Only records that match both criteria display in the form.
-
Select Criteria.
-
Place the cursor in the Age text box and type 18.
-
Place the cursor in the Program text box and type Arts.
-
Select Find Next.
-
The data for the first record that matches the search criteria appears in the form.
-
Select Find Next to display additional records that match the search criteria.
Thanks for letting us know!
Get the Latest Tech News Delivered Every Day
Subscribe
Обычно заполнение данных в таблицах Microsoft Excel происходит вручную, однако это не всегда удобно, особенно если речь идет о проектах с большим количеством столбцов. Часто приходится при помощи мыши пролистывать лист в сторону и выполнять лишние движения для переключения между ячейками. Решается эта проблема путем создания простой формы ввода, что реализуемо без навыков программирования на VBA.
Подготовительные действия
Сначала понадобится подготовить сам лист, а именно – сформировать таблицу, чтобы в будущем форма ее корректно распознала. Вместе с этим нужно активировать кнопку для вызова формы, поскольку по умолчанию в новых версиях Microsoft Excel она не добавлена на панель быстрого доступа.
-
Зажмите левую кнопку мыши и выделите все содержимое таблицы, после чего перейдите на вкладку «Вставка».
-
На ней разверните список «Таблицы» и кликните левой кнопкой мыши по варианту «Таблица».
-
Расположение таблицы уже будет задано по умолчанию, поэтому останется только подтвердить данное действие.
-
Изменять внешний вид таблицы вы можете по своему усмотрению, но сейчас я остановлюсь на классическом ее виде, поскольку функционально разницы никакой не будет.
-
Далее понадобится добавить кнопку вызова формы, для чего перейдите на вкладку «Файл».
-
Нажмите по пункту «Другие» и из появившегося меню выберите пункт «Параметры».
-
В новом окне с настройками на панели слева выберите раздел «Панель быстрого доступа» и установите фильтр для команд «Команды не на ленте».
-
Среди всех команд отыщите «Форма», выделите ее левой кнопкой мыши и нажмите «Добавить».
-
На этом процесс настройки закончен, поэтому убедитесь в том, что кнопка теперь отображается в перечне справа, после чего нажмите «ОК».
Все, теперь у вас есть готовая таблица для заполнения, а также кнопка на панели быстрого доступа, которая и отвечает за вызов окна с формой.
Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей
Подписаться
Заполнение простой формы ввода
Я покажу пример, как осуществляется заполнение простой формы при помощи функционального окна, кнопку вызова которого мы и добавили на панель быстрого доступа. Процесс заполнения данных выглядит просто и отлично подойдет для тех ситуаций, когда одновременно нужно создать сразу несколько строк с большим количеством столбцов.
-
Выделите абсолютно любую ячейку, входящую в таблицу, после чего нажмите по кнопке «Форма» на панели быстрого доступа.
-
Начните с нажатия по кнопке «Добавить», чтобы создать новую строку для заполнения.
-
Введите по очереди значения для каждых ячеек из столбцов с названиями, затем нажмите Enter для подтверждения ввода.
-
Сразу же можете приступить к добавлению следующей строчки и делать так до тех пор, пока не завершите ввод всех значений для данной таблицы.
Такая нехитрая последовательность действий позволяет быстро заполнять таблицу данными без необходимости постоянно переключаться между строками и ячейками вручную. Вместе с этим отсутствует надобность самостоятельного создания формы через VBA, что для большинства пользователей практически нерешаемая задача.
Наши постоянные авторы и читатели делятся лайфхаками, основанными на личном опыте. Полная свобода самовыражения.
Рекомендуем
Microsoft Excel
трюки • приёмы • решения
Как использовать встроенную в Excel форму для ввода данных
При вводе данных в Excel некоторые люди предпочитают использовать форму ввода данных Excel — диалоговое окно, которое приспосабливается к вашим данным.
Прежде чем вы сможете использовать эту форму, вы должны настроить заголовки столбцов в вашем листе. Кроме того, вы можете указать диапазон данных в виде таблицы, выбрав Вставка ► Таблицы ► Таблица. Команды Форма нет на ленте, так что вам придется провести небольшую подготовительную работу. Рассмотрим, как можно добавить команду на панель быстрого доступа.
- Щелкните правой кнопкой мыши на панели быстрого доступа и выберите в контекстном меню пункт Настройка панели быстрого доступа. На экране появится раздел Панель быстрого доступа диалогового окна Параметры Excel.
- В раскрывающемся списке Выбрать команды из выберите Команды не на ленте.
- В списке ниже выберите Форма, а затем нажмите кнопку Добавить.
- Нажмите ОК, чтобы закрыть диалоговое окно Параметры Excel.
После выполнения этих шагов ваша панель быстрого доступа будет включать новый значок. При щелчке на нем отображается форма для ввода данных. Активизируйте любую ячейку в листе и выберите команду Форма на панели быстрого доступа. Вы увидите диалоговое окно, как показано на рис. 41.1 (ноля, отображаемые в диалоговом окне, меняются в зависимости от заголовков ваших столбцов).
Рис. 41.1. Форма ввода данных Excel
Если количество столбцов в вашем списке больше, чем позволяет вместить экран, диалоговое окно будет содержать два столбца имен полей. Если в списке более 32 столбцов, команда Форма не работает. Вам придется отказаться от этого метода ввода данных и вводить информацию в ячейки напрямую.
Когда выводится форма с данными, отображается первая запись в списке. Обратите внимание на индикатор в верхнем правом углу окна: он сообщает вам, какая запись выбрана, и количество записей в списке. Проверьте это действие.
Чтобы ввести новую запись, нажмите кнопку Добавить для очистки полей. Теперь вы можете ввести новую информацию в соответствующие поля. Нажмите клавишу Tab или Shift+Tab для перемещения между полями. Когда вы нажмете кнопку Добавить (или Закрыть), данные, которые вы ввели, добавятся в нижнюю часть списка. Вы также можете нажать Enter, что эквивалентно нажатию кнопки Добавить. Если список содержит формулы, они также автоматически вводятся в новую запись.
Если ваш список назван Database, Excel автоматически расширяет определение диапазона так, чтобы он включал новую строку или строки, которые вы добавляете в список с помощью формы. Обратите внимание на то, что этот метод работает только тогда, когда имя списка — Database; никакое другое имя не работает. Используйте команду Формулы ► Определенные имена ► Присвоить имя, чтобы задать имя диапазону. Если список находится в таблице (созданной с помощью команды Вставка ► Таблицы ► Таблица), нет необходимости именовать диапазон. Таблица будет расширена автоматически при добавлении новых данных.
Вы можете использовать форму не только для ввода данных, но и для редактирования и удаления существующих данных в списке, просмотра данных по одной записи за раз и отображения записей, которые отвечают определенным критериям. Форма содержит несколько дополнительных кнопок.
- Удалить — удаляет текущую запись.
- Вернуть — восстанавливает любую информацию, которую вы редактировали. Вы должны нажать ее, прежде чем нажмете кнопку Добавить.
- Назад — отображает предыдущую запись в списке. Если вы ввели критерий, эта кнопка показывает предыдущую запись, которая соответствует критерию.
- Далее — отображает следующую запись в списке. Если вы ввели критерий, эта кнопка показывает следующую запись, которая соответствует критерию.
- Критерии — очищает поля и позволяет ввести критерий, по которому выполняется поиск записей. Например, чтобы найти записи, в которых значение цены менее $200 000, введите в поле Цена. Затем вы можете использовать кнопки Назад и Далее для отображения подходящих под критерий записей.
- Закрыть — закрывает форму (и вводит любые данные, которые вы вводили).
Элементы управления формы в MS EXCEL
Элементы управления формы (Поле со списком, Флажок, Счетчик и др.) помогают быстро менять данные на листе в определенном диапазоне, включать и выключать опции, делать выбор и пр. В принципе, без них можно обойтись, но они делают управление данными на листе более наглядным и уменьшают вероятность ввода некорректных данных.
Для вставки элементов управления на лист необходимо отобразить вкладку Разработчик.
- В MS EXCEL 2007 это можно сделать через меню Кнопка офис/ Параметры Excel/ Основные/ Показывать вкладку Разработчик на ленте .
- В MS EXCEL 2010 это можно сделать так: Откройте вкладку Файл; Нажмите кнопку Параметры; Нажмите кнопку Настроить ленту; Выберите команду Настройка ленты и в разделе Основные вкладки установите флажок Разработчик.
Теперь вставить элемент управления можно через меню: Разработчик/ Элементы управления/ Вставить.
Обратите внимание, что в этом меню можно вставить Элементы ActiveX, которые расположены ниже интересующих нас Элементов управления формы. У обоих типов есть одни и те же элементы Кнопка, Список, Флажок и т.п. Разница между ними следующая: чтобы использовать Элементы ActiveX необходимо использовать VBA, а Элементы управления формы можно напрямую привязать к ячейке на листе.
Для тех, кто не ранее не работал с Элементами управления формы, советуем подробно ознакомиться с ними в следующих статьях:
В этой статье рассмотрим более сложный пример совместного использования элементов управления и Условного форматирования.
Разберем конкретный пример применения сразу нескольких Элементов управления. В файле примера с помощью элементов управления показано как пользователь может отредактировать значения в таблице (диапазон F9:K12).
С помощью одного из 3-х элементов управления Поле со списком, Список и Счетчик, пользователь может выбрать столбец таблицы (год). Нужный элемент управления выбирается с помощью группы Переключателей. Название выбранного элемента подсвечивается серым цветом (см. A8:B8 на рис. выше). Выбранный год выделяется в таблице Условным форматированием темно серым цветом (см. H9:H12 на рис. выше). Отображение этого выделения регулируется Флажком (фон флажка — красный). Полосами прокрутки можно редактировать Цену и Количество в выбранном году, но только в определенном диапазоне. Теперь – подробнее.
Переключатели
На листе использовано 3 Переключателя объединенных в Группу. Каждому Переключателю соответствует определенный элемент управления: Поле со списком, Список, Счетчик.
Для объединения Элементов в группу помещаем на лист Элемент управления Группа (через меню Разработчик/ Элементы управления/ Вставить). В рамках группы создаем 3 переключателя (также через меню Разработчик/ Элементы управления/ Вставить) и связываем их все с одной ячейкой С2 (выделив элемент управления, правой клавишей вызываем контекстное меню, Формат объекта…, вкладка Элемент управления).
Удерживая клавишу CTRL выделяем 3 переключателя и элемент Группа, вызываем правой клавишей мыши контекстное меню и выбираем Группировка/ Группировать. Теперь при выборе одного из трех Переключателей в Группе, в ячейке С2 будет выводиться значение 1, 2 или 3.
Поле со списком
Теперь вставим элемент управления Поле со списком. Вставить элемент можно через меню: Разработчик/ Элементы управления/ Вставить. В ячейках столбца М введем несколько значений лет: 2009, 2010, 2011, 2012, 2013. Эти значения будут использованы в элементе Поле со списком.
- выделяем диапазон М9:М12;
- нажимаем Формулы/ Определенные имена/ Присвоить имя;
- в поле Имя вводим Список.
Теперь свяжем элемент управления с данными на листе. Для этого:
- выделите элемент управления Поле со списком;
- правой клавишей вызовите его контекстное меню, затем Формат объекта…, вкладка Элемент управления;
- в поле Формировать список по диапазону вводим Список (вместо ссылки на ячейку мы ввели ссылку на определенное Имя!). Конечно, вместо имени можно было указать просто ссылку на диапазон;
- свяжем элемент с ячейкой $C$8. В этой ячейке будет выводится порядковый номер выбранного элемента списка, т.е. если выберем 2009, то выведется 1, т.к. это первый элемент в списке. Для дальнейших целей нам проще использовать именно год, а не его порядковый номер. Для этого в ячейку D8 введем формулу =C8+2008 .
Список
Вставляем на лист элемент Список. Аналогично предыдущему элементу связываем его с ячейкой $C$13 и формируем список на основе того же Именованного диапазона Список. В ячейку D13 введем формулу =C13+2008 .
Счётчик
Вставляем на лист элемент Счетчик. Определяем минимальное значение 2009, максимальное – 2013, шаг 1. Связываем элемент с ячейкой $C$17. В D17 введем формулу =С17 , т.к. элемент Счетчик в нашем случае возвращает значение года.
Чтобы определить значение какого элемента (поле со списком, список или счетчик) является активным в настоящий момент, в ячейке E9 введем формулу: =ЕСЛИ(C2=1;D8;ЕСЛИ(C2=2;D13;D17)) Как мы помним, значение в ячейке С2 определяется Группой переключателей.
Полоса прокрутки
Вставляем на лист элемент Полоса прокрутки. Этим элементом мы будем изменять ячейку на пересечении строки Количество (строка 10) и столбца выбранного года. Значения ячейки будет меняться в диапазоне от 0 до 1000. Но как определить эту ячейку?
Создадим Именованную формулу СмещГода для определения позиции выбранного года в диапазоне лет G9:K9. Нажимаем Формулы/ Определенные имена/ Присвоить имя, в поле Имя вводим СмещГода, в поле диапазон вводим формулу =ПОИСКПОЗ($E$9; $G$9:$K$9;0) Если выбран 2009, то формула вернет 1.
Для определения ячейки строки Количество, соответствующую выбранному году используем формулу =СМЕЩ($F$10;0;СмещГода) . Формула вернет диапазон, состоящий из одной ячейки.
В поле Связь с ячейкой элемента Полоса прокрутки нельзя ввести формулу, но можно, как мы уже видели, ввести Имя. Создадим Именованную формулу Количество, в поле Диапазон укажем формулу =СМЕЩ($F$10;0;СмещГода) . Теперь в поле Связь с ячейкой элемента полоса прокрутки введите Количество.
Аналогичные манипуляции проделайте с полосой прокрутки для Цены. Для этого необходимо создать Именованную формулу Цена, где в поле Диапазон указать формулу =СМЕЩ($F$11;0;СмещГода) .
Флажок
При выборе пользователем текущего года, в таблице с данными (G9:K12) соответствующий столбец будет закрашиваться серым фоном. Для выделения столбца выбранного года используем Условное форматирование.
Сначала вставим на лист элемент Флажок. Этим элементом мы будем включать и выключать выделение в таблице столбца выбранного года. Элемент свяжите с ячейкой $G$2. Если флажок снят, то в этой ячейке будет ЛОЖЬ (этому значению соответствует 0), если установлен, то ИСТИНА (этому значению соответствует 1).
Для настройки Условного форматирования выделим диапазон G9:K12. Так как формула в Условном форматировании будет содержать относительную ссылку, то убедимся, что после выделения диапазона активной ячейкой является G9 (т.е. диапазон надо выделять начиная именно с нее. Подсказкой служит поле Имя, находящееся слева от Строки формул. После выделения диапазона оно должно содержать G9).
- вызовите инструмент Условное форматирование (Главная/ Стили/ Условное форматирование/ Создать правило);
- выберите Использовать формулу для определения форматируемых ячеек;
- в поле «Форматировать значения, для которых следующая формула является истинной» введите =И(СТОЛБЕЦ(G9)=СмещГода+6;$G$2) Формула примет значение ИСТИНА, когда выполнится одновременно 2 условия:
- значение выражения (СмещГода (изменяется от 1 до 5 (т.е. от 2009 до 2013 года) + 6) совпадет с номером текущего столбца (7, т.е. 2009 год);
- Флажок Условное форматирование установлен.
- выберите требуемый формат, например, серый цвет заливки;
- нажмите ОК.
Тестируем
- убедимся, что флажок Условное форматирование установлен;
- выберем переключатель Список;
- в элементе управления Список выберем 2010;
- убедимся, что столбец 2010 выделен серым;
- Полосой прокрутки изменим количество в столбце 2010.
Результат показан на рисунке.
К сожалению, у элементов управления формы Флажок, Поле со списком и Список нет возможности отформатировать отображаемый шрифт. Зато это можно сделать у элементов ActiveX (Разработчик/ Элементы управления/ Вставить). Правда, для работы с этими элементами требуется писать программу на VBA.
Создаем формы в Excel
Если вам приходилось работать с таблицами из множества колонок, да еще к концу рабочего дня и в условиях дефицита времени, то, наверняка, вы случайно вводили данные в ячейку не той строки, в лучшем случае спохватывались и исправляли ошибку сразу, в худшем — ошибка выплывала позже в самый неподходящий момент. Как защитить себя от подобных ситуаций? Есть очень удобное средство — формы. Их созданию и работе с ними посвящена эта статья.
Начнем с того, что не во всех версиях Excel сразу доступна волшебная кнопка Форма. В этом случае предварительно настройте Параметры (перейти к ним можно на вкладке Файл). Здесь вы также можете сразу не найти то, что нужно добавить на ленту. Поэтому сначала измените вариант в поле Выбрать команды (в данном случае нужен вариант Все команды). Чтобы добавить найденную в списке команду Форма, нужно выбрать имя вкладки, где разместится кнопка и создать новую группу. Теперь щелкните по кнопке Добавить и проверьте, появилась ли новая команда в новой группе.
После этих манипуляций на вкладке Данные появится группа Работа с формами (это название задаете вы, когда создаете группу при настройке параметров Excel), а в ней нужная вам кнопка.
Форму нельзя создать, если шапка таблицы занимает несколько строк — это минус.
Но здесь можно «схитрить»: вставьте после настоящей шапки пустую строку, оформите заголовки строк в одну строку, для этой строки после создания формы установите нулевую высоту (Формат — Размер ячеек —Высота строки — ).
Осталось только щелкнуть на любой ячейке таблицы и на кнопке Форма. Готово, можно работать. Вы видите строку, относящуюся только к одному человеку, причем все названия граф в одной форме. Названия кнопок — настоящие подсказки для пользователя. Нужна новая строка — Добавить, не нужна существующая — Удалить, нужно перейти к какой-либо впереди — Далее, позади — Назад.
Единственной «неочевидной» является кнопка Критерии. Она позволяет включать фильтр, чтобы быстрее находить нужные строки, если их очень много. При задании критерия можно использовать такие знаки, как «*» и «?», критериев может быть несколько (но задать их нужно в пределах одного окна). Для отключения фильтра используйте кнопку Правка.
Выбор поля формы можно делать щелчком мыши или клавишей ТАВ. Добавлять новую строку в таблицу можно с помощью соответствующей кнопки или нажатием ENTER, когда заполнено последнее поле.
Конечно, использовать ли форму или работать с таблицей напрямую, решать вам. Но чтобы выбрать оптимальный способ работы, нужно попробовать разные варианты. Сведения о форме в Excel из этой статьи помогут вам это сделать.
Использование элементов управления форм на листе Excel
Примечание: Мы стараемся как можно оперативнее обеспечивать вас актуальными справочными материалами на вашем языке. Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Просим вас уделить пару секунд и сообщить, помогла ли она вам, с помощью кнопок внизу страницы. Для удобства также приводим ссылку на оригинал (на английском языке).
В Microsoft Excel есть несколько элементов управления для листов диалога, которые можно использовать для выбора элементов из списка. Примеры элементов управления: списки, поля со списком, счетчики и полосы прокрутки.
Дополнительные сведения об элементах управления форм в Excel можно найти в статье Общие сведения о формах, элементах управления форм и элементах ActiveX на листе.
Дополнительные сведения
В следующих методах показано, как использовать списки, поля со списком, счетчики и полосы прокрутки. В примерах используется один и тот же список, ссылка на ячейку и функция индекс.
Включение вкладки «Разработчик»
Чтобы использовать элементы управления формы в Excel 2010 и более поздних версиях, необходимо включить вкладку Разработчик. Для этого выполните указанные ниже действия.
Откройте вкладку Файл и выберите команду Параметры.
В левой области выберите пункт настроить ленту .
Установите флажок разработчик в разделе Основные вкладки справа, а затем нажмите кнопку ОК.
Чтобы использовать элементы управления форм в Excel 2007, необходимо включить вкладку разработчик . Для этого выполните указанные ниже действия.
Нажмите кнопку Microsoft Office, а затем — Параметры Excel.
Нажмите популярные, установите флажок Показыватьвкладку «Разработчик» на ленте и нажмите кнопку ОК.
Настройка списка, ссылки на ячейку и предметного указателя
На новом листе введите следующие элементы в диапазоне от H1: H20:
H1: роликовый Скатес
H6: Вашинг Machine
H7: Роккет Launcher
H11: — это очень привлекательные
H18: набор инструментов
H20: жесткий диск
В ячейке a1 введите следующую формулу:
= ИНДЕКС (H1: H20; G1; 0)
Пример окна списка
Чтобы добавить список в Excel 2007 и более поздних версий, откройте вкладку разработчик , нажмите кнопку Вставить в группе элементы управления , а затем в разделе элементы управления формывыберите пункт форма списка (элемент управления) .
Чтобы добавить список в Excel 2003 и более ранних версиях Excel, нажмите кнопку «список» на панели инструментов «формы». Если панель инструментов формы не отображается, в меню Вид выберите пункт панели инструментов, а затем — пункт формы.
Щелкните на листе место, где должен быть расположен левый верхний угол списка, и перетащите его в то место, где должен находиться правый нижний угол поля со списком. В этом примере создайте список, охватывающий ячейки B2: E10.
В группе элементы управления нажмите кнопку свойства.
В окне Формат объекта введите следующие данные, а затем нажмите кнопку ОК.
Чтобы задать диапазон списка, введите H1: H20 в поле диапазон ввода .
Чтобы ввести числовое значение в ячейку G1 (в зависимости от того, какой элемент выбран в списке), введите G1 в поле » связь с ячейкой».
Примечание: Формула INDEX () использует значение в ячейке G1, чтобы вернуть правильный элемент списка.
В разделе тип выделенияубедитесь, что выбран параметр один вариант.
Примечание: Параметры Multi и Extend полезны только в том случае, если вы используете процедуру Microsoft Visual Basic для приложений, чтобы возвращать значения списка. Также обратите внимание на то, что флажок объемной заливки позволяет добавить трехмерный вид в список.
Список элементов должен отображаться в списке. Чтобы использовать список, щелкните любую ячейку, чтобы не выделять список. Если щелкнуть элемент в списке, ячейка G1 будет обновлена числом, указывающим позицию выбранного в списке элемента. Формула INDEX в ячейке a1 использует этот номер для отображения имени элемента.
Пример поля со списком
Чтобы добавить поле со списком в Excel 2007 и более поздних версиях, откройте вкладку разработчик , нажмите кнопку Вставить, а затем в разделе элементы управления формыщелкните поле со списком .
Чтобы добавить поле со списком в Excel 2003 и более ранних версиях Excel, нажмите кнопку раскрывающегося списка на панели инструментов формы.
Щелкните на листе место, где должен быть расположен левый верхний угол поля со списком, а затем перетащите поле со списком в то место, где должен находиться правый нижний угол окна списка. В этом примере создайте поле со списком, которое охватывает ячейки B2: E2.
Щелкните поле со списком правой кнопкой мыши и выберите пункт Формат элемента управления.
Введите указанные ниже данные и нажмите кнопку ОК.
Чтобы задать диапазон списка, введите H1: H20 в поле диапазон ввода .
Чтобы ввести числовое значение в ячейку G1 (в зависимости от того, какой элемент выбран в списке), введите G1 в поле » связь с ячейкой».
Примечание: Формула INDEX использует значение в ячейке G1, чтобы вернуть правильный элемент списка.
В поле строки раскрывающегося списка введите 10. Этот параметр определяет, сколько элементов будет отображаться, прежде чем использовать полосу прокрутки для просмотра остальных элементов.
Примечание: Флажок объемной заливки необязателен. Он добавляет трехмерный вид в раскрывающийся список или поле со списком.
В раскрывающемся списке или поле со списком должен быть отображен список элементов. Чтобы использовать раскрывающийся список или поле со списком, щелкните любую ячейку, чтобы выделить объект. Если щелкнуть элемент в раскрывающемся списке или поле со списком, ячейка G1 будет обновлена числом, указывающим позицию в списке выбранного элемента. Формула INDEX в ячейке a1 использует этот номер для отображения имени элемента.
Пример кнопки «Счетчик»
Чтобы добавить счетчик в Excel 2007 и более поздних версий, откройте вкладку разработчик , нажмите кнопку Вставить, а затем в разделе элементы управления формынажмите кнопку Счетчик .
Чтобы добавить счетчик в Excel 2003 и более ранних версиях Excel, нажмите кнопку «Счетчик» на панели инструментов «формы».
Щелкните на листе место, где должен быть расположен левый верхний угол счетчика, а затем перетащите счетчик в то место, где должен находиться правый нижний угол кнопки счетчика. В этом примере создайте прокрутку кнопки, которая охватывает ячейки B2: B3.
Щелкните правой кнопкой мыши кнопку счетчик и выберите пункт Формат элемента управления.
Введите указанные ниже данные и нажмите кнопку ОК.
В поле Текущее значение введите 1.
Это значение инициализирует счетчик, чтобы формула указателя указывала на первый элемент в списке.
В поле минимальное значение введите 1.
Это значение ограничивает верхнюю часть счетчика на первый элемент в списке.
В поле Максимальное значение введите 20.
Этот номер задает максимальное количество элементов в списке.
В поле Шаг изменения введите 1.
Это значение определяет степень приращения текущего значения с помощью элемента управления «Счетчик».
Чтобы ввести числовое значение в ячейку G1 (в зависимости от того, какой элемент выбран в списке), введите G1 в поле «связь с ячейкой».
Щелкните любую ячейку, чтобы кнопка счетчика не выделена. Если щелкнуть элемент управления вверх или вниз на кнопке счетчик, ячейка G1 будет обновлена числом, которое указывает текущее значение счетчика, а также инкрементное изменение счетчика. Затем этот номер обновляет формулу INDEX в ячейке a1 для отображения следующего или предыдущего элемента.
Значение «Счетчик» не изменится, если текущее значение равно 1, а затем щелкнуть элемент управления вниз или, если текущее значение равно 20, а затем щелкнуть элемент управления вверх.
Пример полосы прокрутки
Чтобы добавить полосу прокрутки в Excel 2007 и более поздних версиях, откройте вкладку разработчик , нажмите кнопку Вставитьи выберите элемент полоса прокрутки в разделе элементы управления формы.
Чтобы добавить полосу прокрутки в Excel 2003 и более ранних версиях Excel, нажмите кнопку «вертикальная полоса прокрутки» на панели инструментов «формы».
Щелкните на листе место, где должен находиться левый верхний угол полосы прокрутки, а затем перетащите полосу прокрутки в то место, где должен находиться правый нижний угол полосы прокрутки. В этом примере создается полоса прокрутки, которая охватывает ячейки B2: B6 в высоту и является примерно одной четвертой ширины столбца.
Щелкните полосу прокрутки правой кнопкой мыши и выберите пункт Формат элемента управления.
Введите указанные ниже данные и нажмите кнопку ОК.
В поле Текущее значение введите 1.
Это значение инициализирует полосу прокрутки таким образом, чтобы формула указателя указывала на первый элемент в списке.
В поле минимальное значение введите 1.
Это значение ограничивает верхнюю часть полосы прокрутки до первого элемента в списке.
В поле Максимальное значение введите 20. Этот номер задает максимальное количество элементов в списке.
В поле Шаг изменения введите 1.
Это значение определяет, сколько чисел элемент управления «полоса прокрутки» увеличит текущее значение.
В диалоговом окне изменение страницы введите 5. Это значение определяет, сколько текущее значение будет изменяться при щелчке внутри полосы прокрутки на любой из сторон бегунка.
Чтобы ввести числовое значение в ячейку G1 (в зависимости от того, какой элемент выбран в списке), введите G1 в поле » связь с ячейкой».
Примечание: Флажок объемной заливки необязателен. Она добавляет трехмерный вид к полосе прокрутки.
Щелкните любую ячейку так, чтобы полоса прокрутки не выделена. Если щелкнуть элемент управления вверх или вниз на полосе прокрутки, ячейка G1 будет обновлена до числа, указывающего текущее значение полосы прокрутки плюс или минус добавочное изменение полосы прокрутки. Этот номер используется в формуле указателя в ячейке a1 для отображения элемента рядом с текущим элементом или перед ним. Вы также можете перетаскивать ползунок прокрутки, чтобы изменить значение или щелкнуть полосу прокрутки на обеих сторонах ползунка, чтобы увеличить его на 5 (значение изменения страницы). Полоса прокрутки не изменится, если текущее значение равно 1, и вы щелкните элемент управления вниз или, если текущее значение равно 20, а затем щелкните элемент управления вверх.
Форма данных
Данная функция является частью надстройки MulTEx
- Описание, установка, удаление и обновление
- Полный список команд и функций MulTEx
- Часто задаваемые вопросы по MulTEx
Скачать MulTEx
Вызов команды:
MulTEx -группа Ячейки/Диапазоны —Диапазоны —Форма данных
С помощью формы данных удобно просматривать, искать и изменять данные в таблицах, добавлять, удалять и копировать строки с переносом всех данных, только значений или только формул.
ВВОД ДАННЫХ
На вкладке Ввод данных размещены элементы для основных операций с таблицей: навигация по записям, просмотр и изменений записей, копирование, добавление, изменение и удаление строк.
Навигация
Перемещаться по записям можно изменяя ползунок полосы прокрутки(колесиком мыши или перемещением горизонтального ползунка прокрутки). Чуть ниже отображается информация о том, сколько записей в таблице и какая запись сейчас просматривается.
Там же раcположено окно быстрого перехода к записи с указанным номером. Если указать число меньше или равное 1, то будет отображена первая запись. Если указать число, большее или равное количеству всех записей, то будет отображена последняя запись.
Форма не пропускает скрытые строки и столбцы при просмотре и поиске, но помечает такие ячейки серым фоном:
Работа со скрытыми ячейками ничем не отличается от работы с обычными ячейками.
Для поиска строк с конкретными значениями или по иным условиям необходимо воcпользоваться вкладкой Поиск.
Если внутри таблицы есть объединенные ячейки это не вызовет ошибки, но перемещение может происходить некорректно(в некоторых случаях объединенная ячейка будет считаться как одна строка).
Работа со строками
Значения каждой строки отображаются в полях. Левее каждого поля отображается заголовок таблицы, чтобы можно было точно понять к какому столбцу таблицы относится значение. Изменяя значения в полях можно изменить значения ячеек. Для этого необходимо изменить значения в нужных полях и нажать Изменить строку. Если в ячейке поля на листе создан выпадающий список значений — в форме он будет продублирован и можно будет выбрать значения из этого списка или ввести значение вручную.
Помимо этого есть и другие инструменты работы со строками и полями:
- Отменить изменения — если изменения в полях необходимо отменить до записи в ячейки, то надо нажать кнопку Отменить изменения. Эта кнопка отменяет изменения только в полях формы и никак не влияет на значения ячеек таблицы. Сразу после изменения в ячейках эта кнопка становится недоступной.
- Изменить строку — записывает в ячейки значения, заданные в полях. Записываются значения только измененных полей(если значение в поле отличается от первоначального значения в ячейке). Если изменить значение ячейки не удалось, то будет выдано сообщение:
Поля, данные которых не удалось изменить, будут окрашены красным:
Изменение поля будет отменено и в нем будет записано первоначальное значение. - Добавить строку — добавляет новую пустую строку либо после текущей строки, либо в конец таблицы. Это регулируется настройками на вкладке Настройки.
- Удалить строку — удаляет текущую строку. Это действие невозможно отменить.
- Дублировать строку:
-
после нажатия кнопки Дублировать добавляет новую строку на основании текущей. Новая строка вставляется либо после текущей, либо в конец таблицы. Это регулируется настройками на вкладке Настройки
- как есть — текущая строка копируется полностью, включая формулы, форматы и связи. Действие полностью совпадает с обычным копированием строки стандартными средствами.
- только значения — текущая строка копируется, но вставляется только форматы и значения. Все формулы, которые есть в текущей строке заменяются результатом их вычислений.
- только формулы — текущая строка копируется, но вставляется только форматы и формулы. Все ячейки, не содержащие формул очищаются.
- значения и формулы — текущая строка копируется, но вставляется только значения и формулы. Форматы не переносятся.
Правее каждого поля есть дополнительные элементы, в которых отображается информация о наличии формулы в ячейке, присутствии в тексте невидимых символов и текущем типе данных поля.
Индикатор формул
-
Если в ячейке содержится формула, то правее поля с данными этой ячейки появится значок . С помощью этого индикатора сразу можно понять в каких столбцах и ячейках содержатся формулы. Если щелкнуть по значку индикатора левой кнопкой мыши, то появится окно, в котором будет отображена формула:
Формула отображается в точности так же, как она выглядит в ячейке(если в ячейке записана формула массива — сама формула будет отображена в фигурных скобках <=A1:A10*B1B10>, а в заголовке появится текст Формула массива ). В основном поле всегда отображается значение(результат вычисления формулы) и если изменить данные и нажать Изменить строку, то формула будет «затерта» новым значением.
Примечание: Окно с формулой можно закрыть либо крестиком, либо нажатием кнопки Esc . Пока открыто любое окно с формулой ни Excel ни форма не доступны. Следовательно, чтобы продолжить работать с формой необходимо закрыть активное окно с формулой.
Индикатор наличия непечатных символов в ячейке
Тип данных
-
Справа от каждого поля есть выпадающий список, с помощью которого можно выбрать тип данных в ячейке. Изменение типа данных не изменяет значения в ячейках, а влияет исключительно на отображение данных в полях формы. Однако, значения в этих полях могут влиять на типы данных при изменении строки кнопкой Изменить строку. Если в ячейке дата записана как текст и в списке выбран тип данных Дата и значение в поле будет изменено, то при нажатии кнопки Изменить строку форма попробует преобразовать данные в поле в дату и записать в ячейку уже не текст, а реальную дату. С числами и временем точно также(читать подробнее про то, как Excel видит данные). Но если в качестве типа данных будет выбрано значение Авто, то форма не будет пытаться изменять тип данных в ячейках.
Примечание: Хоть по умолчанию программа сама пытается определить тип данных — в силу особенностей работы с датой и временем в Excel они могут определяться не корректно(например, может быть отображено число вместо даты или времени). Тогда следует назначить нужный тип данных принудительно. Так же, если в ячейке установлен процентный формат данных(или различные денежные и пользовательские форматы) — они не будут применены. Число, дата или время будут отображены так, как их видит Excel.
ПОИСК
На этой вкладке можно быстро найти нужные записи, задав условия поиска:
В выпадающих списках для каждого поля выбирается метод сравнения: Равно, Не равно, Содержит, Не содержит, Начинается с, Не начинается с, Заканчивается на, Не заканчивается на, Больше, Меньше, Больше или равно, Меньше или равно . В поле указывается значение, которое необходимо найти в ячейке этого столбца. Если метод не выбран, то поле игнорируются. Если выбран метод сравнения Содержит или Не содержит , то значение для поиска может содержать специальные символы подстановки: звёздочка(*) и вопросительный знак(?).
После нажатия кнопки Найти будут отобраны строки, отвечающие условиями поиска. Если хоть одна строка отвечает условиям поиска — будет активирована вкладка Ввод данных и выделена первая найденная запись. Перемещение ползунка полосы прокрутки будет выделять последовательно все найденные строки(только те, которые подходят под условия поиска). Общее количество найденных записей отображается внизу формы.
НАСТРОЙКИ
Настройка диапазона таблицы
-
Диапазон данных
отвечает за определение границ таблицы, данные которой просматриваются через форму
- Определять автоматически — если установить, программа сама попытается определить начало и окончание таблицы, которую просматривать. Удобно использовать, если таблицы построены правильно, начинаются с ячейки A1 и заголовок состоит только из одной строки.
- Указать вручную — диапазон данных указывается вручную из любого доступного листа или книги. Может потребоваться, если на листе несколько таблиц и просматривать надо только конкретную.
Номер строки заголовков(в диапазоне данных): указывается номер строки в диапазоне данных, в которой расположены заголовки. Как правило это строка №1, но при автоматическом определении диапазона данных строка заголовка может быть и ниже. Например, если шапка таблицы состоит из нескольких строк и в качестве заголовков необходимо использовать 2-ю строку.
При добавлении строк
-
настройка добавления строк на основной вкладке кнопкой Добавить
При дублировании строк
-
настройка добавления строк на основной вкладке кнопкой Дублировать
Не выделять строки таблицы при перемещении — по умолчанию при изменении строки просмотра просматриваемая строка выделяется на листе. Но если необходимо сравнить данные с другой таблицей(расположенной на другом листе или книге), то выделение постоянно будет «перекидывать» в ту таблицу, которая просматривается через форму. Чтобы можно было одновременно перемещаться по записям и просматривать другие листы, галочку с пункта необходимо снять.
Использование метода Application.InputBox в VBA Excel, его синтаксис и параметры. Значения, возвращаемые диалогом Application.InputBox. Примеры использования.
Метод Application.InputBox предназначен в VBA Excel для вывода диалогового окна с более расширенными возможностями, чем диалоговое окно, отображаемое функцией InputBox. Главным преимуществом метода Application.InputBox является возможность автоматической записи в поле ввода диапазона ячеек (в том числе одной ячейки) путем его выделения на рабочем листе книги Excel и возвращения различных данных, связанных с ним, а также проверка соответствия возвращаемого значения заданному типу данных.
Синтаксис метода
Application.InputBox ( Prompt , Title , Default , Left , Top , HelpFile , HelpContextID , Type )
Обязательным параметром метода Application.InputBox является Prompt, если значения остальных параметров явно не указаны, используются их значения по умолчанию.
Обратите внимание на то, что
- оператор InputBox вызывает функцию InputBox, а
- оператор Application.InputBox вызывает метод InputBox.
Чтобы не было путаницы, метод InputBox пишут как метод Application.InputBox, в том числе и в справке разработчика.
Параметры метода
Параметр | Описание | Значение по умолчанию |
---|---|---|
Prompt | Обязательный параметр. Выражение типа String, отображаемое в диалоговом окне в виде сообщения, приглашающего ввести данные в поле. Разделить на строки сообщение можно с помощью константы vbNewLine. | Нет |
Title | Необязательный параметр. Выражение типа Variant, отображаемое в заголовке диалогового окна. | Слово «Ввод» |
Default | Необязательный параметр. Выражение типа Variant, отображаемое в поле ввода при открытии диалога. | Пустая строка |
Left | Необязательный параметр. Выражение типа Variant, определяющее в пунктах расстояние от левого края экрана до левого края диалогового окна (координата X).* | Горизонтальное выравнивание по центру** |
Top | Необязательный параметр. Выражение типа Variant, определяющее в пунктах расстояние от верхнего края экрана до верхнего края диалогового окна (координата Y).* | Приблизительно равно 1/3 высоты экрана*** |
HelpFile | Необязательный параметр. Выражение типа Variant, указывающее имя файла справки для этого поля ввода. | Нет**** |
HelpContextID | Необязательный параметр. Выражение типа Variant, указывающее идентификатор контекста в справочном разделе файла справки. | Нет**** |
Type | Необязательный параметр. Выражение типа Variant, указывающее тип возвращаемых данных. | 2 (текст) |
* Параметры Left и Top учитываются при отображении диалогового окна методом Application.InputBox в Excel 2003, а в последующих версиях Excel 2007-2016 уже не работают.
**При первом запуске горизонтальное выравнивание устанавливается по центру, при последующих — форма отобразиться в том месте, где ее последний раз закрыли.
***При первом запуске вертикальное расположение приблизительно равно 1/3 высоты экрана, при последующих — форма отобразиться в том месте, где ее последний раз закрыли.
**** Если будут указаны параметры HelpFile и HelpContextID, в диалоговом окне появится кнопка справки.
Возвращаемые значения
Диалоговое окно, созданное методом Application.InputBox, возвращает значение типа Variant и проверяет соответствие возвращаемого значения типу данных, заданному параметром Type. Напомню, что тип значений Variant является универсальным контейнером для значений других типов, а в нашем случае для возвращаемых в зависимости от значения параметра Type.
Аргументы параметра Type и соответствующие им типы возвращаемых значений:
Type | Возвращаемое значение |
---|---|
0 | Формула |
1 | Число |
2 | Текст (string) |
4 | Логическое значение (True или False) |
8 | Ссылки на ячейки в виде объекта Range |
16 | Значение ошибки (например, #н/д) |
64 | Массив значений |
Примеры
В отличие от других встроенных диалоговых окон VBA Excel, Application.InputBox при запуске процедуры непосредственно из редактора, открывается прямо в редакторе, и, чтобы выбрать диапазон ячеек на рабочем листе, нужно по вкладке браузера перейти в книгу Excel. Поэтому для тестирования диалога Application.InputBox удобнее создать кнопку, перетащив ее на вкладке «Разработчик» из «Элементов управления формы» (не из «Элементов ActiveX») и в окошке «Назначить макрос объекту» выбрать имя тестируемой процедуры. Чтобы можно было выбрать процедуру сразу при создании кнопки, она должна быть уже вставлена в стандартный программный модуль. Можно назначить процедуру кнопке позже, кликнув по ней правой кнопкой мыши и выбрав в контекстном меню «Назначить макрос…».
Пример 1 — параметры по умолчанию
Тестируем метод Application.InputBox с необязательными параметрами по умолчанию. Аргумент параметра Type по умолчанию равен 2.
Sub Test1() Dim a As Variant a = Application.InputBox(«Выберите ячейку:») MsgBox a End Sub |
Скопируйте код и вставьте в стандартный модуль, для удобства создайте на рабочем листе кнопку из панели «Элементы управления формы» и назначьте ей макрос «Test1». На рабочем листе заполните некоторые ячейки разными данными, нажимайте кнопку, выбирайте ячейки и смотрите возвращаемые значения.
Клик по кнопке «OK» диалога Application.InputBox в этом примере возвращает содержимое выбранной ячейки (или левой верхней ячейки выбранного диапазона), преобразованное в текстовый формат. У дат в текстовый формат преобразуется их числовое представление.
Клик по кнопке «Отмена» или по закрывающему крестику возвращает строку «False».
Пример 2 — возвращение объекта Range
В этом примере тестируем метод Application.InputBox с обязательным параметром Prompt, разделенным на две строки, параметром Title и значением параметра Type равным 8. Так как в данном случае диалог в качестве значения возвращает объект Range, он присваивается переменной с помощью оператора Set. Для этого примера создайте новую кнопку из панели «Элементы управления формы» и назначьте ей макрос «Test2».
Sub Test2() Dim a As Variant Set a = Application.InputBox(«Пожалуйста,» _ & vbNewLine & «выберите диапазон:», _ «Наш диалог», , , , , , 8) MsgBox a.Cells(1) MsgBox a.Address End Sub |
В первом информационном окне MsgBox выводится значение первой ячейки выбранного диапазона, во втором — адрес диапазона.
Напомню, что обращаться к ячейке в переменной диапазона «a» можно не только по порядковому номеру (индексу) самой ячейки, но и по индексу строки и столбца, на пересечении которых она находится. Например, оба выражения
указывают на первую ячейку диапазона. А в объектной переменной «a» с присвоенным диапазоном размерностью 3х3 оба выражения
указывают на центральную ячейку диапазона.
При использовании метода Application.InputBox происходит проверка введенных данных: попробуйте понажимать кнопку «OK» с пустым полем ввода и с любым введенным текстом (кроме абсолютного адреса). Реакция в этих случаях разная, но понятная.
Есть и отрицательные моменты: при использовании в диалоге Application.InputBox параметра Type со значением равным 8, нажатие кнопок «Отмена» и закрывающего крестика вызывают ошибку Type mismatch (Несоответствие типов). Попробуйте нажать кнопку «Отмена» или закрыть форму диалога.
Решить эту проблему можно, добавив обработчик ошибок. Скопируйте в стандартный модуль код следующей процедуры, создайте еще одну кнопку и назначьте ей макрос «Test3».
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Sub Test3() Dim a As Variant ‘При возникновении ошибки ‘перейти к метке «Inform» On Error GoTo Inform Set a = Application.InputBox(«Пожалуйста,» _ & vbNewLine & «Выберите диапазон:», _ «Наш диалог», , , , , , 8) MsgBox a.Cells(1) MsgBox a.Address ‘Выйти из процедуры, ‘если не произошла ошибка Exit Sub ‘Метка Inform: ‘Вывести информационное окно с ‘сообщением об ошибке MsgBox «Диалог закрыт или нажата кнопка « _ & Chr(34) & «Отмена» & Chr(34) & «!» End Sub |
Попробуйте теперь нажать кнопку «Отмена» или закрыть форму диалога крестиком.
Пример 3 — возвращение массива
Скопируйте в стандартный модуль код процедуры ниже, создайте четвертую кнопку и назначьте ей макрос «Test4». В этой процедуре указан только аргумент параметра Type равным 64, остальные необязательные параметры оставлены по умолчанию.
Sub Test4() Dim a As Variant a = Application.InputBox(«Выберите диапазон:», , , , , , , 64) MsgBox a(3, 3) End Sub |
Откройте диалоговую форму, нажав четвертую кнопку, и выберите диапазон размерностью не менее 3х3. Нажмите «OK»: информационное сообщение выведет значение соответствующего элемента массива «a», в нашем случае — «a(3, 3)». Если вы выберите диапазон по одному из измерений меньше 3, тогда строка «MsgBox a(3, 3)» вызовет ошибку, так как указанный элемент выходит за границы массива. Эта же строка по этой же причине вызовет ошибку при нажатии кнопки «Отмена» и при закрытии диалога крестиком. Если закомментировать строку «MsgBox a(3, 3)», то закрываться диалог будет без ошибок и при нажатии кнопки «Отмена», и при закрытии диалога крестиком.
Чтобы не попасть за границу массива используйте функцию UBound для определения наибольшего доступного индекса по каждому из двух измерений, например, вот так:
Sub Test5() Dim a As Variant a = Application.InputBox(«Выберите диапазон:», , , , , , , 64) MsgBox «Максимальный индекс 1 измерения = « & UBound(a, 1) & _ vbNewLine & «Максимальный индекс 2 измерения = « & UBound(a, 2) End Sub |
только присваивайте значения выражений «UBound(a, 1)» и «UBound(a, 2)» числовым переменным. А этот код используйте для ознакомления с работой функции UBound и ее тестирования.
В этой процедуре ошибка выдается при выборе одной ячейки или диапазона в одной строке, очевидно, Excel воспринимает его как одномерный массив. Хотя при выборе диапазона в одном столбце, по крайней мере в Excel 2016, все проходит гладко и вторая строка информационного сообщения отображается как «Максимальный индекс 2 измерения = 1».
Ошибка выдается и при нажатии кнопки «Отмена», и при закрытии диалога крестиком, так как переменная «а» в этом случае еще не является массивом, а мы пытаемся использовать ее как аргумент для функции массива, что и вызывает ошибку.
Пример 4 — возвращение формулы
Возвращение формулы рассмотрим на следующем примере:
Sub Test6() Dim a As Variant a = Application.InputBox(«Создайте формулу:», , , , , , , 0) Cells(1, 1) = a End Sub |
На активном листе Excel заполните некоторые ячейки числами и запустите процедуру на выполнение. После отображения диалога Application.InputBox выбирайте по одной ячейке с числами, вставляя между ними математические операторы. После нажатия на кнопку «OK» формула запишется в первую ячейку активного рабочего листа «Cells(1, 1)» (в текст формулы ее не выбирайте, чтобы не возникла циклическая ссылка). При нажатии на кнопку «Отмена» и при закрытии диалога крестиком в эту ячейку запишется слово «Ложь».
Можно записывать не только математические формулы, но и объединять содержимое ячеек с помощью оператора «&» и многое другое. Только не понятно, для чего это вообще нужно, как, впрочем, и возврат логических, числовых значений и значений ошибки. Вы можете протестировать их возврат с помощью процедуры «Test6», заменив в ней параметр Type метода Application.InputBox соответствующим для возвращения логических, числовых значений и значений ошибки.
Нажмите вкладку, чтобы перейти от поля к полю. Выберите Новый, чтобы добавить запись на лист и очистить поля для второй записи.
Добавьте вторую запись на лист:
- StudentID : SA267-211
- Фамилия : Уильямс
- Начальная буква J.
- Возраст : 19
- Программа : Наука
Выберите Новый, когда вы закончите добавлять запись.
При вводе похожих данных, таких как идентификационные номера учащихся (отличаются только цифры после тире), используйте копирование и вставку, чтобы ускорить ввод данных.
Для того, чтобы добавить оставшиеся записи в обучающую базу данных, используйте форму для ввода данных , показанных на изображении ниже , в клетки А4 до E11 .
Используйте инструменты данных формы
По мере добавления большего количества записей на лист, важно поддерживать целостность данных. Поддерживайте актуальность и актуальность данных, исправляя ошибки данных, обновляя записи, удаляя устаревшие записи и удаляя дубликаты записей.
Форма ввода данных содержит несколько инструментов, которые облегчают поиск, исправление и удаление записей из базы данных. Эти инструменты находятся в правой части формы и включают в себя:
- Найти Пред. И Найти След . Прокрутите вперед и назад по листу одну запись за раз.
- Удалить : удалить записи с листа.
- Восстановление : отменить изменения в записи. Восстановление работает, когда запись отображается в форме. При обращении к другой записи или закрытии формы Восстановление становится неактивным.
- Критерии : Поиск в таблице для записей на основе определенных критериев, таких как имя, возраст или программа.
Поиск записей с использованием одного имени поля
Ниже описано, как использовать форму ввода данных для поиска в базе данных записей с использованием одного заголовка столбца, например «Фамилия», «Возраст» или «Программа».
-
В форме ввода данных выберите Критерии .
Когда вы выбираете Критерии , поля формы удаляются из формы; записи не удаляются с листа.
-
Поместите курсор в текстовое поле « Программа» и введите « Arts», чтобы найти всех учащихся, зачисленных в программу «Arts».
-
Выберите Найти следующий
-
Данные для первой записи, соответствующей критериям поиска, появятся в форме.
Чтобы внести изменения в запись, удалите существующий текст и введите правильные данные.
-
Выберите « Найти далее», чтобы отобразить дополнительные записи, соответствующие критериям поиска.
Поиск записей с использованием нескольких имен полей
Форма также может быть использована для поиска записей по нескольким критериям. Например, для поиска студентов, которым исполнилось 18 лет и которые зачислены в программу искусств. В форме отображаются только записи, соответствующие обоим критериям.
-
Выберите Критерии .
-
Поместите курсор в текстовое поле Возраст и введите 18 .
-
Поместите курсор в текстовое поле Program и введите Arts .
-
Выберите Find Next .
-
Данные для первой записи, соответствующей критериям поиска, появятся в форме.
-
Выберите « Найти далее», чтобы отобразить дополнительные записи, соответствующие критериям поиска.