В наших статьях мы подробно рассмотрим практические примеры, связанные с использованием программирования, которое заложено в Microsoft Office. Оно основывается на языке VBA, название которого в полном виде выглядит так Visual Basic for Application. Учитывая, что все рассматриваемые разработки будут использовать VBA, наша первоочередная задача познакомиться сданным языком.
Примеры этой темы предназначены для категории читателей, которая либо с VBA не встречалась, либо это знакомство было весьма поверхностным. Все последующие главы будут полностью посвящены рассмотрению практических офисных задач, и, таким образом, эта статья является для них базовой.
Рис. 1.4. Закладка Основные окна Параметры Excel
Предполагается, что читатель хотя бы в незначительной степени знаком с чисто пользовательскими возможностями Microsoft Excel прошлых версий. Важно отметить, что наибольший эффект будет наблюдаться, если запустить Microsoft Excel параллельно с чтением наших статей и выполнять все описанные разработки на компьютере. При рассмотрении примеров на протяжении всего изучения нам понадобятся элементы ActiveX, которые по-другому можно назвать Элементы управления.
И в качестве первого шага необходимо в окне, показанном на рис. 1.2, щелкнуть кнопкой Параметры Excel. В результате перед вами откроется новое окно с набором закладок. Здесь на закладке Основные следует сделать установку для отображения на ленте вкладки Разработчик, что реализуется с помощью флажка Показывать вкладку «Разработчик» на ленте (рис. 1.4).
В Microsoft Excel элементы ActiveX можно размещать и на пользовательских формах, и на самих рабочих листах (на верхнем графическом слое, где располагаются рисунки, диаграммы и другие объекты). Часто вставка нескольких элементов ActiveX значительно упрощает работу с данными на рабочем листе. Все элементы управления делятся на две группы: элементы управления формами и элементы управления ActiveX. Оба набора элементов управления имеют свои преимущества и недостатки. В общем случае элементы управления формами проще в применении, но зато элементы ActiveX являются более гибкими. В наших примерах мы будем использовать исключительно элементы ActiveX.
В результате окно приложения Microsoft Excel дополнится новыми пиктограммами, которые нам потребуются в дальнейшем (рис. 1.5). Среди тех, которыми мы будем активно пользоваться на протяжении всей книги, отметим пиктограмму с надписью Вставить. С се помощью на рабочем листе можно размещать элементы ActiveX, которые существенно дополняют функциональность книг Microsoft Excel. Они типичны для различных приложений Windows (речь идет о кнопках, полосах прокрутки, текстовых окнах, переключателях, списках и т. д.). Кроме пиктограммы Вставить мы будем активно пользоваться и другими присутствующими на ленте Режим конструктора, Свойства, Visual Basic и Макросы.
Перед тем как начать какие-либо действия с тем или иным элементом ActiveX, его необходимо поместить на рабочий лист. Это легко выполнить, если воспользоваться пиктограммой Вставить. На рис. 1.6 показано размещение на рабочем листе элемента ActiveX Кнопка.
Рис. 1.5. Отображение вкладки Разработчик на ленте
При наведении курсора мыши на пиктограмму элемента ActiveX Кнопка в качестве подсказки появляется еще один вариант его названия: элемент управления «Кнопка». Далее по тексту мы будем использовать оба варианта названия — элементы ActiveX и элементы управления.
Для того чтобы перенести элемент ActiveX на рабочий лист, необходимо щелкнуть на панели инструментов на его пиктограмме левой кнопкой мыши и далее переместить курсор мыши на рабочий лист. Курсор мыши примет вид, аналогичный математическому знаку «плюс». Теперь следует нажать левую кнопку мыши и, не отпуская ее, переместить мышь вправо и вниз, а затем отпустить ее левую кнопку. В результате на рабочем листе мы увидим изображение появившегося элемента ActiveX, окруженного маркерами (рис. 1.6).
Рис. 1.6. Размещение кнопки на рабочем листе в режиме конструктора
После размещения элемента ActiveX на рабочем листе активизируется кнопка Режим конструктора, которая позволяет пользователю далее работать в одном из двух режимов. Один из них так и называется режим конструктора. В этом случае можно работать с элементами ActiveX для создания необходимого интерфейса на рабочем листе. Также в этом режиме пользователю предоставляется возможность создавать программные разработки.
Появление маркеров (см. рис. 1.6), окружающих элемент ActiveX, как раз и является признаком того, что мы работаем в режиме конструктора (кнопка Режим конструктора в этом случае выглядит нажатой). На начальном этапе создания разработки работа в режиме конструктора сводится к размещению элементов управления на рабочем листе и изменению их свойств. Далее производится программирование различных событий, связанных с элементами управления, листами и книгой в целом.
Важно отметить, что после размещения элемента ActiveX на рабочем листе, в нашей книге (можно даже сказать — на данном листе книги) появился новый элемент, который фактически представляет собой «программный» объект. Аналогичным образом на рабочих листах книг Excel можно размещать и другие элементы ActiveX.
Рис. 1.7. Вид рабочего листа при выходе из режима конструктора
Другой режим можно назвать режимом выполнения или режимом работы (какого-то однозначно принятого названия не существует). Чтобы перейти в этот режим (то есть выйти из режима конструктора), необходимо отжать кнопку Режим конструктора (рис. 1.7). После этого в нашем случае можно просто пощелкать кнопкой, которую мы создали на рабочем листе (функциональные действия, которые можно обеспечить в этом случае, мы рассмотрим в дальнейшем). Далее опять вернемся в режим конструктора. С помощью маркеров, окружающих кнопку, можно легко изменить се размеры. Также с помощью мыши можно перемещать созданную кнопку по рабочему листу.
Программное включение режима конструктора для книги Excel. Выключение режима конструктора из кода VBA. Метод Workbook.ToggleFormsDesign.
Включение режима конструктора
Программное включение режима конструктора из кода VBA осуществляется с помощью метода Workbook.ToggleFormsDesign.
Синтаксис
Синтаксис метода ToggleFormsDesign:
Expression.ToggleFormsDesign |
Expression — выражение (переменная), возвращающее объект Workbook.
Пример
Sub Primer1() ThisWorkbook.ToggleFormsDesign End Sub |
В результате работы этого кода кнопка «Режим конструктора» на ленте инструментов вкладки «Разработчик» книги Excel становится включенной (нажатой):
Выключение режима конструктора
Отдельного метода для программного выключения режима конструктора в VBA Excel нет. Но есть возможность отключить кнопку «Режим конструктора» текущей рабочей книги (ThisWorkbook) по ее идентификатору:
Sub Primer2() Application.CommandBars.FindControl(ID:=1605).Reset End Sub |
Этот код переводит кнопку «Режим конструктора» в исходное (выключенное) состояние. Протестировано в Excel 2016.
Microsoft Excel
трюки • приёмы • решения
Режим конструктора и элементы ActiveX в VBA Excel
В наших статьях мы подробно рассмотрим практические примеры, связанные с использованием программирования, которое заложено в Microsoft Office. Оно основывается на языке VBA, название которого в полном виде выглядит так Visual Basic for Application. Учитывая, что все рассматриваемые разработки будут использовать VBA, наша первоочередная задача познакомиться сданным языком.
Примеры этой темы предназначены для категории читателей, которая либо с VBA не встречалась, либо это знакомство было весьма поверхностным. Все последующие главы будут полностью посвящены рассмотрению практических офисных задач, и, таким образом, эта статья является для них базовой.
Рис. 1.4. Закладка Основные окна Параметры Excel
Предполагается, что читатель хотя бы в незначительной степени знаком с чисто пользовательскими возможностями Microsoft Excel прошлых версий. Важно отметить, что наибольший эффект будет наблюдаться, если запустить Microsoft Excel параллельно с чтением наших статей и выполнять все описанные разработки на компьютере. При рассмотрении примеров на протяжении всего изучения нам понадобятся элементы ActiveX, которые по-другому можно назвать Элементы управления.
И в качестве первого шага необходимо в окне, показанном на рис. 1.2, щелкнуть кнопкой Параметры Excel. В результате перед вами откроется новое окно с набором закладок. Здесь на закладке Основные следует сделать установку для отображения на ленте вкладки Разработчик, что реализуется с помощью флажка Показывать вкладку «Разработчик» на ленте (рис. 1.4).
В Microsoft Excel элементы ActiveX можно размещать и на пользовательских формах, и на самих рабочих листах (на верхнем графическом слое, где располагаются рисунки, диаграммы и другие объекты). Часто вставка нескольких элементов ActiveX значительно упрощает работу с данными на рабочем листе. Все элементы управления делятся на две группы: элементы управления формами и элементы управления ActiveX. Оба набора элементов управления имеют свои преимущества и недостатки. В общем случае элементы управления формами проще в применении, но зато элементы ActiveX являются более гибкими. В наших примерах мы будем использовать исключительно элементы ActiveX.
В результате окно приложения Microsoft Excel дополнится новыми пиктограммами, которые нам потребуются в дальнейшем (рис. 1.5). Среди тех, которыми мы будем активно пользоваться на протяжении всей книги, отметим пиктограмму с надписью Вставить. С се помощью на рабочем листе можно размещать элементы ActiveX, которые существенно дополняют функциональность книг Microsoft Excel. Они типичны для различных приложений Windows (речь идет о кнопках, полосах прокрутки, текстовых окнах, переключателях, списках и т. д.). Кроме пиктограммы Вставить мы будем активно пользоваться и другими присутствующими на ленте Режим конструктора, Свойства, Visual Basic и Макросы.
Перед тем как начать какие-либо действия с тем или иным элементом ActiveX, его необходимо поместить на рабочий лист. Это легко выполнить, если воспользоваться пиктограммой Вставить. На рис. 1.6 показано размещение на рабочем листе элемента ActiveX Кнопка.
Рис. 1.5. Отображение вкладки Разработчик на ленте
При наведении курсора мыши на пиктограмму элемента ActiveX Кнопка в качестве подсказки появляется еще один вариант его названия: элемент управления «Кнопка». Далее по тексту мы будем использовать оба варианта названия — элементы ActiveX и элементы управления.
Для того чтобы перенести элемент ActiveX на рабочий лист, необходимо щелкнуть на панели инструментов на его пиктограмме левой кнопкой мыши и далее переместить курсор мыши на рабочий лист. Курсор мыши примет вид, аналогичный математическому знаку «плюс». Теперь следует нажать левую кнопку мыши и, не отпуская ее, переместить мышь вправо и вниз, а затем отпустить ее левую кнопку. В результате на рабочем листе мы увидим изображение появившегося элемента ActiveX, окруженного маркерами (рис. 1.6).
Рис. 1.6. Размещение кнопки на рабочем листе в режиме конструктора
После размещения элемента ActiveX на рабочем листе активизируется кнопка Режим конструктора, которая позволяет пользователю далее работать в одном из двух режимов. Один из них так и называется режим конструктора. В этом случае можно работать с элементами ActiveX для создания необходимого интерфейса на рабочем листе. Также в этом режиме пользователю предоставляется возможность создавать программные разработки.
Появление маркеров (см. рис. 1.6), окружающих элемент ActiveX, как раз и является признаком того, что мы работаем в режиме конструктора (кнопка Режим конструктора в этом случае выглядит нажатой). На начальном этапе создания разработки работа в режиме конструктора сводится к размещению элементов управления на рабочем листе и изменению их свойств. Далее производится программирование различных событий, связанных с элементами управления, листами и книгой в целом.
Важно отметить, что после размещения элемента ActiveX на рабочем листе, в нашей книге (можно даже сказать — на данном листе книги) появился новый элемент, который фактически представляет собой «программный» объект. Аналогичным образом на рабочих листах книг Excel можно размещать и другие элементы ActiveX.
Рис. 1.7. Вид рабочего листа при выходе из режима конструктора
Другой режим можно назвать режимом выполнения или режимом работы (какого-то однозначно принятого названия не существует). Чтобы перейти в этот режим (то есть выйти из режима конструктора), необходимо отжать кнопку Режим конструктора (рис. 1.7). После этого в нашем случае можно просто пощелкать кнопкой, которую мы создали на рабочем листе (функциональные действия, которые можно обеспечить в этом случае, мы рассмотрим в дальнейшем). Далее опять вернемся в режим конструктора. С помощью маркеров, окружающих кнопку, можно легко изменить се размеры. Также с помощью мыши можно перемещать созданную кнопку по рабочему листу.
Общие сведения о формах, элементах управления форм и элементах ActiveX на листе
Важно: Это средство недоступно в Office на компьютерах под управлением Windows RT. Хотите просмотреть версию Office, которую вы используете?
с помощью форм и элементов управления и объектов, которые можно добавлять в них, вы можете упростить ввод данных на листе и улучшить внешний вид листов. Вы также можете делать это самостоятельно, и вам почти или совсем не потребуется код Microsoft Visual Basic для приложений (VBA).
Форма листа и шаблон Excel — это не одно и то же. Шаблон — это предварительно отформатированный файл, который служит отправной точкой для создания книги с требуемым оформлением. Форма содержит элементы управления, такие как поля и раскрывающиеся списки, упрощающие ввод и изменение данных для использующих ваш лист. Дополнительные сведения о шаблонах, которые вы можете скачать, можно найти в разделе шаблоны Excel.
Общие сведения о формах
Форма, печатаемая или доступная по сети, — это документ, разработанный с использованием стандартной структуры и формата, который упрощает сбор, систематизацию и редактирование данных.
Печатные формы содержат инструкции, форматирование, метки и пробелы для ввода и ввода данных. Для создания печатных форм можно использовать шаблоны Excel и Excel.
Формы в Интернете содержат те же функции, что и печатные формы. Кроме того, в веб-формах есть элементы управления. Элементы управления — это объекты, которые отображают данные или упрощают ввод и редактирование данных, выполнение действий или выделение. Как правило, элементы управления упрощают использование формы. Примерами часто используемых элементов управления являются списки, переключатели и кнопки. Элементы управления также могут запускать назначенные им макросы и реагировать на события, например щелчки мышью, путем выполнения кода Visual Basic для приложений (VBA).
Вы можете использовать Excel несколькими способами для создания печатных и электронных форм.
Типы форм Excel
В Excel можно создавать формы нескольких типов: формы данных, листы с элементами управления формы и ActiveX, а также пользовательские формы VBA. Каждый из этих типов формы можно использовать по отдельности или сочетать с другими типами для создания нужного решения.
Форма данных
форма данных предоставляет удобный способ ввода или отображения одной строки данных из диапазона или таблицы, не требующий применения горизонтальной прокрутки. Использовать форму данных может быть проще, чем перемещаться между столбцами, которых слишком много для одновременного отображения на экране. Форму данных можно применять тогда, когда достаточно простой формы с текстовыми полями, в качестве подписей которых используются заголовки столбцов, и когда не требуются сложные или пользовательские возможности, например списки и счетчики.
Приложение Excel может автоматически создавать встроенные формы данных для диапазон или таблица. Такая форма представляет собой диалоговое окно, в котором все заголовки столбцов отображаются в виде подписей. Каждой подписи соответствует текстовое поле, в которое можно вводить данные для столбца (максимальное количество столбцов — 32). В форме данных вы можете вводить новые строки, искать строки по переходу или (в зависимости от содержимого ячейки) обновлять строки и удалять строки. Если ячейка содержит формула, ее результат отображается в форме данных, но саму формулу в форме данных изменить нельзя.
Лист с формой и элементами ActiveX
Лист — это тип формы, который позволяет вводить и просматривать данные в сетке, а также некоторые функции, подобные элементам управления, уже встроенные в листы Excel, такие как примечания и проверка данных. Ячейки похожи на текстовые поля, и их можно вводить и форматировать разными способами. Ячейки часто используются в качестве меток, а также при настройке высоты и ширины ячеек и объединении ячеек можно сделать так, чтобы лист находился как простая форма для ввода данных. Другие функции, такие как элементы управления, такие как примечания к ячейкам, гиперссылки, фоновые изображения, проверка данных, условное форматирование, внедренные диаграммы и Автофильтр, могут вести себя как дополнительные формы.
Для повышения гибкости можно добавлять элементы управления и другие графические объекты в полотно листа, а также комбинировать и координировать их с помощью ячеек листа. Например, можно использовать элемент управления «список», чтобы облегчить пользователю выбирать элементы из списка. Кроме того, можно использовать элемент управления «Счетчик» для упрощения ввода номера пользователем.
Элементы управления и объекты хранятся на полотне, и поэтому их можно отображать и просматривать одновременно со связанным текстом, не зависящим от границ строк и столбцов, без изменения макета сетки или таблицы данных на листе. В большинстве случаев многие из этих элементов управления можно также связать с ячейками на листе, а для их нормальной работы не требуется создавать код VBA. Можно задать свойства, определяющие, является ли элемент управления свободно перемещаемым или перемещается и изменяет размеры вместе с ячейкой. Например, может потребоваться, чтобы флажок перемещался вместе со связанной ячейкой при сортировке диапазона. С другой стороны, если нужно, чтобы список всегда отображался в одном и том же месте, нежелательно, чтобы он перемещался вместе с ячейкой.
В Excel поддерживаются два типа элементов управления: элементы управления форм и элементы ActiveX. В дополнение к этим наборам элементов управления можно также добавлять объекты из средств рисования, например автофигуры, объект WordArt, графических элементов SmartArt или текстовых полей.
В следующих разделах более подробно описываются элементы управления и средства рисования, а также работа с ними.
Элементы управления формы
Элементы управления формы появились в Excel раньше всего и поддерживаются в предыдущих выпусках Excel (начиная с версии 5.0). Их также можно использовать на листах макросов XLM.
Элементы управления формы используются, если нужно легко ссылаться на данные ячеек и взаимодействовать с ними без использования кода VBA, а при необходимости добавлять элементы управления на листы диаграмм. Например, после добавления элемента управления «список» на лист и связывания его с ячейкой можно вернуть числовое значение для текущего положения выбранного элемента в элементе управления. Затем вы можете использовать это числовое значение в сочетании с функцией индекс для выбора различных элементов списка.
С помощью элементов управления формы можно также выполнять макросы. Можно назначить элементу управления существующий макрос либо создать или записать новый. Когда пользователь формы щелкает элемент управления, запускается макрос.
Однако эти элементы управления невозможно добавить в пользовательские формы, которые используются для управления событиями или изменены для запуска веб-сценариев на веб-страницах.
Элементы управления формы в 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.
Включение и отключение параметров элементов ActiveX в файлах Office
Получите сведения о работе с элементами ActiveX в файлах, изменении их параметров, а также о включении и отключении их с помощью панели сообщений и центра управления безопасностью. Кроме того, вы можете получить дополнительные сведения об элементах ActiveX и о том, как они позволяют улучшить файлы.
ИТ-специалисты могут найти дополнительные сведения о планировании элементов ActiveX в статье TechNet Планирование параметров безопасности для элементов управления ActiveX в приложениях Office 2010.
В этой статье
Включение элементов ActiveX при появлении панели сообщений
При открытии файла с элементами ActiveX появляется желтая панель сообщений со значком щита и кнопкой Включить содержимое. Если известно, что источник элементов является надежным, воспользуйтесь описанными ниже инструкциями.
В области Панель сообщений нажмите кнопку Включить содержимое.
Файл откроется в качестве надежного документа.
На приведенном ниже рисунке показан пример панели сообщений, если в файле есть элементы ActiveX.
Включение элементов ActiveX в представлении Backstage
Другой способ включения элементов ActiveX в файле — с помощью представления Microsoft Office Backstage, которое появляется после открытия вкладки Файл при отображении желтой панели сообщений.
Откройте вкладку Файл.
В области Предупреждение системы безопасности нажмите кнопку Включить содержимое.
В разделе Включить все содержимое выберите команду Всегда включать активное содержимое данного документа.
Файл станет надежным документом.
На приведенном ниже рисунке показаны команды Всегда включать активное содержимое этого документа и Дополнительные параметры.
На приведенном ниже рисунке показаны команды группы Включить содержимое.
Примечание: Исключение составляют элементы ActiveX с флагом блокировки. Такие элементы ActiveX не запускаются. Флаг блокировки — это функция безопасности, которая запрещает элементу ActiveX использовать код ActiveX, например устраняя уязвимость в системе безопасности или предотвращая запуск кода.
Включение элементов ActiveX на один раз при появлении предупреждения системы безопасности
Выполнив приведенные ниже инструкции, можно включить элементы управления на то время, пока открыт файл. Если закрыть файл и открыть его снова, предупреждение появится опять.
Откройте вкладку Файл.
В области Предупреждение системы безопасности нажмите кнопку Включить содержимое.
Выберите элемент Дополнительные параметры .
В диалоговом окне Параметры безопасности Microsoft Office выберите команду Включить содержимое для этого сеанса для каждого элемента ActiveX.
На приведенном ниже рисунке показана область Предупреждения системы безопасности, если элементы ActiveX можно включить на то время, пока открыт файл.
Если файл содержит проект Visual Basic для приложений (VBA), например файл Microsoft Excel с поддержкой макросов, центр управления безопасностью налагает более жесткие ограничения, поскольку такой файл может содержать макросы.
Элементы ActiveX и другой активный контент следует включать только в том случае, если точно известно, что они получены из надежного источника.
Изменение параметров элементов ActiveX в Word, Access, Excel, PowerPoint, Publisher и Visio
Выполнив приведенные ниже инструкции, можно включить или отключить элементы ActiveX в центре управления безопасностью.
Выберите Файл > Параметры.
Выберите по очереди пункты Центр управления безопасностью, Параметры центра управления безопасностью и Параметры ActiveX.
Выберите нужные параметры и нажмите кнопку ОК.
Далее показан пример области Параметры ActiveX центра управления безопасностью.
Важно: При изменении параметра ActiveX в Word, Access, Excel, PowerPoint, Publisher или Visio аналогичные параметры изменяются и во всех остальных программах из этого списка.
Описание параметров элементов ActiveX
Приведенные ниже объяснения относятся к элементам ActiveX, которые не находятся в надежном расположении или надежных документах.
Важно: Если документ является надежным и предупреждения безопасности о наличии элементов ActiveX или другого активного содержимого получать нежелательно, поместите этот документ в надежное расположение.
Отключить все элементы управления без уведомления. В документах будут отключены все элементы ActiveX.
Запрос перед включением элементов управления, инициализация которых считается небезопасной (UFI), с дополнительными ограничениями и элементов управления, инициализация которых считается безопасной (SFI), с минимальными ограничениями. Здесь возможны два варианта в зависимости от наличия проектов VBA projects.
При наличии проекта VBA. Все элементы ActiveX отключены, отображается панель сообщений. Чтобы включить элементы управления, нажмите кнопку Включить содержимое.
При отсутствии проекта VBA. Элементы ActiveX, инициализация которых считается безопасной SFI, включены с минимальными ограничениями, и панель сообщений не появляется. Чтобы не открывать панель сообщений, необходимо пометить все элементы ActiveX как SFI. Элементы ActiveX, инициализация которых считается небезопасной (UFI), отключены. Однако в случае включения элементов UFI они инициализируются с дополнительными ограничениями (например, значениями по умолчанию). Постоянные данные, являющиеся частью элементов UFI, будут потеряны.
Запрос перед включением всех элементов управления с минимальными ограничениями. Этот параметр установлен по умолчанию. Здесь возможны два варианта в зависимости от наличия проектов VBA.
При наличии проекта VBA. Все элементы ActiveX отключены, отображается панель сообщений. Чтобы включить элементы управления, нажмите кнопку Включить содержимое.
При отсутствии проекта VBA. Элементы ActiveX, инициализация которых считается безопасной (SFI), включены с минимальными ограничениями, и панель сообщений не появляется. Чтобы не открывать панель сообщений, необходимо пометить все элементы ActiveX как SFI. Элементы ActiveX, инициализация которых считается небезопасной (UFI), отключены. Однако в случае включения элементов UFI они инициализируются с минимальными ограничениями (например, постоянные значения или значения по умолчанию, если постоянные данные не существуют).
Включить все элементы управления без ограничений и запросов (не рекомендуется). Все элементы ActiveX в документах включаются с минимальными ограничениями.
Безопасный режим. Позволяет включить элементы ActiveX, инициализация которых считается безопасной (SFI), в безопасном режиме. Это означает, что разработчик пометил данный элемент управления как безопасный.
Что представляет собой элемент ActiveX и какие риски с ним связаны
Элементы ActiveX — это небольшие стандартные блоки, используемые для создания приложений, работающих через Интернет в веб-браузере. Примерами могут служить пользовательские приложения для сбора данных, просмотра файлов определенных типов и показа анимации. Обычно элементы ActiveX используются в кнопках, списках и диалоговых окнах. В программах Office также можно использовать элементы ActiveX для расширения функциональности документов.
Риск и возможные последствия
Элементы ActiveX могут иметь неограниченный доступ к компьютеру и, следовательно, могут получить доступ к локальной файловой системе и изменить параметры реестра операционной системы. Если злоумышленник воспользуется элементом ActiveX, чтобы управлять компьютером, нежелательные последствия могут быть весьма серьезными.
Вопрос по userform, activex, vba, controls, excel – В чем разница между «Элементами управления» и «Элементом ActiveX» в Excel 2010?
у там2 типа управления доступно в Excel?(2 кнопки, 2 поля со списком, 2 флажка и т. Д.)
какая разница междуФормы управления а такжеЭлементы управления ActiveX? Какой из них я должен использовать?
Некоторые примеры кода, которые я нахожу в Интернете, работают с моими элементами управления, а другие — нет. Как придешь?
Как я работаю с каждым типом, и как я могу определить разницу?
два типы элементов управления, доступные в Excel — усугубляется контрастнымтерминология используется различными интернет-источниками.
Это толькообщий обзор различий междуЭлементы управления формой а такжеЭлементы управления ActiveX (основываясь на моих старых заметках, которые помогли мне окончательно выяснить различия!) Посетите включенные ссылки для получения более подробной информации о каждом элементе управления, включая код и примеры проектов. ☺
(Адаптировано из моего оригинального постаВот — сейчас закрыто)
Естьдва типы элементов управления:Элементы управления формой а такжеЭлементы управления ActiveX:
Обе типы элементов управления могут быть использованы на листах, нотолько ActiveX элементы управления могут быть использованы наUserForms.
Элементы управления формой являются частьюФормы коллекция (так же, как рисование объектов), и, таким образом, упоминается как:
Элементы управления ActiveX в основном являются частью рабочего листа и поэтому называются так:
Обе типы элементов управления можно создавать, изменять и удалять с рабочего листа или программно с помощью VBA, однако 2 типа элементов управления имеют слегка различающийся синтаксис при использовании VBA для обращения к ним.
Некоторые сайты обсуждают и обсуждаютФорма данных, Этоне более чем пользовательская форма сделано специально для ввода / манипулирования данными, поэтому было бы разумнее их вызывать (более знакомое звучание)«Форма ввода данных пользователя».
Офисная документация также иногда ссылается нарабочий лист как форма. Пока этотехнически правильно, не позволяйте этому сбить вас с толку. Думайте о слове «форма» как используемое вобщий смысл:
Два типа элементов управления
Элементы управления формой
Элементы управления ActiveX
Они выглядят, ведут себя и управляются одинаково, но не одинаково. (СписокВот.)
Например, давайте сравним два типаКомбинированные коробки, В некоторых языках программирования сопоставимые элементы управления называются»выпадающее меню» или же»раскрывающийся список», В Excel у нас есть»Поле со списком контроля формы«и»Поле со списком элементов управления ActiveX«:
(Нажмите на изображение, чтобы увеличить.)
☆ «Имя по умолчанию» применяется к созданным элементам управлениявручную, Элементы управления, созданные программно, не имеют (или не требуют) имени по умолчанию и поэтому должны иметь имя, назначенное сразу после создания.
Это изображение ниже показывает, какие общие элементы управленияв общем доступны для использования в рабочих листах и пользовательских формах.
Другие факторы могут влиять на доступность контроля.
Об элементах управления ActiveX и связанных с ними проблем безопасности
Элемент управления ActiveX являетсярасширение на панель инструментов VBA. Элементы управления ActiveX используются так же, как и любые стандартные встроенные элементы управления, например элемент управления CheckBox. Когда вы добавляете элемент управления ActiveX в приложение, оно становится частью среды разработки и среды выполнения и предоставляет новые функциональные возможности для вашего приложения.
Элемент управления ActiveX реализован как внутрипроцессный сервер (обычно небольшой объект), который можно использовать в любом контейнере OLE. Обратите внимание, что полная функциональность элемента управления ActiveX доступна только при использовании в контейнере OLE, предназначенном для понимания элементов управления ActiveX.
Этот тип контейнера, называемыйКонтейнер управления или жеобъект управления, может управлять элементом управления ActiveX с помощью свойств и методов элемента управления и получать уведомления от элемента управления ActiveX в форме событий. Следующий рисунок демонстрирует это взаимодействие:
(Источник: это а такжеэто)
Смотрите также:
Дополнительные кнопки (радио кнопки)
В Excel два типа переключателей фактически называютсяКнопки выбора, Чтобы еще больше запутать вопросы:
имя по умолчанию для элемента управления формы OptionButton1 .
имя по умолчанию для элемента управления ActiveX Option Button 1 .
Хороший способ их различить — открыть список свойств элемента управления (на ленте на вкладке «Разработка») или щелкнуть правой кнопкой мыши элемент управления и выбрать Properties или ударF4), потому что элемент управления ActiveX имеет гораздо больше опций, чем простой элемент управления формы.
Опциональные кнопки и флажки можно связать вместе (поэтому из группы можно выбрать только один вариант), поместив их в общийГрупповая коробка.
Выберите элемент управления группы и затем нажмитеCtrl при выборе каждого из других элементов управления, которые вы хотите сгруппировать. Щелкните правой кнопкой мыши элемент управления группы и выберите Grouping → Group .
Первые две ссылки ниже представляют собой отдельные наборы инструкций для обработки каждого типа кнопки выбора.
СОБЫТИЯ УПРАВЛЕНИЯ ОБРАЩЕНИЕМ:События управления формой ( Click только событие)
События управления формой могут отвечать только на одно событие: Click мероприятие, (Больше информацииВот.) Обратите внимание, чтоэтот раздел не относится к пользовательским формам так как они используют только элементы управления ActiveX.
Чтобы добавить процедуру для Click мероприятие:
Щелкните правой кнопкой мыши элемент управления и выберите Assign Macro.
В диалоге «Назначить макрос»:
Выберите существующую процедуру и нажмитеХорошо, или же,
Создайте новую процедуру в VBE, нажавНовый . или же,
Запишите новый макрос, нажавЗапись . или же,
Удалить назначенное событие, удалить его имя из Macro Name поле и нажмитеХорошо.
(Нажмите на изображение, чтобы увеличить.)
Чтобы переименовать, отредактировать или удалить существующие макросы, нажмитеAlt+F8 открыть Macro интерфейс:
События управления ActiveX
Элементы управления ActiveX имеютболее обширный список событий, на которые они могут быть настроены для ответа.
Чтобы назначить события элементам управления ActiveX, щелкните правой кнопкой мыши элемент управления и выберите View Code , В VBE вы можете вставить код иливыбрать конкретные события из раскрывающегося списка в правом верхнем углу окна VBE.
(Нажмите на изображение, чтобы увеличить.)
Управление обработкой событий в пользовательской форме:
События также могут использоваться в элементах управления для пользовательских форм. Поскольку только пользовательские элементы управления ActiveX могут быть размещены в форме пользователя, вы получите компромисс «больше кодирования + больше функциональности».
Элементы управления ActiveX добавляются в пользовательские формы так же, как они добавляются на лист. Имейте в виду, что любые события, назначенные пользовательской формесам (т. е. фон) будет «заблокирован» в любых областях, охватываемых элементом управления, поэтому вам может потребоваться назначить одинаковые события элементам управления, а также пользовательской форме.
Например, чтобы заставить эту пользовательскую форму отвечать на MouseMove где-нибудь на форме, тот же код события был применен кпользовательская форма, текстовые поля, кнопки выбора и рамка:
Примеры VBAДобавить / изменить / удалить кнопку опции управления формой с помощью VBA:
Добавить / изменить / удалить командную кнопку ActiveX с помощью VBA:
Добавить / удалить элементы из поля со списком управления формой: Добавить / удалить элементы из поля со списком ActiveX: Больше информации:
трюки • приёмы • решения
В наших статьях мы подробно рассмотрим практические примеры, связанные с использованием программирования, которое заложено в Microsoft Office. Оно основывается на языке VBA, название которого в полном виде выглядит так Visual Basic for Application. Учитывая, что все рассматриваемые разработки будут использовать VBA, наша первоочередная задача познакомиться сданным языком.
Примеры этой темы предназначены для категории читателей, которая либо с VBA не встречалась, либо это знакомство было весьма поверхностным. Все последующие главы будут полностью посвящены рассмотрению практических офисных задач, и, таким образом, эта статья является для них базовой.
Рис. 1.4. Закладка Основные окна Параметры Excel
Предполагается, что читатель хотя бы в незначительной степени знаком с чисто пользовательскими возможностями Microsoft Excel прошлых версий. Важно отметить, что наибольший эффект будет наблюдаться, если запустить Microsoft Excel параллельно с чтением наших статей и выполнять все описанные разработки на компьютере. При рассмотрении примеров на протяжении всего изучения нам понадобятся элементы ActiveX, которые по-другому можно назвать Элементы управления.
И в качестве первого шага необходимо в окне, показанном на рис. 1.2, щелкнуть кнопкой Параметры Excel. В результате перед вами откроется новое окно с набором закладок. Здесь на закладке Основные следует сделать установку для отображения на ленте вкладки Разработчик, что реализуется с помощью флажка Показывать вкладку «Разработчик» на ленте (рис. 1.4).
В Microsoft Excel элементы ActiveX можно размещать и на пользовательских формах, и на самих рабочих листах (на верхнем графическом слое, где располагаются рисунки, диаграммы и другие объекты). Часто вставка нескольких элементов ActiveX значительно упрощает работу с данными на рабочем листе. Все элементы управления делятся на две группы: элементы управления формами и элементы управления ActiveX. Оба набора элементов управления имеют свои преимущества и недостатки. В общем случае элементы управления формами проще в применении, но зато элементы ActiveX являются более гибкими. В наших примерах мы будем использовать исключительно элементы ActiveX.
В результате окно приложения Microsoft Excel дополнится новыми пиктограммами, которые нам потребуются в дальнейшем (рис. 1.5). Среди тех, которыми мы будем активно пользоваться на протяжении всей книги, отметим пиктограмму с надписью Вставить. С се помощью на рабочем листе можно размещать элементы ActiveX, которые существенно дополняют функциональность книг Microsoft Excel. Они типичны для различных приложений Windows (речь идет о кнопках, полосах прокрутки, текстовых окнах, переключателях, списках и т. д.). Кроме пиктограммы Вставить мы будем активно пользоваться и другими присутствующими на ленте Режим конструктора, Свойства, Visual Basic и Макросы.
Перед тем как начать какие-либо действия с тем или иным элементом ActiveX, его необходимо поместить на рабочий лист. Это легко выполнить, если воспользоваться пиктограммой Вставить. На рис. 1.6 показано размещение на рабочем листе элемента ActiveX Кнопка.
Рис. 1.5. Отображение вкладки Разработчик на ленте
При наведении курсора мыши на пиктограмму элемента ActiveX Кнопка в качестве подсказки появляется еще один вариант его названия: элемент управления «Кнопка». Далее по тексту мы будем использовать оба варианта названия — элементы ActiveX и элементы управления.
Для того чтобы перенести элемент ActiveX на рабочий лист, необходимо щелкнуть на панели инструментов на его пиктограмме левой кнопкой мыши и далее переместить курсор мыши на рабочий лист. Курсор мыши примет вид, аналогичный математическому знаку «плюс». Теперь следует нажать левую кнопку мыши и, не отпуская ее, переместить мышь вправо и вниз, а затем отпустить ее левую кнопку. В результате на рабочем листе мы увидим изображение появившегося элемента ActiveX, окруженного маркерами (рис. 1.6).
Рис. 1.6. Размещение кнопки на рабочем листе в режиме конструктора
После размещения элемента ActiveX на рабочем листе активизируется кнопка Режим конструктора, которая позволяет пользователю далее работать в одном из двух режимов. Один из них так и называется режим конструктора. В этом случае можно работать с элементами ActiveX для создания необходимого интерфейса на рабочем листе. Также в этом режиме пользователю предоставляется возможность создавать программные разработки.
Появление маркеров (см. рис. 1.6), окружающих элемент ActiveX, как раз и является признаком того, что мы работаем в режиме конструктора (кнопка Режим конструктора в этом случае выглядит нажатой). На начальном этапе создания разработки работа в режиме конструктора сводится к размещению элементов управления на рабочем листе и изменению их свойств. Далее производится программирование различных событий, связанных с элементами управления, листами и книгой в целом.
Важно отметить, что после размещения элемента ActiveX на рабочем листе, в нашей книге (можно даже сказать — на данном листе книги) появился новый элемент, который фактически представляет собой «программный» объект. Аналогичным образом на рабочих листах книг Excel можно размещать и другие элементы ActiveX.
Рис. 1.7. Вид рабочего листа при выходе из режима конструктора
Другой режим можно назвать режимом выполнения или режимом работы (какого-то однозначно принятого названия не существует). Чтобы перейти в этот режим (то есть выйти из режима конструктора), необходимо отжать кнопку Режим конструктора (рис. 1.7). После этого в нашем случае можно просто пощелкать кнопкой, которую мы создали на рабочем листе (функциональные действия, которые можно обеспечить в этом случае, мы рассмотрим в дальнейшем). Далее опять вернемся в режим конструктора. С помощью маркеров, окружающих кнопку, можно легко изменить се размеры. Также с помощью мыши можно перемещать созданную кнопку по рабочему листу.
Почему не удается выделить элементы управления формы и элементы ActiveX?
Смотрите также для макросов в из указанных нижеФормат элемента управления …Основные вкладкиКлавиатура и мышь строки. порождаемые пользователем..При необходимости добавьте кодэлементы управления. которые описаны в автоматически, поэтому ее.Совет: границу элемента управления.Примечание: уже созданной и действий..
Признаки
установите флажокСочетание клавиш для элемента
Причина
Enabled (форма)Примечание: VBA.нажмите кнопкуЩелкните на листе место, последующих разделах. текст может содержатьВ раскрывающемся списке Чтобы отобразить правильное контекстноеЕсли Excel не в Мы стараемся как можно
заполненной таблице.Введите имя существующего макросаНа вкладкеРазработчик управления.Размер и положениеМожно ли изменять элемент Прежде чем нажать кнопку
Закройте редактор Visual BasicПросмотр кода место в левый
Разрешение
Кнопка (элемент управления формы) неточности и грамматическиенастроить ленту меню для группы режиме конструктора, при оперативнее обеспечивать васНо в разделе в книге. ДляРазработчики нажмите кнопкуAccelerator (форма)Будет ли размер элемента управления.Свойства и нажмите кнопку. Запустится редактор Visual верхний угол должна
Кнопка команды (элемент ActiveX) ошибки. Для насвыберите элемент управления формы, попытке выберите элемент
актуальными справочными материалами Разработчик режим «вставить запуска нескольких макросовнажмитеСохранитьНастраиваемый значок мыши. управления изменяться автоматическиLocked (форма)
, выделите объект, свойстваРежим конструктора Basic. Убедитесь, что появиться кнопка. ПоявитсяВ приведенных ниже разделах, важно, чтобы этаОсновные вкладки
убедитесь, что выбран управления ActiveX, вы на вашем языке. активные элементы» не с помощью кнопки
.MouseIcon (форма) для отображения всегоИмя элемента управления. которого требуется просмотреть
нажмите кнопку всплывающее окно узнайте, как добавить
статья была вам. периметр группы, а можете случайно начать Эта страница переведена
активен. При создании введите имена макросов.Выполните следующие действия.Тип указателя, отображаемого при
содержимого.Name (форма) или изменить.
что отключен режимвыбрать в раскрывающемсяНазначить макрос макрос кнопке в полезна. Просим васУстановите флажок не ее внутреннюю действие, например выполнение автоматически, поэтому ее нового «голого» листа
в отдельной строкеЩелкните на листе место,На вкладке наведении пользователем указателяAutoSize (форма)Способ привязки элемента управления
Откроется диалоговое окно конструктора. списке в правой
Назначение макроса форме или кнопке управления
. Excel — для уделить пару секундРазработчик часть группы. макроса или установка текст может содержать все есть. внутри процедура sub где должен бытьРазработчик мыши на определенныйВысота или ширина в к расположенным подСвойстваЧтобы запустить код VBA, части экрана. ПроцедураНазначьте кнопке макрос и Windows или Mac. и сообщить, помогла.
Если контекстное меню содержит флажка. неточности и грамматическиеПодскажите, пожалуйста, какДобавьте код VBA. расположен левый верхнийнажмите объект (например, стандартный, пунктах. ним ячейкам (не. Подробные сведения о теперь является частью sub нажмите кнопкуПримечание: ли она вам,Убедитесь в том, что командуМногие элементы управления расположены ошибки. Для нас включить этот режим
угол кнопки команды.
кнопку стрелка или I-образный).Height, Width (форма) закреплен, можно перемещать, каждом свойстве выберите
кнопки, нажмите созданнуюCommandButton1_ClickОК
Элементы управления ActiveX не
с помощью кнопок Excel открывается вСвойства рядом друг с важно, чтобы эта «вставить» в уже
Режим конструктораПримечание:.MousePointer (форма)Расстояние от элемента управления
Добавление кнопки (элемента управления формы)
но нельзя изменять свойство и нажмите кнопку ActiveX.(статья на рисунке. поддерживаются для Mac. внизу страницы. Для режиме конструктора. На , элемент управления является другом. статья была вам
существующей таблице?, чтобы убедиться, Если вы уже добавленЩелкните на листе место,Получает ли элемент управления до левого или размер, можно перемещать
клавишу F1, чтобыЧтобы изменить элемент ActiveX, ниже) запускается этиЧтобы указать свойства кнопки,
Windows macOS удобства также приводим вкладке элементом ActiveX иВо-первых определяют тип элемента полезна. Просим вас
Добавление кнопки команды (элемент ActiveX)
Karataev что выключен этот кнопки, щелкните его место в левый фокус при щелчке верхнего края листа. и изменять размер). отобразить раздел справка убедитесь, что выбран два макроса при щелкните ее правой
Макросы и VBA средства ссылку на оригиналРазработчик Excel открывается в
управления, который требуется уделить пару секунд: Может лист защищен? режим конструктора, а правой кнопкой мыши верхний угол должна мышью.Left, Top (форма)Placement (Excel) по Visual Basic. режим конструктора. На нажатии кнопки: кнопкой мыши и можно найти на (на английском языке).в группе режиме конструктора. выделить. Существует три и сообщить, помогла Вы не защищали
затем закройте окно и выберите команду появиться кнопка. Появится
TakeFocusOnClick (форма)ФорматированиеМожно ли выводить элемент Можно также ввести вкладкеSelectC15 выберите пункт вкладке «Кнопка элемента управления формыэлементы управленияЕсли контекстное меню содержит различных типа элементов
ли она вам, лист: вкладка Рецензирование
редактора Visual Basic.Назначить макрос всплывающее окно Макросы и VBA средстваЦвет фона. управления на печать.
имя свойства вРазработчикиФормат элемента управления
Разработчик или кнопки командывключите команду управления и объекты, с помощью кнопок — Защитить лист?Кнопка «Изменить», щелкните его.Назначить макрос
можно найти наBackColor (форма)PrintObject (Excel) полев группеHelloMessage. », который скрыт (элемент ActiveX) можноРежим конструктораНазначить макрос которые можно изменять внизу страницы. Для
Serge1400 правой кнопкой мышиВ диалоговом окне. вкладке «Стиль фона (прозрачный или
Является ли элемент управленияпоискаЭлементы управления.На вкладке по умолчанию. использовать для запуска., используется объект средства однозначно, вы может удобства также приводим: Спасибо за совет! и выберитеНазначить макросПримечание:Разработчик
видимым или скрытым.
в справке Visual
нажмите кнопкуВ подпрограмма для кнопкиРазработчикПервым делом нужно включить
макроса, который выполняет
При работе с большое рисования. не наверняка знаете, ссылку на оригинал
Похоже действительно дело
Если вы уже добавлен
Visible (форма) Basic. В таблицеРежим конструктора выполните одно изв группе ее. Для получения действие при нажатии
количество элементов управления,
Затем выполните следующее: какой тип элемента
(на английском языке).
кнопки, щелкните его
по умолчанию, поэтомуЦвет переднего плана.Текст
ниже перечислены свойства,.
указанных ниже действий.элементы управления дополнительных сведений обратитесь
пользователем кнопки. Оба
расположенные рядом другВ элементе управления формы управления — простоВыбор элемента управления, бывает
меня стоит «хитрая»
Чтобы задать свойства элемента
, которая откроется правой кнопкой мыши первым делом нужноForeColor (форма)
Атрибуты шрифта (полужирный, курсив,
которые доступны.Чтобы указать свойства кнопки,
Введите имя существующего макроса
нажмите кнопку к статье: Отображение этих кнопок также
с другом, увеличить
выберите элемент управления
просмотрев его. Определение
сложно и непредсказуемые.
— вот отсюда управления кнопки, щелкните
Редактор Visual Basic
и выберите команду
Наличие тени элемента управления.
размер, зачеркивание, подчеркивание
Объект, который требуется настроить
на вкладке в книге. Макросы
вкладки «Разработчик». называются кнопки, можно большего размера, чтобы и убедитесь, что
типа элемента управления,
Может быть несколько причин:
http://www.excelworld.ru/forum/3-2719-1#190521 его правой кнопкой
Shadow (Excel) и насыщенность).СвойствоРазработчик можно найти, нажав
На вкладке настроить для автоматизации увеличить изображение.
отображается границу элемента
который вы работаете,Поскольку элемент управления формыПришлось все копировать мыши и выберитеVBE.ExcelИзображение
Bold, Italic, Size, StrikeThrough,Общиев группе кнопкуЭлементы управления ActiveXРазработчик печати листа, фильтрация
Дополнительные сведения читайте в управления. щелкните правой кнопкой может содержать текст в новую книгу,Формат элемента управления …) области наНазначение макроса кнопке и>
Добавление кнопки (элемента управления формы)
Точечный рисунок, отображаемый в
Underline, Weight (форма)Загружается ли элемент управленияэлементы управлениямакросов , нажмите кнопку
в группе данных, или вычисление статье масштабирование документа,Для элемента управления ActiveX: мыши элемент управления или другие объекты делать кнопки и
. следующий код: нажмитеПараметры элементе управления.Поясняющий текст элемента управления, при открытии книги
нажмите кнопкув группеКнопкиэлементы управления
чисел. Как правило презентации или листа.Если вкладка и затем Обратите (например, изображение), при потом включать защиту.
Добавление кнопки команды (элемент управления Visual Basic)
Включение и отключение макросовSub ButtonX_Click() End Subкнопку ОК> Picture (форма)
определяющий или описывающий (не относится кСвойствакод
.нажмите кнопку «форма» и кнопкаПримечание:Разработчик внимание на следующее: попытке выберите элемент
Как ни странно, в файлах OfficeВ подпрограмма назначенного выбранной.Лента и панельПоложение рисунка относительно его его. элементам управления ActiveX).. Можно щелкнуть. Вводя имена макросов
Щелкните на листе место,
Вставить элемента управления ActiveX, Мы стараемся как можнонедоступна, отобразите ее:Если контекстное меню содержит управления вы могут но после всегоВключение и отключение параметров
кнопке междуЧтобы задать свойства элемента. заголовка (слева, сверху,Caption (форма)AutoLoad (Excel) правой кнопкой мыши
в отдельной строке
которого вы хотитеи нажмите которые отличают в оперативнее обеспечивать васОткройте вкладку команду не весь элемент
этого режим «вставить» элементов ActiveX вSub управления кнопки, щелкнитеВ категории
справа и такБудет ли содержимое элементаМожет ли элемент управления кнопку и выберите внутри подпрограмма можно верхнего левого угла
См. также
кнопку внешний вид и
актуальными справочными материаламиФайлНазначить макрос
Как включить режим «вставить элементы управления» в таблице (Формулы/Formulas)
управления, если выделен остался активным, в файлах Officeи его правой кнопкой
настроить ленту далее). управления переноситься по получать фокус и пункт запустить несколько макросов
кнопки должна отображаться.в группе функции. Однако они на вашем языке.
и выберите пункт, это элемент управления не навести указатель отличие от таблицыSerge1400
End Sub мыши и выберите
в спискеPicturePosition (форма) словам в конце реагировать на события,Свойства
с помощью кнопки.В группеЭлементы управления формы содержат несколько отличий, Эта страница переведенаПараметры формы. мыши точно на оригинала.: Попытался создать кнопочки
Excel работает за вас
Excel works!
Thanks for Visiting
Вкладка Разработчик. Для чего она нужна в Excel?
Каждый, кто сталкивался с написанием макросов в Excel версий 2007 и позже, слышал, что существует вкладка Разработчик. А ведь с нее можно работать не только с возможностями макросов , но и создавать элементы управления (кнопки запуска макросов), настраивать импорт через XML и так далее. Мощное и удобное дополнение к имеющимся вкладкам.
Поскольку в Excel 2007 в отличие от версии 2003 добавили Ленту команд, появились связанные с ней новые возможности. Одна из них — очень удобная вкладка Разработчик. Как видно на рисунке, на ней есть довольно большое количество функций, которые удобно сразу вызывать и не лезть вглубь программы.
Она не доступна изначально, но легко включается через Настройки Excel:
Вкладка Разработчик. Как включить?
Заходим в Настройки Excel (круглая кнопка в левом верхнем углу) — нажимаем кнопку Параметры Excel — первая вкладка Основные — ставим галочку Показывать вкладку «Разработчик» на ленте.
Вкладка должна появиться рядом со вкладкой Вид.
Для Excel 2016 зайдите в Параметры — Настройка ленты — в разделе Основные вкладки справа поставьте галочку в пункте Разработчик, и нажмите кнопку ОК.
Вкладка Разработчик. Основные возможности
Теперь, когда у нас доступен нужный раздел ленты пробежимся по ее возможностям.
Раздел Код
Опишем каждую из доступных кнопок
Visual Basic — с ее помощью заходим в окно VBA, где можно написать макрос, горячая клавиша Alt + F11
Макросы — откроется панель выбора макросов, горячая клавиша Alt + F8. Подробно о том как запустить макрос можно читать здесь .
Запись макроса — повторяет кнопку внизу панели, для записи макроса макрорекордером.
Относительные ссылки — интересная функция, подробной о которой можно прочитать, если навести на нее мышкой:
Вроде бы довольно понятно. Удобно. Если нужны пояснения, пишите в комментарии
Безопасность макросов — вызывает меню настроек, где нужно включить макросы , прежде, чем начать с ними работу. Довольно распространенный вопрос, что делать если макросы не работают.
Раздел Элементы управления
Элементы управления — это дополнительные виджеты, которые можно добавить на лист для быстрого выполнения написанных на VBA команд. Возможностей здесь довольно много.
Вставить — выпадает менюха с различными элементами, которые можно добавить на лист. Чекбоксы, полосы прокрутки и так далее.
Самый популярный элемент для вставки — это, конечно же, кнопка . При ее помощи можно, например, запустить написанный макрос.
Режим конструктора — если вы вставили кнопку, то вам нужно управлять ее свойствами и размерами, это возможно в режиме конструктора.
Свойства — так же нам нужно управлять свойствами кнопок или другого объекта, в том числе листа Excel. Чтобы открыть меню свойств кнопки, запустите режим конструктора, а затем нажмите Свойства. А здесь уже выбор неплохой — цвет, шрифт, границы, печатать объект или нет и т.д. и т.п.
Просмотр кода — во многом дублирует кнопку Visual Basic из раздела Код, но при нажатии этой кнопки, вы сразу попадаете на код привязанный к объекту. А когда объектов много, это очень удобно!
Отобразить окно — если вам не хватило имеющихся элементов управления, вы можете создать свой. Это тема для отдельной большой статьи. Если вы молодец, и уже создали такое окно, то вы сможете его отобразить через эту кнопку.
Раздел XML
XML (Extensible Markup Language) — расширяемый язык разметки, разработанный специально для размещения информации в World Wide Web. Довольно часто применяется для разного рода обменов данными, как универсальный язык. Например между сайтом и Excel, 1C и Access и так далее.
Кнопка Источник — при помощи Excel мы можем перевести данные в XML и после использовать их в веб, например на сайте.
Если вы создали таблицу, то для нее нужно прописать карту XML. Об этом думаю тоже стоит написать отдельную статью. В ближайшее время.
Пакеты расширений — по умолчанию подключен пакет Actions Pane 3.
Импорт/Экспорт — если вы настроили импорт или экспорт данных из XML, вы можете передавать или получать данные этими кнопками.
Раздел Изменить
Здесь единственная кнопка — Область документа. Как говорится, «век живи — век учись», раньше не встречался с этой возможностью. Почитал в интернете скудную информацию. Оказывается:
При ее нажатии открывается окно настройки Область сведений о документе.
Область сведений — это те сведения/примечания, которые записываются о самом файле в свойствах документа: автор, тема, категория и т.д.
Если нажать кнопку Всегда показывать область сведений. То при повторном открытии, в самом документе вы сможете записать комментарии к документу или изменить автора, не заходя в свойства.
Если остались вопросы — пишите смело в комментарии.
Режим конструктора
Для удобства работы с элементами
управления в период их конструирования
в Excel введен режим конструктора,
который активизируется нажатием кнопкиРежим конструктора(DesignMode)панели инструментовЭлементы управления(ControlToolbox).
В режиме конструктора отключена реакция
элемента управления на события. Поэтому
при включенном режиме конструктора
можно видоизменять элемент управления
и задавать его свойства. На рис.2 показано
создание элемента управленияCommandButton(кнопка) на рабочем листе. После того
как пользователь решит, что созданный
элемент управления имеет тот вид, который
ему нужен, и все требуемые свойства
элемента управления установлены, он
должен отключить режим конструктора
повторным нажатием кнопкиРежим
конструктора(DesignMode).
Рис.2.Создание
элемента управления CommandButtonна
рабочем листе
Установка свойств элемента управления
Для установки свойств элемента управления
вручную при его конструировании
необходимо выделить элемент управления
и нажать кнопку Свойства(Properties)панелиЭлементы управления(ControlToolbox). На экране отобразится
диалоговое окноСвойства(Properties)
(рис.3). Вручную при помощи этого окна
обычно устанавливается свойствоCaption,
возвращающее отображаемый текст элемента
управления. На рис.3 значение свойстваCaptionэлемента управленияCommandButtonизменено с установленногопо умолчанию
(CommandButton1)
на текст Нажми меня.
Рис.3.Диалоговое
окно Свойства и элемент управленияCommandButton
Кроме того, могут быть внести изменения
в параметры свойства Font, устанавливающее
шрифт выводимого на поверхность кнопки
текста и изменено свойствоShadow,
которое устанавливает, отображается
ли элемент управления с тенью или без
нее.
Редактор кода
После установки свойств элемента
управления или формы переходят к
написанию кода, связанного с ними. Особое
место в этом коде занимают процедуры
обработки событий. У каждого элемента
управления есть целый набор событий,
обрабатывающих те или иные действия.
Приведем некоторые из них:
Click |
Щелчок |
DblClick |
Двойной щелчок |
GotFocus |
Кнопка в фокусе |
LostFocus |
С кнопки снят фокус |
Код обработки события записывается на
листе модуля. Для активизации модуля в
том месте, где надо ввести код по обработке
события, связанного с выделенным
элементом управления, или отредактировать
уже написанный код достаточно нажать
кнопку Исходный текст(View Code)панели инструментовЭлементы управления(Control Toolbox).
Нажатие на кнопку Исходный текст(View Code) активизирует модуль с именемЛист1, т.е. модуль, относящийся к
рабочему листу, на котором создана
кнопка (рис.4). Вся рабочая книга, а также
каждый рабочий лист, диаграмма или форма
имеют связанные с ними модули кода.
Кроме того, можно создать модули кода
для макросов и модули класса.
Рис.4.Модуль окна
и окно Проект
В левой верхней части модуля кода
находится раскрывающийся список с
именами объектов, для которых в данном
модуле создаются процедуры обработки
событий. В этом списке также представлен
раздел модуля Общая часть(General), где
описываются переменные и константы
уровня модуля.
В правой верхней части модуля кода
находится раскрывающийся список с
имнами событий, связанных с данным
объектом.
Составим процедуру обработки события
Clickтак, чтобы
нажатие на кнопку отображало на экране
диалоговое окно, уведомляющее пользователя
о случившемся действии (нажатии кнопки)
(рис.5):
Private Sub CommandButton1_Click()
MsgBox “Вы нажали на
меня”
End Sub
Рис.5. Диалоговое
окно, отображаемое на экране при нажатии
кнопки Нажми меня
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
Каждый, кто сталкивался с написанием макросов в Excel версий 2007 и позже, слышал, что существует вкладка Разработчик. А ведь в ней можно работать не только с возможностями макросов, но и создавать элементы управления (кнопки запуска макросов), настраивать импорт через XML и так далее. Мощное и удобное дополнение к имеющимся вкладкам.
Поскольку в Excel 2007 в отличие от версии 2003 добавили Ленту команд, появились связанные с ней новые возможности. Одна из них — очень удобная вкладка Разработчик. Как видно на рисунке, на ней есть довольно большое количество функций, которые удобно сразу вызывать и не лезть вглубь программы.
Она не доступна изначально, но легко включается через Настройки Excel:
Содержание
- Вкладка Разработчик. Как включить?
- Вкладка Разработчик. Основные возможности
- Раздел Код
- Раздел Элементы управления
- Раздел XML
- Раздел Изменить
- Похожие статьи
Вкладка Разработчик. Как включить?
Заходим в Настройки Excel (круглая кнопка в левом верхнем углу) — нажимаем кнопку Параметры Excel — первая вкладка Основные — ставим галочку Показывать вкладку «Разработчик» на ленте.
Вкладка должна появиться рядом со вкладкой Вид.
Для Excel 2016 зайдите в Параметры — Настройка ленты — в разделе Основные вкладки справа поставьте галочку в пункте Разработчик, и нажмите кнопку ОК.
Вкладка Разработчик. Основные возможности
Теперь, когда у нас доступен нужный раздел ленты, пробежимся по ее возможностям.
Раздел Код
Опишем каждую из доступных кнопок
Visual Basic — с ее помощью заходим в окно VBA, где можно написать макрос, горячая клавиша Alt + F11
Макросы — откроется панель выбора макросов, горячая клавиша Alt + F8. Подробно о том как запустить макрос можно читать здесь.
Запись макроса — повторяет кнопку внизу панели, для записи макроса макрорекордером.
Относительные ссылки — интересная функция, подробней о которой можно прочитать, если навести на нее мышкой:
Вроде бы довольно понятно. Удобно. Если нужны пояснения, пишите в комментарии
Безопасность макросов — вызывает меню настроек, где нужно включить макросы, прежде чем начать с ними работу. Довольно распространенный вопрос, что делать если макросы не работают.
Раздел Элементы управления
Элементы управления — это дополнительные виджеты, которые можно добавить на лист для быстрого выполнения написанных на VBA команд. Возможностей здесь довольно много.
Вставить — выпадает менюха с различными элементами, которые можно добавить на лист. Чекбоксы, полосы прокрутки и так далее.
Самый популярный элемент для вставки — это, конечно же, кнопка. При ее помощи можно, например, запустить написанный макрос.
Режим конструктора — если вы вставили кнопку, то вам нужно управлять ее свойствами и размерами, это возможно в режиме конструктора.
Свойства — так же нам нужно управлять свойствами кнопок или другого объекта, в том числе листа Excel. Чтобы открыть меню свойств кнопки, запустите режим конструктора, а затем нажмите Свойства. А здесь уже выбор неплохой — цвет, шрифт, границы, печатать объект или нет и т.д. и т.п.
Просмотр кода — во многом дублирует кнопку Visual Basic из раздела Код, но при нажатии этой кнопки, вы сразу попадаете на код привязанный к объекту. А когда объектов много, это очень удобно!
Отобразить окно — если вам не хватило имеющихся элементов управления, вы можете создать свой. Это тема для отдельной большой статьи. Если вы молодец, и уже создали такое окно, то вы сможете его отобразить через эту кнопку.
Раздел XML
XML (Extensible Markup Language) — расширяемый язык разметки, разработанный специально для размещения информации в World Wide Web. Довольно часто применяется для разного рода обменов данными, как универсальный язык. Например, между сайтом и Excel, 1C и Access и так далее.
Кнопка Источник — при помощи Excel мы можем перевести данные в XML и после использовать их в веб, например, на сайте.
Если вы создали таблицу, то для нее нужно прописать карту XML. Об этом, думаю, тоже стоит написать отдельную статью. В ближайшее время.
Пакеты расширений — по умолчанию подключен пакет Actions Pane 3.
Импорт/Экспорт — если вы настроили импорт или экспорт данных из XML, вы можете передавать или получать данные этими кнопками.
Раздел Изменить
Здесь единственная кнопка — Область документа. Как говорится, «век живи — век учись», раньше не встречался с этой возможностью. Почитал в интернете скудную информацию. Оказывается:
При ее нажатии открывается окно настройки Область сведений о документе.
Область сведений — это те сведения/примечания, которые записываются о самом файле в свойствах документа: автор, тема, категория и т.д.
Если нажать кнопку Всегда показывать область сведений, то при повторном открытии в самом документе вы сможете записать комментарии к документу или изменить автора, не заходя в свойства.
Если остались вопросы, пишите смело в комментарии.
Отображение вкладки «Разработчик»
- На вкладке файл выберите Параметры> Настройка ленты.
- В разделе Настройка ленты в списке Основные вкладки установите флажок Разработчик.
Как добавить режим разработчика в Excel?
Вкладка Разработчик в Excel
- Щелкните правой кнопкой мыши в любом месте на Ленте и нажмите Customize the Ribbon (Настроить ленту).
- С правой стороны открывшегося диалогового окна под надписью Customize the Ribbon (Настроить ленту) при необходимости выберите Main Tabs (Основные вкладки) .
- Поставьте галочку в ячейке Developer (Разработчик).
Как включить панель разработчика в Excel 2007?
Отображение вкладки «Разработчик» на ленте Microsoft Office Excel 2007/2010: – нажмите кнопку Office –> Параметры Excel; – в открывшемся диалоговом окне Параметры Excel в меню (слева) выберите Основные; – в разделе Основные параметры работы с Excel установите флажок Показывать вкладку «Разработчик» на ленте –> OK.
Как открыть VBA в Excel?
Вставляем код VBA в книгу Excel
- Открываем рабочую книгу в Excel.
- Нажатием Alt+F11 вызываем окно редактора Visual Basic.
- На панели Project-VBAProject кликаем правой кнопкой мыши по имени рабочей книги (в левой верхней части окна редактора) и в контекстном меню выбираем Insert > Module.
Как включить режим конструктора в Excel 2016?
На вкладке Разработчик в группе элементы управления включите Режим конструктора.
…
Если вкладка Разработчик недоступна, отобразите ее:
- Откройте вкладку Файл и выберите пункт Параметры.
- В раскрывающемся списке настроить ленту выберите Основные вкладки.
- Установите флажок Разработчик.
Как добавить кнопку в Excel?
Добавление кнопки (элемент управления формы)
- На вкладке разработчик в группе элементы управления нажмите кнопку Вставить, а затем в разделе элементы управления формынажмите кнопку .
- Щелкните на листе место, где должен быть расположен левый верхний угол кнопки. …
- Назначьте кнопку макроса, а затем нажмите кнопку ОК.
Где находится разработчик в Excel 2010?
Microsoft Office Excel 2010, 2013, 2016
- Откройте меню «Файл» — «Параметры» — «Настройка ленты».
- В списке «Основные вкладки» установите флажок напротив пункта «Разработчик».
- Нажмите «ОК», чтобы подтвердить свое решение. Инструменты разрабочика появятся в ленте основных вкладок Excel.
Почему нет вкладки Разработчик в Excel?
Вкладка » разработчик » не отображается по умолчанию, но ее можно добавить на ленту. В меню Word выберите пункт Параметры. Выберите элемент Лента и панель инструментов , > настроить ленту > Основные вкладки. Установите флажок разработчик и нажмите кнопку сохранить.
Как включить VBA в Excel 2007?
Excel
- Нажмите кнопку Microsoft Office. , а затем — Параметры Excel.
- Выберите Центр управления безопасностью > Параметры центра управления безопасностью > Параметры макросов.
- Выберите нужные параметры. Отключить все макросы без уведомления. Выберите этот параметр, если не доверяете макросам.
Как писать макросы в Excel?
Чтобы записать макрос, следуйте инструкциям ниже.
- На вкладке Разработчик в группе Код нажмите кнопку Запись макроса. …
- В поле Имя макроса укажите имя макроса. …
- Чтобы назначить сочетание клавиш для запуска макроса, в поле Сочетание клавиш введите любую строчную или прописную букву.
Где находятся элементы управления в Excel?
Чтобы добавить список в Excel 2007 и более поздних версий, откройте вкладку разработчик , нажмите кнопку Вставить в группе элементы управления , а затем в разделе элементы управления формывыберите пункт форма списка (элемент управления) .
Где сохраняются файлы Excel?
Как и в предыдущих версиях программы, файлы Microsoft Excel можно сохранять на локальном компьютере. При желании документ можно сохранить в облачном хранилище OneDrive, а также экспортировать или открыть доступ напрямую из Excel. Служба OneDrive прежде называлась SkyDrive.
Где Автосохраненные файлы Эксель?
— Зайдите в Файл — Параметры программы, вкладка Сохранение и посмотрите, куда сохраняются файлы — на скриншоте виден путь к нужной папке. Как правило, это папка на диске С.
В настоящей заметке рассматриваются методы создания пользовательских форм и работы с ними.[1] Пользовательские диалоговые окна создаются на основе технологии пользовательских форм, к которым можно получить доступ из редактора Visual Basic (VBE; подробнее см. Настройка среды Visual Basic Editor).
Рис. 1. Окно новой пустой формы UserForm
Скачать заметку в формате Word или pdf, примеры в формате архива
Стандартная последовательность шагов при этом следующая:
- Вставьте новую форму UserForm в проект VBAProject рабочей книги.
- Добавьте элементы управления в форму UserForm.
- Настройте свойства добавленных элементов управления.
- Создайте процедуры «обработчики событий» для элементов управления. Эти процедуры добавляются в модуль кода UserForm и выполняются при возникновении различных событий (например, при щелчке на кнопке).
- Разработайте процедуру, которая отображает форму UserForm. Эта процедура находится в модуле VBA (а не в модуле кода для формы UserForm).
- Определите простой способ вызова на выполнение процедуры, созданной в п. 5. Можно поместить кнопку на рабочий лист, команду ленты и т.д.
Рассмотрим эти шаги подробнее.
Вставка новой формы UserForm
Чтобы добавить в проект форму UserForm, запустите VBE (например, нажав в Excel клавиши <Alt+F11>), выберите рабочую книгу в окне Project и выполните команду Inserts –> UserForm). Формы UserForm получают такие имена, как UserForm1, UserForm2 и т.д. Можно переименовать форму, изменив свойство Name в окне Properties (см. рис. 1). Если это окно не отображается, нажмите в VBE клавишу <F4>. В рабочей книге может быть произвольное количество форм UserForm, а каждая форма включает единственное пользовательское диалоговое окно.
Добавление элементов управления в пользовательское диалоговое окно
Чтобы добавить элементы управления в форму UserForm, воспользуйтесь панелью Toolbox. Обратите внимание, что в VBE отсутствуют команды меню, предназначенные для добавления элементов управления. Если панель Toolbox не отображена на экране, пройдите по меню View –> Toolbox (рис. 2).
Рис. 2. Окно Toolbox для добавления элементов управления в пользовательскую форму
Щелкните на той кнопке в панели Toolbox, которая соответствует добавляемому элементу управления. После этого щелкните внутри диалогового окна для создания элемента управления (используется размер элемента по умолчанию). Также можно щелкнуть на элементе управления и, перетащив его границы в диалоговом окне, задать необходимый размер в пользовательском диалоговом окне. Добавленному элементу управления назначается имя, которое состоит из названия типа элемента управления и числового кода. Рекомендуется их переименовать, чтобы в коде VBA было понятно, с чем вы имеете дело. Согласитесь, что РrоductListBox звучит лучше, чем ListBox1.
Элементы управления в окне Toolbox
Форма UserForm, которая показана на рис. 3, размещена в файле all userform controls.xlsm.
Рис. 3. Эта форма UserForm содержит 15 элементов управления
Элемент управления CheckBox (6) предоставляет пользователю возможность выбрать один из двух вариантов: включить или выключить. Если галочка установлена, то CheckBox имеет значение True, в противном случае – False.
ComboBox (4) подобен объекту ListBox (5). Отличие заключается в том, что ComboBox представляет раскрывающийся список, в котором в определенный момент времени отображается только одно значение. Кроме того, пользователю в поле списка разрешено вводить значение, которое необязательно представляет одну из опций объекта ComboBox.
Каждое создаваемое диалоговое окно будет иметь как минимум один элемент управления CommandButton (10). Обычно используются кнопки ОК и Отмена.
Элемент управления Frame (9) применяется в качестве оболочки для других элементов управления. Он добавляется в диалоговое окно либо в целях эстетики, либо из соображений логического группирования однотипных элементов управления. Элемент управления Frame требуется в случае, если в диалоговом окне содержится более одного набора элементов управления OptionButton.
Элемент управления Image (15) используется для представления графического изображения, которое сохранено в отдельном файле или вставляется из буфера обмена. Графическое изображение сохраняется вместе с рабочей книгой. Таким образом, вместе с рабочей книгой передавать другому пользователю копию графического файла необязательно. Некоторые графические файлы занимают много места, поэтому их включение в рабочую книгу приведет к радикальному увеличению ее размера.
Элемент управления Label (2) отображает текст в диалоговом окне.
Элемент управления ListBox (5) предоставляет список опций, из которого пользователь может выбрать один вариант (или несколько). Вы вправе указать диапазон на листе, который содержит элементы списка. Этот диапазон может состоять из нескольких столбцов. Кроме того, элемент управления ListBox может заполняться с помощью кода VBA.
Элемент управления MultiPage (12) позволяет создавать диалоговые окна с несколькими вкладками, которые подобны появляющимся после выбора команды Формат ячеек. По умолчанию элемент управления MultiPage состоит из двух вкладок.
Элемент управления OptionButton (7) применяется при выборе пользователем одного варианта из нескольких. Эти элементы управления всегда группируются в диалоговом окне в наборы, содержащие не менее двух опций. Когда один элемент управления OptionButton выбран, все остальные элементы управления OptionButton текущей группы автоматически становятся неактивными. Если в пользовательском диалоговом окне содержится более одного набора элементов управления OptionButton, то каждый из таких наборов должен иметь собственное значение свойства GroupName. В противном случае все элементы управления OptionButton в диалоговом окне рассматриваются как члены одной группы. Также можно вставить элементы управления OptionButton в объект Frame, что приведет к их автоматическому группированию.
Элемент управления RefEdit (16) используется тогда, когда пользователь должен выделить диапазон ячеек на листе.
Элемент управления ScrollBar (13) в некотором смысле подобен элементу управления SpinButton. Разница заключается в том, что пользователь может перетаскивать ползунок объекта ScrollBar для изменения значения с большим приращением. Элемент управления ScrollBar рекомендуется использовать при выборе значения из большого диапазона.
Элемент управления SpinButton (14) позволяет выбрать значение после щелчка на одной из двух кнопок со стрелками. Одна из них применяется для увеличения значения, а вторая — для уменьшения. Элемент управления SpinButton часто используется совместно с элементами управления TextBox и Label, которые содержат текущее значение элемента управления SpinButton.
Элемент управления TabStrip (11) подобен элементу управления MultiPage, однако использовать его сложнее. Элемент управления TabStrip, в отличие от MultiPage, не выступает контейнером для других объектов. Как правило, элемент управления MultiPage обладает более широкими возможностями.
Элемент управления TextBox (3) позволяет пользователям вводить текст в диалоговом окне.
Элемент управления ToggleButton (8) имеет два состояния: включен и выключен. Щелчок на кнопке приводит к изменению состояния на противоположное и к изменению внешнего вида кнопки. Этот элемент управления может иметь значение True (активен) или False (неактивен). Он не относится к «стандартным» элементам управления, поэтому использование двух элементов управления OptionButton или одного CheckBox может оказаться более удачным вариантом.
Использование элементов управления на рабочем листе
Элементы управления пользовательскими диалоговыми окнами могут встраиваться в рабочий лист (без использования UserForm). Доступ к элементам управления можно получить, пройдя в Excel Разработчик –> Элементы управления –> Вставить. Для использования подобных элементов в составе рабочего листа требуется гораздо меньше усилий, чем для создания пользовательского диалогового окна. Кроме того, в данном случае можно не создавать макросы, поскольку элемент управления можно связать с ячейкой рабочего листа.
Например, если на рабочий лист вставить элемент управления CheckBox, его можно связать с нужной ячейкой, задав свойство LinkedCell. Если флажок установлен, в связанной ячейке отображается значение ИСТИНА. Если же флажок сброшен, то в связанной ячейке отображается значение ЛОЖЬ. Например, на рис. 4 переключатель «Фикс. Ставка 20%» связан с ячейкой Н15. Рисунок отображает рабочий лист, содержащий некоторые элементы управления ActiveX (см. файл activex worksheet controls.xlsx). Книга включает связанные ячейки и не содержит макросов.
Рис. 4. Элементы управления ActiveX без макросов
Элементы управления на рабочем листе могут происходить из двух источников:
- Элементы управления формами. Эти элементы управления являются внедряемыми объектами.
- Элементы управления ActiveX. Эти элементы управления являются подмножеством элементов, доступных в пользовательских диалоговых окнах.
Эти элементы управления работают не одинаково. После добавления элемента управления ActiveX в рабочий лист Excel переходит в режим конструктора. В этом режиме можно настраивать свойства любого элемента управления рабочего листа, добавлять или изменять процедуры обработки событий для элемента управления, а также изменять его размер или положение. Для отображения окна свойств элемента управления ActiveX воспользуйтесь командой Разработчик –> Элементы управления –> Свойства.
Для создания простых кнопок можно использовать элемент управления Button (Кнопка), который находится на панели инструментов Формы (Form). В этом случае обеспечивается возможность запуска макроса. Если же воспользоваться элементом управления CommandButton, который относится к группе элементов управления ActiveX, то после щелчка на нем вызывается связанная процедура обработки событий (например, CommandButton1_Click), которая находится в модуле кода объекта Лист (Sheet). Связать макрос с этой процедурой нельзя.
Если Excel находится в режиме конструктора, тестирование элементов управления невозможно. В этом случае нужно выйти из режима конструктора, щелкнув на кнопке Разработчик –> Элементы управления –> Режим конструктора. Эта кнопка работает, как переключатель.
Настройка элементов управления пользовательского диалогового окна
Продолжим описание использования элементов управления в UserForm. После того, как элементов управления помещен в диалоговое окно, его можно переместить и изменить размер. Можно выделить несколько элементов управления. Для этого следует удерживать нажатой клавишу <Shift> и щелкать на объектах либо обвести указателем мыши необходимые элементы управления.
В форме UserForm содержатся вертикальные и горизонтальные направляющие, которые помогают выровнять добавленные в диалоговое окно элементы управления. При добавлении или перемещении элемент управления привязывается к направляющим, что облегчает упорядочение таких элементов в окне. Если вы не используете направляющие, можете их отключить, выбрав в VBE команду Tools –> Options. В диалоговом окне Options перейдите на вкладку General и выберите соответствующие параметры в разделе Form Grid Settings.
Меню Format окна VBE предоставляет несколько команд, которые позволяют точно разместить и выровнять элементы управления в диалоговом окне. Перед использованием этих команд необходимо указать элементы управления, к которым они будут применяться (рис. 5).
Рис. 5. Выравнивание элементов в форме UserForm
Если выделено несколько элементов управления, на выделяющей рамке одного из них (обычно последнего) вместо обычных черных маркеров появляются белые. Это означает, что этот элемент управления играет роль основы, на базе которой определяются размеры и расположение других элементов управления.
Изменение свойств элементов управления
Каждый элемент управления характеризуется набором параметров, которые определяют внешний вид и поведение элемента управления. Свойства элемента управления можно изменять в следующих случаях:
- В момент проектирования при разработке пользовательского диалогового окна. Для этого используется окно Properties.
- В процессе выполнения, когда пользовательское диалоговое окно отображается на экране. Для этого воспользуйтесь инструкциями VBA.
Работа с окном Properties. В VBE окно Properties позволяет изменять свойства выделенного элемента управления (это может быть обычный элемент управления или сама форма UserForm, рис. 6).
Рис. 6. Окно Properties для выделенного элемента управления OptionButton
В окне Properties есть две вкладки. На вкладке Alphabetic свойства выбранного объекта отображаются в алфавитном порядке. На вкладке Categorized эти свойства сгруппированы по категориям. Обе вкладки отображают одни и те же свойства.
Для того чтобы изменить свойство, необходимо щелкнуть на нем и ввести новое значение. Некоторые свойства могут принимать только ограниченный набор допустимых значений, выбираемых из соответствующего списка. После щелчка на таком свойстве в окне Properties будет отображена кнопка со стрелкой, указывающей вниз. Щелкните на этой кнопке, чтобы выбрать значение из предложенного списка. Например, свойство TextAlign может принимать одно из следующих значений: 1 — fmTextAlignLeft, 2 — fmTextAlignCenter и 3 — fmTextAlignRight.
После выделения отдельных свойств (например, Font и Picture) рядом с ними отображается небольшая кнопка с троеточием. Щелчок на этой кнопке приводит к вызову диалогового окна настройки свойства.
Для свойства Picture элемента управления Image необходимо указать графический файл или вставить изображение из буфера обмена. В последнем случае следует сначала скопировать его в буфер обмена, а затем выбрать свойство Picture элемента управления Image и нажать комбинацию клавиш <Ctrl+V> для вставки содержимого буфера обмена. Если выделить два или более элементов управления одновременно, в окне Properties отобразятся только те свойства, которые являются общими для этих объектов.
Объекту UserForm присущ ряд свойств, значения которых можно изменять. Эти свойства применяются в качестве значений, заданных по умолчанию, для элементов управления, которые добавляются в пользовательские диалоговые окна. Например, если изменить свойство Font пользовательского диалогового окна, все добавленные в окно элементы управления будут применять этот шрифт.
Общие свойства. Каждый элемент управления имеет как собственный набор уникальных свойств, так и ряд общих свойств, присущих другим элементам управления. Например, все элементы управления имеют свойство Name и свойства, определяющие его размер и расположение на форме (Height, Width, Left и Right). Если вы собираетесь работать с элементом управления с помощью кода VBA, присвойте ему значащее имя. Например, первый элемент управления OptionButton, который добавлен в пользовательское диалоговое окно, по умолчанию получит имя ОрtionButton1. В коде ссылка на этот объект будет выглядеть следующим образом: OptionButton1.Value = True. Но если элементу управления OptionButton присвоить описательное имя (например, obLandscape), то можно использовать такой оператор: obLandscape.Value = True.
Многие пользователи предпочитают имена, которые указывают на тип объекта. В предыдущем примере был использован префикс ob, который указывает на то, что объект является элементом управления OptionButton.
Можно изменять значения свойств нескольких элементов управления одновременно. Например, вы вправе создать на форме несколько элементов управления OptionButton и выровнять их по левому краю. Для этого достаточно выделить все элементы управления OptionButton и изменить значение свойства Left в окне Properties. Все выделенные элементы управления примут новое значение свойства Left.
Чтобы получить доступ к справочной информации о свойствах различных элементов управления, щелкните на свойстве в окне Properties и нажмите клавишу <F1>.
Советы по использованию клавиатуры. Многие пользователи предпочитают перемещаться по диалоговым окнам с помощью клавиатуры. Комбинации клавиш <Таb> и <Shift+Tab> позволяют циклически переключаться между элементами управления. Чтобы удостовериться, что диалоговое окно корректно реагирует на команды с клавиатуры, обратите внимание на такие моменты: порядок просмотра элементов управления и комбинации клавиш.
Порядок просмотра определяет последовательность, в которой активизируются элементы управления после нажатия пользователем клавиши <Таb> или комбинации клавиш <Shift+Tab>. Кроме того, порядок активизации указывает, какой элемент управления по умолчанию выделяется на форме первым. Если пользователь вводит текст в элемент управления TextBox, то этот элемент считается активным. Если после этого щелкнуть на элементе управления OptionButton, то именно он станет активным. Элемент управления, назначенный первым для просмотра, будет активным в момент открытия диалогового окна.
Для того чтобы указать порядок активизации, выберите команду View –> Tab Order. Кроме того, можно щелкнуть правой кнопкой мыши на UserForm и выбрать пункт Тab Order из появившегося контекстного меню. Excel отобразит диалоговое окно Tab Order (Порядок просмотра, рис. 7).
Рис. 7. В диалоговом окне Tab Order измените порядок просмотра элементов управления
Также можно указать порядок активизации элемента управления с помощью окна Properties (см. рис. 6, самое последнее из отраженных свойств). Первый активизируемый элемент управления будет иметь свойство Tablndex = 0. Изменение значения свойства Tablndex текущero объекта приведет к изменению значений свойств Tablndex других элементов правления. Изменения вносятся автоматически. Вы можете удостовериться в том, что значения свойства Tablndex всех элементов управления не больше количества элементов управления в диалоговом окне. Если нужно удалить элемент управления из списка активизируемых объектов, то присвойте его свойству TabStop значение False.
Одни элементы управления, такие как Frame и MultiPage, служат контейнерами для других элементов управления. Элементы управления в таком контейнере имеют собственный порядок просмотра (активизации). Для установки порядка просмотра группы элементов управления OptionButtons, находящихся внутри элемента управления Frame, выделите элемент управления Frame до того, как будет выполнена команда View –> Tab Order.
Большинству элементов управления диалогового окна можно назначить комбинацию клавиш. Таким образом, пользователь получит доступ к элементу управления, нажав <Alt> и указанную клавишу. Применив свойство Accelerator в окне Properties, можно определить клавишу для активизации элемента управления.
Некоторые элементы управления, например, TextBox, лишены свойства Accelerator, поскольку не отображают значение свойства Caption. Но к таким элементам можно получить доступ с помощью клавиатуры, воспользовавшись свойством Label. Присвойте клавишу элементу управления Label и расположите его в порядке просмотра перед элементом TextBox.
Отображение пользовательского диалогового окна
Для того чтобы отобразить пользовательское диалоговое окно с помощью VBA, необходимо создать процедуру, которая вызывает метод Show объекта UserForm. Форму UserForm невозможно отобразить, не выполнив как минимум одну строку кода VBA:
Sub ShowForm() UserForm1.Show End Sub |
Данная процедура должна располагаться в стандартном модуле VBA, а не в модуле формы UserForm. При отображении пользовательская форма остается на экране до тех пор, пока ее не скроют. Обычно в нее добавляют элемент управления CommandButton, который запускает процедуру закрытия формы. Эта процедура либо выгружает пользовательскую форму с помощью метода Unload, либо удаляет ее с экрана с помощью метода Hide объекта UserForm.
Отображение немодальной формы. По умолчанию отображается модальная форма. Это означает, что форма должна исчезнуть с экрана прежде, чем пользователь выполнит какие-либо действия на рабочем листе (т.е. редактирование данных невозможно). Немодальную форму также можно отобразить. В этом случае вы вправе продолжать работу в Excel, не скрывая саму форму. Для отображения немодальной формы используется следующий синтаксис:
UserForm1.Show vbModeless
Тестирование пользовательского диалогового окна. Обычно в процессе разработки возникает необходимость в тестировании формы UserForm. Для этого можно воспользоваться одним из способов:
- выполните команду Run –> Run Sub/UserForm;
- нажмите <F5>;
- щелкните на кнопке Run Sub/UserForm, которая находится на стандартной панели инструментов.
Выбор одного из этих методов приводит к запуску события инициализации диалогового окна. Как только диалоговое окно будет отображено в тестовом режиме, можно проверить порядок активизации объектов, а также поддержку комбинаций клавиш.
Отображение пользовательского диалогового окна на основе значения переменной. В некоторых случаях приходится выбирать, какое окно UserForm будет отображено. Если название пользовательского диалогового окна хранится в виде строковой переменной, можно воспользоваться методом Add для добавления объекта UserForm в коллекцию UserForms с последующим обращением к методу Show из коллекции UserForms. В приведенном ниже примере название объекта UserForm присваивается переменной MyForm, после чего отображается пользовательское диалоговое окно.
MyForm = «UserForm1» UserForms.Add(MyForm).Show |
Загрузка пользовательского диалогового окна. В VBA поддерживается оператор Load. Загрузка пользовательского диалогового окна приводит к сохранению объекта формы в памяти. Однако до тех пор пока не будет выполнен метод Show, форма останется невидимой для остальной части программы. Для загрузки окна UserForm1 воспользуйтесь оператором:
Load UserForm1
Если вы применяете сложное диалоговое окно, то вам может понадобиться предварительно загрузить его в память, чтобы в случае необходимости быстро отобразить его с помощью метода Show. Как правило, использовать метод Load в подобном случае не имеет смысла.
О процедурах обработки событий. Как только диалоговое окно появляется на экране, пользователь начинает с ним взаимодействовать, т.е. генерирует события. Например, щелчок на элементе управления CommandButton приводит к возникновению события Click объекта CommandButton. Вам необходимо создать процедуры (обработчики событий), которые будут выполняться при возникновении соответствующих событий.
Процедуры обработки событий находятся в модуле кода объекта UserForm. Наряду с этим процедура обработки события может вызывать другие процедуры, которые находятся в стандартном модуле VBA.
В коде VBA можно изменять свойства элементов управления, пока пользовательское диалоговое окно отображается на экране (т.е. на этапе выполнения). Например, можно назначить элементу управления ListBox процедуру, которая изменяет текст элемента управления Label при выборе элемента списка.
Закрытие пользовательского диалогового окна
Для закрытия формы UserForm1 воспользуйтесь командой: Unload UserForm1. Если же код находится в модуле кода формы UserForm, воспользуйтесь оператором: Unload Me. В этом случае ключевое слово Me применяется для идентификации пользовательской формы.
Обычно в коде VBA команда Unload выполняется только после того, как форма UserForm выполнит все свои функции. Например, форма UserForm может содержать элемент управления CommandButton, который используется в качестве кнопки ОК. Щелчок на этой кнопке приводит к выполнению заранее определенного макроса. Одна из функций макроса заключается в выгрузке формы UserForm из памяти. В результате пользовательское диалоговое окно отображается на экране до тех пор, пока макрос, содержащий оператор Unload, не завершает свою работу.
Когда форма UserForm выгружается из памяти, элементы управления, содержавшиеся на ней, возвращаются в первоначальное состояние. Другими словами, в коде нельзя обращаться к значениям, указываемым пользователем, после того как форма будет выгружена из памяти. Если значения, введенные пользователем, будут применяться позже (после выгрузки диалогового окна UserForm), то необходимо присвоить их переменной с областью действия Public, которая определена в стандартном модуле VBA. Кроме того, значение всегда можно сохранить в ячейке листа.
Окно формы UserForm автоматически выгружается из памяти после того, как пользователь щелкает на кнопке Закрыть (обозначается символом х в заголовке окна). Это действие также приводит к возникновению события QueryClose объекта UserForm, за которым следует событие Terminate пользовательского диалогового окна. Объект UserForm может использовать метод Hide. После его вызова диалоговое окно исчезает, но остается в памяти, поэтому в коде можно получить доступ к различным свойствам элементов управления:
UserForml.Hide
Если ваш код находится в модуле кода объекта UserForm, можно воспользоваться оператором:
Me.Hide
Если по какой-либо причине пользовательское диалоговое окно должно быть немедленно скрыто в процессе выполнения макроса, воспользуйтесь методом Hide в самом начале процедуры, а затем укажите команду DoEvents. Например, в следующей процедуре форма UserForm немедленно исчезнет после того, как пользователь щелкнет на кнопке CommandButton1. Последний оператор процедуры выгружает пользовательское диалоговое окно из памяти.
Private Sub CommandButton1_Click() Me.Hide Application.ScreenUpdating = True For r = 1 To 10000 Cells(r, 1) = r Next r Unload Me End Sub |
В рассматриваемом примере переменной ScreenUpdating присвоено значение True, в результате чего Excel полностью скрывает окно UserForm. Если этот оператор не использовать, окно UserForm остается видимым.
Пример создания пользовательского диалогового окна
В примере представлено диалоговое окно, предназначенное для получения имени и пола пользователя. В диалоговом окне вы найдете элемент управления TextBox, используемый для ввода имени, и два элемента управления OptionButton для указания пола. Информация, полученная в диалоговом окне, заносится в пустую строку рабочего листа.
Создание пользовательской формы. Создайте рабочую книгу, содержащую только один рабочий лист. Нажмите комбинацию клавиш <Alt+F11> для активизации VBE. В окне Project выберите проект рабочей книги и выполните команду Inserts –> UserForm. Воспользуйтесь окном Properties для изменения значения свойства Caption формы UserForm на Укажите имя и пол (если окно Properties не отображается, нажмите <F4>).
Рис. 8. Создание пользовательской формы
Добавьте элемент управления Label и настройте его свойства (рис. 9):
Свойство Значение
Accelerator И
Caption Имя:
Tablndex 0
Рис. 9. Пользовательская форма с элементами управления
Добавьте элемент управления TextBox и измените его свойства:
Name TextName
Tablndex 1
Добавьте элемент управления Frame и измените его свойства:
Caption Пол
Tablndex 2
Добавьте элемент управления OptionButton в состав элемента Frame и измените его свойства:
Accelerator М
Caption Мужчина
Name OptionMale
Tablndex 0
Добавьте еще один элемент управления OptionButton в состав элемента Frame и измените его свойства:
Accelerator Ж
Caption Женщина
Name OptionFemale
Tablndex 1
Добавьте элемент управления CommandButton за пределами элемента Frame и измените его свойства:
Caption OK
Default True
Name OKButton
Tablndex 3
Добавьте еще один элемент управления CommandButton и настройте его свойства:
Caption Отмена
Default False
Name CloseKButton
Tablndex 4
При создании нескольких похожих элементов управления может оказаться, что быстрее копировать существующий элемент управления, чем создавать новый. Для копирования элемента управления удерживайте нажатой клавишу <Ctrl> при перетаскивании элемента управления, что приведет к созданию копии. После этого останется изменить свойства скопированного элемента управления.
Создание кода для отображения диалогового окна. После создания элементов управления на лист необходимо добавить элемент управления ActiveX, называемый Кнопка (CommandButton). Эта кнопка будет запускать процедуру, которая предназначена для отображения формы UserForm. Для этого выполните следующие действия:
- Перейдите в окно Excel (например, воспользуйтесь комбинацией клавиш <Alt+F11>).
- Выберите команду Разработчика –> Элементы управления –> Вставить и щелкните на значке Кнопка (CommandButton), который находится в разделе Элементы ActiveX.
- Разместите кнопку на рабочем листе. Чтобы измените ее подпись, щелкните на кнопке правой кнопкой мыши и выберите в контекстном меню команду Объект CommandButton –> Edit. Для изменения других свойств объекта щелкните на нем правой кнопкой мыши и выберите команду Properties.
- Дважды щелкните на объекте CommandButton. Это приведет к активизации VBE. При этом отобразится модуль кода для листа с открытой пустой процедурой обработки событий объекта CommandButton, который расположен на рабочем листе.
- Введите единственный оператор в процедуру CommandButton1_Click (рис. 10). В процедуре используется метод Show объекта UserForml для отображения пользовательского диалогового окна.
Рис. 10. Процедура CommandButton1_Click вызывается после щелчка на кнопке рабочего листа
Тестирование диалогового окна. После щелчка на кнопке, находящейся на рабочем листе, ничего не произойдет. Точнее, кнопка будет выделена, но это не приведет к инициализации каких-либо действий. Причина этого заключается в том, что программа Excel по-прежнему остается в режиме конструктора, в который она переходит автоматически после добавления элемента управления ActiveX. Для выхода из режима конструктора щелкните на кнопке Разработчик –> Элементы управления –> Режим конструктора. Если же требуется изменить кнопку, снова перейдите в режим конструктора. После выхода из режима конструктора щелчок на кнопке приведет к отображению пользовательского диалогового окна.
Когда диалоговое окно будет отображено, введите произвольный текст в текстовом поле и щелкните на кнопке ОК. В результате ничего не произойдет, что совершенно естественно, так как для объекта UserForm не создано ни одной процедуры обработки событий. Для закрытия диалогового окна щелкните на крестике в его заголовке.
Добавление процедур обработки событий. Перейдите в VBE. Удостоверьтесь в том, что пользовательское окно отображено на экране, и дважды щелкните на кнопке Отмена. Активизируется окно кода для формы UserForm, а также добавляется пустая процедура CloseButton_Click. Обратите внимание, что название процедуры состоит из имени объекта, символа подчеркивания и названия обрабатываемого события. Добавьте в процедуру единственный оператор:
Private Sub CloseButton_Click() Unload UserForm1 End Sub |
Эта процедура, которая вызывается после щелчка на кнопке Отмена, выгружает из памяти форму UserForm1.
Щелкните на значке View Object в верхней части окна Project Explorer или дважды кликните на строке UserForm1, чтобы отобразить форму UserForm1. Дважды щелкните на кнопке ОК и введите код процедуры – обработчика событий для события Click объекта OKButton:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
Private Sub OKButton_Click() Dim NextRow As Long ‘ Проверка активности листа Лист1 Sheets(«Лист1»).Activate ‘ Проверка ввода имени If TextName.Text = «» Then MsgBox «Введите имя.» TextName.SetFocus Exit Sub End If ‘ Определение следующей пустой строки NextRow = _ Application.WorksheetFunction.CountA(Range(«A:A»)) + 1 ‘ Передача имени Cells(NextRow, 1) = TextName.Text ‘ Передача пола If OptionMale Then Cells(NextRow, 2) = «Мужчина» If OptionFemale Then Cells(NextRow, 2) = «Женщина» ‘ Очистка элементов управления для ввода следующей записи TextName.Text = «» TextName.SetFocus OptionMale = False OptionFemale = False End Sub |
Перейдите в Excel и щелкните на кнопке еще раз, чтобы отобразить пользовательское диалоговое окно. С его помощью можно добавлять новые имена в рабочий лист.
Процедура OKButton_Click работает следующим образом. Сначала она проверяет, активен ли лист Лист1, введено ли имя. После этого запускается функция Excel СЧЁТЗ (CountA) для определения следующей пустой ячейки в столбце А. Затем текст из текстового поля TextBox передается в определенную ячейку столбца А. С помощью операторов If определяется выделенный элемент управления OptionButton, что обеспечивает запись соответствующего текста в столбец В (пол). Далее элементы диалогового окна очищаются и окно перезапускается, чтобы обеспечить возможность введения следующей записи. Заметим, что щелчок на кнопке ОК не приведет к закрытию диалогового окна. Для завершения ввода данных (и выгрузки пользовательского диалогового окна) щелкните на кнопке Отмена.
Проверьте работоспособность комбинаций клавиш: Alt+М – активизирует мужской пол, Alt+Ж – женский. Рабочая книга с рассмотренным примером находится в файле get name and sex.xlsm.
События объекта User Form
Каждый элемент управления в форме UserForm (а также сам объект UserForm) разрабатывается для того, чтобы реагировать на определенные события. Эти события возникают в результате действий пользователя или генерируются программой Excel. Можно создать код, который будет выполняться при возникновении определенного события. Некоторые действия приводят к возникновению сразу нескольких событий. Например, щелчок на кнопке со стрелкой, направленной вверх, в элементе управления SpinButton приведет к возникновению события SpinUp и события Change. После того как пользовательское диалоговое окно будет отображено с помощью метода Show, Excel сгенерирует события Initialize и Activate объекта UserForm. В Excel также поддерживаются события, связанные с объектами Sheet (Лист), Chart (Диаграмма) и ThisWorkbook (ЭтаКнига).
Получение дополнительных сведений о событиях. Для того чтобы получить информацию о событиях, которые генерируются конкретным элементом управления, выполните следующее:
- Добавьте элемент управления в пользовательское диалоговое окно.
- Дважды щелкните на элементе управления, чтобы открыть модуль кода для объекта UserForm. VBE вставит пустую процедуру обработки события, принятого по умолчанию.
- Щелкните на раскрывающемся списке в правом верхнем углу окна модуля и просмотрите полный список событий, которые поддерживаются текущим элементом управления (на рис. 11 показан список событий для элемента управления CheckBox).
- Выберите событие из списка, и VBE создаст пустой обработчик события.
Рис. 11. Список событий для элемента управления CheckBox
Имя процедуры обработки событий включает имя объекта, который сгенерировал событие. Таким образом, если изменить имя элемента управления, придется внести соответствующие изменения и в имя процедуры обработки события. Имя процедуры не изменяется автоматически! Чтобы облегчить работу, присвойте описательные имена элементам управления до того, как приступите к созданию процедуры обработки соответствующих событий.
События объекта UserForm. Несколько событий непосредственно связано с отображением и выгрузкой объекта UserForm:
- Происходит перед загрузкой и отображением формы UserForm. Не происходит, если объект UserForm до этого был скрыт.
- Происходит в момент активизации объекта UserForm.
- Происходит в момент деактивизации объекта UserForm. Не происходит при сокрытии формы UserForm.
- Происходит перед выгрузкой объекта UserForm.
- Происходит после выгрузки объекта UserForm.
Важно правильно выбрать подходящее событие для процедуры обработки событий, а также проанализировать порядок выполнения событий. Использование метода Show приводит к возникновению событий Initialize и Activate (в указанном порядке). Применение команды Load приводит к вызову события Initialize. Команда Unload вызывает события QueryClose и Terminate (в указанном порядке). Метод Hide не приводит к вызову каких-либо событий.
В файле userform events.xlsm описанные события перехватываются и в момент возникновения события возникает окно сообщения. Если изучение событий объекта UserForm вызывает у вас затруднения, то, проанализировав код этого примера, вы получите ответы на многие вопросы.
События элемента управления SpinButton. Для того чтобы разобраться в концепции событий, мы подробно рассмотрим события, связанные с элементом управления SpinButton (рис. 12). Файл spinbutton events.xlsm демонстрирует применение событий, генерируемых объектами SpinButton и UserForm (первый содержится во втором). Рабочая книга включает несколько процедур обработки событий — по одной для каждого события элемента управления SpinButton и объекта UserForm. Каждая из этих процедур добавляет текст в столбце А с описанием события.
Рис. 12. События элемента управления SpinButton
Пользователь может управлять объектом SpinButton с помощью мыши или (если элемент управления активен) клавиш управления курсором. Когда пользователь щелкает мышью на верхней кнопке элемента управления SpinButton, происходят следующие события: Enter (генерируется только в том случае, если элемент управления неактивен); Change; SpinUp.
Пользователь может нажать клавишу <Таb> для того, чтобы сделать активным элемент управления SpinButton. Только после этого можно использовать клавиши управления курсором для изменения значения элемента управления. Если все именно так и происходит, то события генерируются в следующем порядке: Enter; KeyDown; Change; SpinUp (или SpinDown); KeyUp.
Элемент управления SpinButton может изменяться в коде VBA, что также провоцирует возникновение соответствующих событий. Например, оператор SpinButton1.Value = 0 устанавливает свойство Value элемента управления SpinButton1 равным 0, а это приводит к возникновению события Change. Такой результат достигается только в том случае, если исходное свойство Value не равно нулю.
Вы вправе предположить, что выполнить отмену генерирования событий можно, установив свойство EnableEvents объекта Application равным False. Но это свойство поддерживается только объектами, которые являются «истинными» в Excel: Workbook, Worksheet и Chart.
Совместное использование элементов управления SpinButton и TextBox. Элемент управления SpinButton имеет свойство Value, но не может отображать значение этого свойства. В большинстве случаев требуется, чтобы пользователь мог изменить значение элемента управления SpinButton непосредственно, а не многократно щелкая на элементе управления. Эффективным решением может стать объединение элемента управления SpinButton с элементом управления TextBox, что позволяет пользователю вводить значение элемента управления SpinButton непосредственно, используя для этого поле элемента управления TextBox. Кроме того, щелчок на элементе управления SpinButton позволит изменить значение, отображаемое в элементе управления TextBox.
На рис. 13 приведен пример (см. также файл spinbutton and textbox.xlsm). Свойство Min элемента управления SpinButton имеет значение 1, а свойство Мах— значение 100. Таким образом, щелчок на одной из стрелок элемента управления SpinButton приведет к изменению значения в пределах от 1 до 100. Код, реализующий «связывание» элементов управления SpinButton и TextBox сводится к созданию процедур обработки событий, которые будут синхронизировать свойство Value элемента управления SpinButton и свойство Text элемента управления TextBox.
Рис. 13. Комбинирование элементов управления SpinButton и TextBox
Представленная процедура выполняется каждый раз при возникновении события Change элемента управления SpinButton. Таким образом, процедура выполняется тогда, когда пользователь щелкает на элементе управления SpinButton или изменяет его значение, нажав одну из клавиш управления курсором.
Private Sub SpinButton1_Change() TextBox1.Text = SpinButton1.Value End Sub |
Если пользователь введет значение непосредственно в элемент управления TextBox, то будет сгенерировано событие Change, после чего должен выполняться следующий код:
Private Sub TextBox1_Change() Dim NewVal As Integer NewVal = Val(TextBox1.Text) If NewVal >= SpinButton1.Min And _ NewVal <= SpinButton1.Max Then _ SpinButton1.Value = NewVal End Sub |
Эта процедура начинается с вызова функции VBA Val, которая преобразует текст элемента управления TextBox в числовое значение (если элемент управления TextBox содержит строку, то функция Val возвращает значение 0). Следующий оператор определяет, попадает ли значение в указанный диапазон допустимых значений. Если это так, то свойство Value элемента управления SpinButton устанавливается равным значению, которое введено в поле элемента управления TextBox.
Пример организован таким образом, что щелчок на кнопке ОК (которая называется OKButton) передает значение элемента управления SpinButton в активную ячейку. Процедура обработки события Click элемента управления CommandButton выглядит следующим образом:
Private Sub OKButton_Click() ‘ Enter the value into the active cell If CStr(SpinButton1.Value) = TextBox1.Text Then ActiveCell = SpinButton1.Value Unload Me Else MsgBox «Некорректная запись.», vbCritical TextBox1.SetFocus TextBox1.SelStart = 0 TextBox1.SelLength = Len(TextBox1.Text) End If End Sub |
Данная процедура выполняет проверку: анализируются текст, введенный в поле элемента управления TextBox, и значения элемента управления SpinButton. Такая процедура обрабатывает ситуации неверного ввода данных. Например, если пользователь введет в поле элемента управления TextBox текст Зt, то значение элемента управления SpinButton не изменится, а результат, который помещается в активную ячейку, будет отличным от ожидаемого. Обратите внимание, что значение свойства Value элемента управления SpinButton преобразуется в строку с помощью функции CStr. Это позволяет предотвратить ошибку, которая возникает, когда числовое значение сравнивается с текстовым. Если значение элемента управления SpinButton не соответствует содержимому элемента управления TextBox, то на экране отображается специальное сообщение. Причем объект TextBox активен, а его содержимое — выделено (с помощью свойств SelStart и SelLength). Таким образом, пользователю проще исправить неправильные значения.
О свойстве Tag. Каждый объект UserForm и каждый элемент управления имеет свойство Tag. Оно не представляет конечные данные и по умолчанию не имеет значения. Свойство Tag можно использовать для хранения информации, которая будет применена в программе. Например, можно создать набор элементов управления TextBox в пользовательском диалоговом окне. От пользователя требуется ввести текст только в некоторые из них. В отдельные поля вводить текст необязательно. Можно применять свойство Tag для идентификации полей, которые нужно заполнять. В таком случае значение свойства Tag — это строка, например, Required. Поэтому при написании кода обработки введенных пользователем данных можно ссылаться на свойство Tag.
Приведенный ниже пример представляет собой функцию, которая проверяет все элементы управления TextBox объекта UserForm1 и возвращает количество пустых текстовых полей, которые требуют ввода информации.
Function EmptyCount() Dim ctl As Control EmptyCount= 0 For Each ctl In UserFormi.Controls If TypeName(ctl) = «TextBox» Then If ctl.Tag = «Required» Then If ctl.Text = «» Then EmptyCount = EmptyCount + 1 End If End If End If Next ctl End Function |
Ссылка на элементы управления пользовательского диалогового окна
При работе с элементами управления, находящимися в форме UserForm, код VBA обычно содержится в модуле кода объекта UserForm. Кроме того, на элементы управления диалогового окна можно ссылаться из модуля кода VBA общего назначения. Для выполнения этой задачи необходимо задать правильную ссылку на элемент управления, указав имя объекта UserForm. В качестве примера рассмотрим процедуру, которая введена в модуле кода VBA. Эта процедура отображает пользовательское диалоговое окно, которое называется UserForm1.
Sub GetData () UserForm1.Show End Sub |
Предположим, что в диалоговом окне UserForm1 содержится текстовое поле TextBox1 и вам необходимо указать значение текстового поля по умолчанию:
Sub GetData() UserForm1.TextBox1.Value = «Джон Доу» UserForm1.Show End Sub |
Еще одним способом установки значения по умолчанию является использование события Initialize объекта UserForm. Можно написать код процедуры UserForm_Initialize, который будет располагаться в модуле кода диалогового окна:
Private Sub UserForm_Initialize() TextBox1.Value = «Джон Доу» End Sub |
Обратите внимание, что при обращении к элементу управления из модуля кода диалогового окна необязательно вводить в ссылку имя объекта UserForm. Подобное определение ссылок на элементы управления имеет свое преимущество: всегда можно воспользоваться средством Auto List Member, которое позволяет выбирать имена элементов управления из раскрывающегося списка.
Вместо того чтобы использовать фактическое имя объекта UserForm, предпочтительнее применить имя Me. В противном случае, если имя объекта UserForm изменится, вам придется изменять все ссылки (с его участием) в коде.
Использование коллекций элементов управления. Элементы управления пользовательских диалоговых окон образуют отдельную коллекцию. Например, следующий оператор отображает количество элементов управления в форме UserForm1:
MsgBox UserForm1.Controls.Count
В VBA не поддерживаются коллекции для каждого типа элемента управления. Например, не существует коллекции элементов управления CommandButton. Но тип элемента управления можно определить с помощью функции TypeName. Следующая процедура использует структуру For Each для циклического просмотра элементов коллекции Controls. В результате отображается количество элементов управления CommandButton, которые входят в коллекцию элементов управления объекта UserForm1 (этот код вы найдете в файле all userform controls.xlsm).
Sub CountButtons() Dim cbCount As Integer Dim ctl As Control cbCount = 0 For Each ctl In UserForm1.Controls If TypeName(ctl) = «CommandButton» Then _ cbCount = cbCount + 1 Next ctl MsgBox cbCount End Sub |
Настройка панели инструментов Toolbox
Если объект UserForm активен в редакторе VBE, на панели Toolbox отображаются элементы управления, которые можно добавить в пользовательское диалоговое окно. Панель Toolbox изначально содержит одну вкладку. Щелкните на ней правой кнопкой мыши и в контекстном меню выберите параметр New Page (Добавить страницу). Кроме того, можно изменить текст, который отображается на вкладке. Для этого выберите параметр Rename (Переименовать) из контекстного меню.
Рекомендуется предварительно настроить элементы управления и сохранить их для дальнейшего использования. Можно, например, в форме создать элемент управления CommandButton, который настроен на выполнение роли кнопки ОК. Можно изменять параметры кнопки: Width (Ширина), Height (Высота), Caption (Подпись), Default (По умолчанию) и Name (Имя). После этого перетащите модифицированный элемент управления CommandButton на панель инструментов Toolbox. Это приведет к созданию элемента управления. Щелкните на элементе управления правой кнопкой мыши, чтобы переименовать его или изменить значок.
Также можно создать раздел панели Toolbox, в котором будет содержаться несколько элементов управления. Например, вы вправе создать два элемента управления CommandButton, которые будут представлять кнопки ОК и Отмена. Настройте их так, как это необходимо. Затем выберите обе кнопки и переместите их на панель инструментов Toolbox. Впоследствии можно использовать новый элемент управления панели Toolbox для быстрого создания необходимых кнопок.
Этот метод также применим к элементам управления, которые используются в качестве контейнера. Например, создайте элемент управления Frame и добавьте в него четыре модифицированных элемента управления OptionButton (соответствующим образом расположив их на форме). После этого перетащите элемент управления Frame на панель инструментов Toolbox, чтобы создать модифицированный элемент управления Frame.
Можно разместить модифицированные элементы управления на отдельной вкладке панели Toolbox. Таким образом, появляется возможность экспортировать вкладку панели Toolbox для совместного применения другими пользователями Excel. Для экспорта вкладки панели Toolbox щелкните на ней правой кнопкой мыши и выберите пункт меню Export Page.
Среди прилагаемых к заметке файлов находится страничный файл под именем newcontrols.pag, который включает некоторые настроенные элементы управления. Можно импортировать этот файл в качестве новой вкладки окна Toolbox. Щелкните правой кнопкой мыши на вкладке и выберите команду Import Page. В результате панель Toolbox будет как на рис. 14.
Рис. 14. В окне Toolbox появилась страница с новыми элементами управления
Добавление элементов управления ActiveX
В пользовательском диалоговом окне содержатся и другие элементы управления ActiveX, разработанные компанией Microsoft и независимыми производителями. Для того чтобы добавить дополнительные элементы управления ActiveX на панель инструментов Toolbox, щелкните правой кнопкой мыши на ней и выберите пункт Additional Controls (Дополнительные элементы управления). В результате будет отображено диалоговое окно, показанное на рис. 15.
Рис. 15. В диалоговом окне Additional Controls можно найти дополнительные элементы управления ActiveX
В диалоговом окне Additional Controls содержатся все элементы управления ActiveX, установленные в системе. Выберите элементы управления, которые необходимо добавить на панель инструментов. После этого щелкните на кнопке ОК для добавления значков каждого из выбранных элементов управления. Не все элементы управления ActiveX, установленные в системе, поддерживаются пользовательскими диалоговыми окнами. Более того, большая их часть не поддерживается, к тому же некоторые элементы управления требуют лицензии на использование в приложениях. Если лицензия отсутствует, на экране появится сообщение об ошибке.
Создание шаблонов диалоговых окон
Зачастую при создании пользовательского диалогового окна каждый раз на форму добавляются одни и те же элементы управления. Например, все пользовательские диалоговые окна имеют два элемента управления CommandButton, используемых в качестве кнопок ОК и Отмена. В предыдущем разделе рассматривались методы комбинирования элементов управления с целью получения одного элемента управления, обладающего функциями двух. Еще одной программной уловкой может служить шаблон диалогового окна, который при необходимости импортируется для последующего создания на его основе других проектов. Преимущество шаблонного подхода заключается в следующем: процедуры обработки событий сохраняются вместе с шаблоном.
Начните с создания пользовательского диалогового окна, содержащего все элементы управления и настройки, которые необходимо повторно использовать в других проектах. После этого убедитесь, что диалоговое окно выделено. Выберите команду File –> Export File (или нажмите комбинацию клавиш <Ctrl+E>). После этого на экране появится запрос на ввод имени файла. Затем для создания проекта на основе шаблона выполните команду File –> lmport File, чтобы загрузить ранее сохраненное диалоговое окно.
Имитация диалоговых окон Excel. Внешний вид и поведение диалоговых окон Windows изменяются от программы к программе. При разработке приложений для Excel рекомендуется придерживаться стиля диалоговых окон Excel. Наилучшим методом изучения эффективных способов создания диалоговых окон является повторное создание одного из стандартных диалоговых окон Excel. Например, удостоверьтесь, что вы правильно определили комбинации клавиш и активизировали элементы управления. Для создания копии одного диалогового окна Excel следует протестировать его в различных условиях. Один только анализ диалоговых окон Excel поможет улучшить познания в вопросах структуры окон и методов создания элементов управления. Со временем вы убедитесь, что невозможно повторить отдельные диалоговые окна Excel даже с помощью VBA.
[1] По материалам книги Джон Уокенбах. Excel 2010. Профессиональное программирование на VBA. – М: Диалектика, 2013. – С. 405–438.