Excel макрос или activex

Содержание

  1. Включение и отключение параметров элементов ActiveX в файлах Office
  2. В этой статье
  3. Включение элементов ActiveX при появлении панели сообщений
  4. Включение элементов ActiveX в представлении Backstage
  5. Включение элементов ActiveX на один раз при появлении предупреждения системы безопасности
  6. Изменение параметров элементов ActiveX в Word, Access, Excel, PowerPoint, Publisher и Visio
  7. Описание параметров элементов ActiveX
  8. Что представляет собой элемент ActiveX и какие риски с ним связаны
  9. Риск и возможные последствия
  10. Excel макрос или activex
  11. Добавление и изменение макроса для элемента управления на листе
  12. Добавление и изменение макроса для управления формы
  13. Добавление и изменение макроса для ActiveX управления

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

Источник

Excel макрос или activex

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

Именно для удобства были созданы дополнительные графические элементы, чтобы пользователь быстро мог взаимодействовать с приложением. Однако есть элементы Form Controls и ActiveX Controls для выбора, какие использовать?

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

Небольшой пример элементов Form Controls:

Для выделения такого элемента нужно удерживать клавишу Ctrl и нажать по нему левой кнопкой мыши, тогда можно изменить размеры или передвинуть элемент в другое место. Если нажать правую кнопку мыши над элементом и выбрать пункт «Format Control» появится окно настроек, где на вкладке «Control» можно указать диапазон ячеек для получения данных и/или связную ячейку на листе.

Особенности элементов этого типа:

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

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

Небольшой пример элемента ActiveX:

Переключатель «Design Mode» должен быть активен если мы хотим редактировать ActiveX элементы, когда переключатель будет выключен готовые элементы можно будет использовать. Для отображения всех свойств этого графического объекта есть специальная кнопка «Properties» сразу возле переключателя «Design Mode».

Особенности элементов этого типа :

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

Источник

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

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

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

Запустите Visual Basic для приложений (VBA) для обработки событий, которые происходят, когда пользователь взаимодействует с ActiveX управления.

Дополнительные сведения о создании макроса см. в теме «Создание и удаление макроса».

Добавление и изменение макроса для управления формы

Щелкните правой кнопкой мыши нужный макрос и выберите «Назначить макрос».

Появится диалоговое окно «Назначение макроса».

Чтобы указать расположение существующего макроса, выберите его расположение в поле «Макрос» одним из следующих образом:

Чтобы найти макрос во всех открытых книгах, выберите «Все открытые книги».

Примечание: Если макрос, который вы хотите назначить этому средству управления, находится в отдельной книге, сначала откройте эту книгу, чтобы она была доступна в списке «Макрос».

Чтобы ограничить поиск макроса книгой, содержаной текущий книгу, выберите «Эта книга».

Чтобы ограничить поиск макроса определенной книгой, выберите ее из списка доступных имен открытых книг.

Выполните одно из указанных ниже действий.

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

Запись нового макроса Нажмите кнопку«Запись» и по завершению записи макроса на вкладке «Разработчик» в группе «Код» нажмите кнопку «Остановить «.

Назначение существующего макроса Дважды щелкните макрос в списке или введите его имя в поле «Имя макроса».

Создание макроса Нажмите кнопку «Создать» и в редакторе Visual Basic ввести новый макрос.

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

Изменение назначенного макроса Выполните одно из указанных ниже действий.

Изменение назначенного макроса Щелкните имя макроса в поле «Имя макроса» и нажмите кнопку «Изменить».

Назначение другого существующего макроса Дважды щелкните макрос в списке или введите его имя в поле «Имя макроса».

Добавление и изменение макроса для ActiveX управления

Если вкладка Разработчик недоступна, отобразите ее.

В Excel 2016, 2013 и 2010:

Щелкните Файл > Параметры > Настроить ленту.

В окне «Настройка ленты»выберите поле «Разработчик» и нажмите кнопку «ОК».

Нажмите кнопку Microsoft Office , а затем — кнопку Параметры Excel.

В категории «Популярные» в области «Топ параметров работы с Excel»выберите на ленте вкладку «Разработчик» и нажмите кнопку «ОК».

Чтобы изменить элемент ActiveX, убедитесь, что выбран режим конструктора. На вкладке Разработчик в группе Элементы управления нажмите кнопку Режим конструктора .

Дополнительные сведения см. в подменю «Выбор и отбирать элементы управления» на сайте.

на вкладке «Разработчик» в группе «Элементы управления» нажмите кнопку » «.

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

В редакторе Visual Basic напишите новый макрос или измените существующий.

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

Завершив ввод макроса, нажмите кнопку «Закрыть» и «Вернуться в Microsoft Excel» в меню «Файл» Visual Basic редакторе.

Завершив разработку элементов управления, на вкладке «Разработчик» в группе «Элементы управления» отключите режим .

Источник

Добавление или регистрация элемента ActiveX

​Смотрите также​​ Вопрос в том​.​.​ редакторе Visual Basic​ Для удобства также​. Откройте вкладку​ нарисуйте его с​, подумайте о том,​ вам полезна. Просим​ какой тип элемента​ от 1 до​ формулу =ПОИСКПОЗ($E$9; $G$9:$K$9;0)​правой клавишей вызовите его​ Нужный элемент управления​ опции, делать выбор​ убедитесь, что вы​Примечание:​ как этого избежать?​Выберите категорию​В редакторе Visual Basic​ напишите новый макрос.​

​ приводим ссылку на​Alphabetic​ помощью перетаскивания.​ чтобы использовать элемент​ вас уделить пару​ управления — просто​ 5 (т.е. от​ Если выбран 2009,​ контекстное меню, затем​ выбирается с помощью​ и пр. В​ находитесь в режиме​Мы стараемся как​Спасибо​Популярные​ создайте новый или​Дополнительные сведения о том,​ оригинал (на английском​(По алфавиту) и​Советы:​ ActiveX «Список».​

​ секунд и сообщить,​​ просмотрев его. Определение​

  • ​ 2009 до 2013​ то формула вернет​ Формат объекта…, вкладка​ группы Переключателей. Название​ принципе, без них​ конструктора. На вкладке​ можно оперативнее обеспечивать​Serge_007​, а затем в​ измените имеющийся макрос.​ как создавать макросы,​ языке) .​ измените нужные свойства.​​ ​​Упростите ввод данных для​

  • ​ помогла ли она​ типа элемента управления,​ года) + 6)​ 1.​ Элемент управления;​ выбранного элемента подсвечивается​ можно обойтись, но​

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

  1. ​Разработчик​​ вас актуальными справочными​​: 1. Параметр «​​ разделе​​Дополнительные сведения о том,​​ обратитесь к справочной​​Элемент управления формы или​Вот как можно настроить​​Чтобы изменить размер поля,​​ пользователей, позволив им​ вам, с помощью​​ который вы работаете,​​ совпадет с номером​Для определения ячейки строки​в поле Формировать список​ серым цветом (см.​

    Элементы управления ActiveX на ленте

  2. ​ они делают управление​в группе​ материалами на вашем​

    • ​Не перемещать и не​Основные параметры работы с​ как создавать макросы,​ системе Visual Basic.​​ элемента управления ActiveX​​ свойства поля со​​ наведите указатель мыши​​ выбирать значение из​​ кнопок внизу страницы.​​ щелкните правой кнопкой​

      Режим конструктора на ленте

    • ​ текущего столбца (7,​ Количество, соответствующую выбранному​​ по диапазону вводим​​A8:B8​​ данными на листе​​элементы управления​​ языке. Эта страница​​ изменять размеры​

      ​ Excel​​ обратитесь к справочной​Изменение назначенного макроса​ можно автоматизировать, сделав​ списком на этом​​ на один из​​ поля со списком.​

      ​ Для удобства также​​ мыши элемент управления​​ т.е. 2009 год);​ году используем формулу​ Список (вместо ссылки​на рис. выше).​ более наглядным и​включите​ переведена автоматически, поэтому​» установлен?​установите флажок​ системе Visual Basic.​​    Выполните одно из действий,​​ следующее:​

Регистрация элемента ActiveX

  1. ​ рисунке:​ маркеров изменения размера​ Поле со списком​

  2. ​ приводим ссылку на​ и затем Обратите​Флажок Условное форматирование установлен.​ =СМЕЩ($F$10;0;СмещГода). Формула вернет​​ на ячейку мы​​ Выбранный год выделяется​​ уменьшают вероятность ввода​​Режим конструктора​​ ее текст может​ Изображение кнопки​2. Лист с​

  3. ​Показывать вкладку «Разработчик» на​​Когда макрос будет создан,​​ описанных ниже.​​Выполните действие или операцию,​​Настраиваемое свойство​​ и перетащите границу​​ состоит из текстового​​ оригинал (на английском​​ внимание на следующее:​​выберите требуемый формат, например,​​ диапазон, состоящий из​

    Элементы управления ActiveX на ленте

  4. ​ ввели ссылку на​ в таблице Условным​​ некорректных данных.​​.​​ содержать неточности и​​ кнопками защищён?​

  5. ​ ленте​​ выберите команду​​Правка назначенного макроса​ когда пользователь щелкает​Действие​ элемента управления до​ поля и списка,​ языке) .​

  6. ​Если контекстное меню содержит​ серый цвет заливки;​​ одной ячейки.​​ определенное Имя!). Конечно,​

support.office.com

Элементы управления формы в MS EXCEL

​ форматированием темно серым​Для вставки элементов управления​Чтобы задать свойства элемента​ грамматические ошибки. Для​Если на оба​и нажмите кнопку​Закрыть и вернуться в​    Щелкните имя макроса в​ элемент управления формы​Цвет заливки​ достижения нужной высоты​ которые вместе образуют​Если вам нужно отобразить​ команду​нажмите ОК.​В поле Связь с​

​ вместо имени можно​ цветом (см.​ на лист необходимо​

  • ​ управления на вкладке​ нас важно, чтобы​ вопроса ответ​ОК​ Microsoft Excel​ поле​
  • ​ нужно назначить макрос.​Щелкните свойство​ и ширины.​​ раскрывающийся список.​​ список значений, которые​​Назначить макрос​​убедимся, что флажок Условное​​ ячейкой элемента Полоса​​ было указать просто​​H9:H12​ отобразить вкладку Разработчик.​​Разработчик​​ эта статья была​​ДА​

​.​в меню​Имя макроса​Запустите Microsoft Visual Basic​

​BackColor​Чтобы переместить поле со​Можно добавить поле со​ сможет выбирать пользователь,​, это элемент управления​ форматирование установлен;​ прокрутки нельзя ввести​ ссылку на диапазон;​на рис. выше).​В MS EXCEL 2007​в группе​ вам полезна. Просим​, то:​Примечание:​Файл​и нажмите кнопку​ для приложений (VBA)​(Цвет фона), щелкните​

​ списком на листе,​ списком одного из​ добавьте на лист​ формы.​выберем переключатель Список;​ формулу, но можно,​

  • ​свяжем элемент с ячейкой​
  • ​ Отображение этого выделения​
  • ​ это можно сделать через​
  • ​элементы управления​
  • ​ вас уделить пару​
  • ​1. Для чего​

​ Лента входит в Пользовательский​редактора Visual Basic.​Правка​ позволяет обработать все​ стрелку вниз, откройте​

Пример

​ выделите его и​ двух типов: элемент​ список.​Совет:​в элементе управления Список​ как мы уже​$C$8​ регулируется Флажком (фон​​ меню Кнопка офис/ Параметры​​нажмите кнопку​

​ секунд и сообщить,​ используются кнопки?​ интерфейс Microsoft Office​После завершения разработки элемента​.​ события, возникающие при​ вкладку​ перетащите в нужное​ управления формы или​Создайте перечень элементов, которые​ Чтобы отобразить правильное контекстное​​ выберем 2010;​​ видели, ввести Имя.​. В этой ячейке​ флажка — красный).​ Excel/ Основные/ Показывать​Свойства​​ помогла ли она​​2. Файл расшарен?​ Fluent.​ управления, на вкладке​Назначение другого существующего макроса​ взаимодействии пользователя с​Pallet​ место.​ элемент ActiveX. Если​ должны отображаться в​ меню для группы​

Переключатели

​убедимся, что столбец 2010​ Создадим Именованную формулу Количество,​ будет выводится порядковый​ Полосами прокрутки можно​ вкладку Разработчик на​.​

​ вам, с помощью​ЗЫ Во вложении​Убедитесь в том, что​Разработчик​    Дважды щелкните макрос в​ элементом ActiveX.​(Палитра) и выберите​Щелкните правой кнопкой мыши​ необходимо создать поле​ списке, как показано​ элемент управления формы,​ выделен серым;​​ в поле Диапазон​​ номер выбранного элемента​ редактировать Цену и​ ленте.​Совет:​ кнопок внизу страницы.​

​ файл. Попробуйте как​​ вы находитесь в​​в группе​ списке или введите​Дополнительные сведения о создании​ цвет.​ поле со списком​ со списком, в​ на рисунке.​ убедитесь, что выбран​Полосой прокрутки изменим количество​​ укажем формулу =СМЕЩ($F$10;0;СмещГода).​​ списка, т.е. если​ Количество в выбранном​В MS EXCEL 2010​

Поле со списком

​ Можно также щелкнуть элемент​ Для удобства также​ либо изменить кнопку​ режиме конструктора. На​элементы управления​ его имя в​​ макросов, узнайте, Создание​​Тип, начертание или размер​ и выберите команду​ котором пользователь сможет​На вкладке​ периметр группы, а​ в столбце 2010.​

​ Теперь в поле​

  • ​ выберем 2009, то​​ году, но только​​ это можно сделать так:​
  • ​ управления правой кнопкой​ приводим ссылку на​
  • ​ или её положение​ вкладке​

​отключите​ поле​ или удаление макросов.​

  • ​ шрифта​Формат объекта​
  • ​ изменять текст в​Разработчик​ не ее внутреннюю​Результат показан на рисунке.​
  • ​ Связь с ячейкой​ выведется 1, т.к.​ в определенном диапазоне.​ Откройте вкладку​ мыши и выбрать​ оригинал (на английском​andrey-p​Разработчик​Режим конструктора​
  • ​Имя макроса​​Щелкните элемент управления правой​​Щелкните свойство​.​ текстовом поле, рассмотрите​нажмите кнопку​ часть группы.​К сожалению, у элементов​ элемента полоса прокрутки​ это первый элемент​ Теперь – подробнее.​Файл​ пункт​ языке) .​: Serge_007,​в группе​​.​​.​

Список

​ кнопкой мыши и​Font​Откройте вкладку​ возможность использования элемента​​Вставить​​Если контекстное меню содержит​ управления формы Флажок,​ введите Количество.​ в списке. Для​​На листе использовано 3​​; Нажмите кнопку​

Счётчик

​Свойства​Кроме различных элементов формы​1. Нет​элементы управления​Примечание:​Если вкладка​​ выберите команду​​(Шрифт), нажмите кнопку​Элемент управления​ ActiveX «Поле со​.​

​ команду​ Поле со списком​Аналогичные манипуляции проделайте с​ дальнейших целей нам​ Переключателя объединенных в​Параметры​​.​​ компьютера содержит много​2. Да​включите​​Мы стараемся как​​Разработчик​

Полоса прокрутки

​Назначить макрос​…​и настройте следующие​ списком». Элемент ActiveX​Примечание:​Свойства​ и Список нет​ полосой прокрутки для​ проще использовать именно​ Группу. Каждому Переключателю​; Нажмите кнопку​Появится диалоговое окно​

​ элементы ActiveX, установленные​Файл во вложении​Режим конструктора​ можно оперативнее обеспечивать​​недоступна, отобразите ее.​​.​и выберите тип,​ параметры.​ «Поле со списком»​ Если вкладка​, элемент управления является​ возможности отформатировать отображаемый​ Цены. Для этого​ год, а не​

​ соответствует определенный элемент​Настроить ленту​Свойства​ приложением Excel и​ (пароль 180285). На​.​

​ вас актуальными справочными​В Excel 2016, 2013,​Откроется диалоговое окно​ размер или начертание​Формировать список по диапазону​ более универсален: вы​Разработчик​ элементом ActiveX и​ шрифт. Зато это​ необходимо создать Именованную формулу​ его порядковый номер.​ управления: Поле со​; Выберите команду​

​. Для получения подробных​ других программ, таких​ кнопках разные функции​Выберите элемент управления ActiveX.​ материалами на вашем​ 2010:​Назначить макрос объекту​

Флажок

​ шрифта.​: введите диапазон ячеек,​ можете изменить свойства​​не отображается, на​​ Excel открывается в​ можно сделать у​ Цена, где в​ Для этого в​ списком, Список, Счетчик.​

​Настройка ленты и в​ сведений о том​ как Calendar Control​ (вызов форм, сортировка…).​Дополнительные сведения установите или​ языке. Эта страница​В меню​.​​Цвет шрифта​​ содержащий список элементов.​ шрифта, чтобы текст​ вкладке​ режиме конструктора.​ элементов ActiveX (Разработчик/​ поле Диапазон указать​ ячейку​

​Для объединения Элементов в​ разделе Основные вкладки​​ или ином свойстве​​ 12.0 и проигрыватель​Файл всегда защищен,​ снимите флажок элементы​ переведена автоматически, поэтому​Файл​Чтобы задать местонахождение существующего​Щелкните свойство​Связь с ячейкой​ было легче читать​Файл​Если контекстное меню содержит​ Элементы управления/ Вставить).​ формулу =СМЕЩ($F$11;0;СмещГода).​D8​ группу помещаем на​​установите флажок​​ выделите его и​

  • ​ Windows Media. При​ но вопрос в​ управления на листесм.​
  • ​ ее текст может​последовательно выберите пункты​
  • ​ макроса, выберите его​ForeColor​: поле со списком​ на листе с​выберите​ команду​ Правда, для работы​
  • ​При выборе пользователем текущего​введем формулу =C8+2008.​ лист Элемент управления​Разработчик​ нажмите клавишу F1,​ установке новых элементов​ том что каким-то​Щелкните правой кнопкой мыши​
  • ​ содержать неточности и​
  • ​Параметры​ в списке​
  • ​(Цвет текста), щелкните​

Тестируем

  • ​ можно связать с​ измененным масштабом. Кроме​
  • ​Параметры​
  • ​Назначить макрос​ с этими элементами​
  • ​ года, в таблице​Вставляем на лист элемент​
  • ​ Группа (через меню​.​

​ чтобы отобразить соответствующий​

​ управления ActiveX, программа​ образом в результате​ выделенного фрагмента.​ грамматические ошибки. Для​и​Находится в​ стрелку вниз, откройте​ ячейкой, где отображается​ того, такое поле​>​, используется объект средства​ требуется писать программу​ с данными (​

excel2.ru

Почему не удается выделить элементы управления формы и элементы ActiveX?

​ Список. Аналогично предыдущему​​ Разработчик/ Элементы управления/​Теперь вставить элемент управления​ раздел справка по​ установки для элементов​ неизвестных мне процессов​Выберите имя объекта (например,​ нас важно, чтобы​Настроить ленту​, выполнив одно из​ вкладку​ номер элемента при​ со списком можно​Настроить ленту​ рисования.​ на VBA.​G9:K12​ элементу связываем его​ Вставить). В рамках​ можно через меню:​ Visual Basic. Можно​

Признаки

​ обычно регистрирует каждый​ неоднократно сталкивался с​

Причина

​Объект флажок​

  • ​ эта статья была​.​ указанных ниже действий.​Pallet​ его выборе из​ программно разместить в​. В списке​Затем выполните следующее:​Примечание:​) соответствующий столбец будет​ с ячейкой​

  • ​ группы создаем 3​ Разработчик/ Элементы управления/​ также ввести имя​ из элементов управления​ тем, что кнопки​) и нажмите​ вам полезна. Просим​В разделе​

  • ​Для поиска макроса во​(Палитра) и выберите​ списка. Введите номер​

Разрешение

​ ячейках, содержащих список​Основные вкладки​В элементе управления формы​ Мы стараемся как можно​ закрашиваться серым фоном.​$C$13​ переключателя (также через​ Вставить.​ свойства в поле​ на вашем компьютере,​ меняются автоматически, причем​ кнопку​ вас уделить пару​Настройка ленты​ всех открытых книгах​ цвет.​ ячейки, где должен​

  • ​ проверки данных.​установите флажок для​​ выберите элемент управления​​ оперативнее обеспечивать вас​ Для выделения столбца​

    ​и формируем список​​ меню Разработчик/ Элементы​Обратите внимание, что в​Поиск​ который делает его​ пользователь этого сделать​Изменить​ секунд и сообщить,​

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

  • ​ актуальными справочными материалами​ выбранного года используем​​ на основе того​​ управления/ Вставить) и​ этом меню можно​

​справки Visual Basic.​

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

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

  • ​Все открытые книги​

    1. ​ отображения значения, выбранного​​Например, в ячейке C1​​ скрыть на листе,​

      1. ​Разработчик​​ отображается границу элемента​​ на вашем языке.​​ Условное форматирование.​​ же Именованного диапазона​

      2. ​ связываем их все​​ вставить Элементы ActiveX,​​Щелкните элемент управления ActiveX,​​ из Excel. Если​​ и не понятно​

      3. ​Редактирование текста в элементе​​ вам, с помощью​​и нажмите кнопку​

    2. ​.​ в списке​ отображается значение 3, если​ и создайте список,​​и нажмите кнопку​​ управления.​​ Эта страница переведена​​Сначала вставим на лист​​ Список. В ячейку​​ с одной ячейкой​

      Режим конструктора

  • ​ которые расположены ниже​ который вы хотите​ элемент управления не​ в какой момент​ управления.​ кнопок внизу страницы.​

    ​ОК​Примечание:​Щелкните свойство​

support.office.com

Добавление списка или поля со списком на лист в Excel

​ выбрать пункт​​ введя по одному​ОК​Для элемента управления ActiveX:​ автоматически, поэтому ее​ элемент Флажок. Этим​D13​С2​ интересующих нас Элементов​ зарегистрировать.​ отображается в списке,​ меняются.​После завершения редактирования текста,​ Для удобства также​.​ Если макрос, который нужно​LinkedCell​Фруктовое мороженое​ значению в ячейки.​.​Если вкладка​ текст может содержать​

​ элементом мы будем​введем формулу =C13+2008.​(выделив элемент управления,​ управления формы. У​Убедитесь в том, что​

Образец списка

Добавление списка на лист

  1. ​ необходимо зарегистрировать его​Спасибо за ответ,​ нажмите клавишу ESC.​ приводим ссылку на​

    список значений для использования в поле со списком

  2. ​В Excel 2007​​ назначить элементу управления,​​(Связанная ячейка).​​, так как это​​Примечание:​

    ​В разделе​​Разработчик​​ неточности и грамматические​​ включать и выключать​Вставляем на лист элемент​​ правой клавишей вызываем​​ обоих типов есть​​ вы находитесь в​​ вручную.​​ не знал про​​К началу страницы​​ оригинал (на английском​​Нажмите​ находится в другой​​Связывание поля со списком​​ третий элемент в​​ Можно также создать список​​Элементы управления формы​

  3. ​недоступна, отобразите ее:​​ ошибки. Для нас​​ выделение в таблице​​ Счетчик. Определяем минимальное​​ контекстное меню, Формат​

    кнопка управления формой списка

  4. ​ одни и те​ режиме конструктора. На​

  5. ​Важно:​​ свойства, попробую, думаю​​Веб-браузеры отображают альтернативный (замещающий​​ языке) .​​кнопку Microsoft Office​

    Свойства элемента управления списком.

    • ​ книге, чтобы он​​ и списка элементов​​ списке.​ на другом листе​

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

    • ​ объекта…, вкладка Элемент​​ же элементы Кнопка,​​ вкладке​ ​

      ​ поможет.​​ текст) во время​Вы можете изменить текст,​, а затем —​ появился в списке​Щелкните поле рядом со​Совет:​ той же книги.​

    • ​Список (элемент управления формы)​​Файл​​ статья была вам​​ Элемент свяжите с​​ – 2013, шаг​​ управления).​​ Список, Флажок и​

      ​Разработчик​​Не все элементы управления​Serge_007​​ загрузки изображений, если​​ отображаемый в элементе​​ кнопку​​Находится в​ свойством​  Чтобы вместо номера​

Добавление поля со списком на лист

​На вкладке​.​и выберите пункт​ полезна. Просим вас​ ячейкой​ 1. Связываем элемент​Удерживая клавишу​ т.п.  Разница между​в группе​

Поле со списком

​ ActiveX можно использовать​: Поможет. Вы мой​ отсутствуют изображения, а​ управления формы или​Параметры Excel​, сначала откройте книгу,​ListFillRange​ отображать сам элемент,​Разработчик​Щелкните ячейку, в которой​Параметры​ уделить пару секунд​$G$2​ с ячейкой​CTRL​ ними следующая: чтобы​элементы управления​ непосредственно на листах;​ файл смотрели? Пробовали​ также отображают замещающий​ элемента управления ActiveX,​.​ содержащую макрос.​(Диапазон элементов списка)​ можно воспользоваться функцией​

  1. ​нажмите кнопку​ нужно создать список.​.​ и сообщить, помогла​. Если флажок снят,​

    список значений для использования в поле со списком

    ​$C$17D17​​выделяем 3 переключателя​ использовать Элементы ActiveX необходимо​включите​

  2. ​ некоторые могут быть​​ что либо сделать​​ текст, если навести​​ например метки или​​В категории​

    ​Чтобы ограничиться при поиске​​ и укажите диапазон​​ ИНДЕКС. В нашем​​Вставить​Нажмите кнопку​​В раскрывающемся списке​​ ли она вам,​​ то в этой​​введем формулу =С17,​​ и элемент Группа,​​ использовать VBA, а​​Режим конструктора​​ использованы только на​ с кнопкой?​​ указатель мыши на​​ справочных сведений, и​​Основные​​ макросов только книгой,​

  3. ​ ячеек для списка.​ примере поле со​.​

    • ​Свойства​​настроить ленту​​ с помощью кнопок​​ ячейке будет ЛОЖЬ​ т.к. элемент Счетчик​​ вызываем правой клавишей​

      ​ Элементы управления формы​

    • ​.​​ Microsoft Visual Basic​​Quote​​ изображение. Поисковые используют​ можно изменить описание​​в разделе​

      Добавление поля со списком

  4. ​ содержащей текущий лист,​Изменение количества отображаемых элементов​ списком связано с​Примечание:​и на вкладке​

​выберите​​ внизу страницы. Для​

  • ​ (этому значению соответствует​ в нашем случае​ мыши контекстное меню​ можно напрямую привязать​На вкладке​ для приложений (VBA)​(andrey-p)200?’200px’:»+(this.scrollHeight+5)+’px’);»>кнопки меняются автоматически​ замещающий текст для​

  • ​ замещающего текста для​Основные параметры работы с​ выберите пункт​ списка​ ячейкой B1, а​

Форматирование элемента управления формы «Поле со списком»

  1. ​ Если вкладка​Элемент управления​Основные вкладки​​ удобства также приводим​​ 0), если установлен,​

  2. ​ возвращает значение года.​​ и выбираем Группировка/​​ к ячейке на​Разработчик​

    Диалоговое окно

    • ​ пользовательские формы. При​​Ну, чудес-то не​ поиска веб-страниц. Замещающий​

    • ​ элемента управления.​​ Excel​Эта книга​Щелкните поле​ диапазон ячеек для​Разработчик​задайте необходимые свойства:​.​ ссылку на оригинал​

      ​ то ИСТИНА (этому​Чтобы определить значение какого​ Группировать. Теперь при​​ листе.​​в группе​ работе с этими​ бывает​

      Когда элемент выбран, в связанной ячейке отображается его номер.

      ​ текст также используется​​Редактирование текста в элемент​установите флажок​.​ListRows​ списка — A1:A2. Если​не отображается, на​В поле​Установите флажок​ (на английском языке).​ значению соответствует 1).​ элемента (поле со​​ выборе одного из​​Для тех, кто не​элементы управления​ элементами управления при​Всегда есть причина​

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

    • ​ для пользователей с​​ управления формы​Показывать вкладку «Разработчик» на​Чтобы ограничиться при поиске​и введите число​ в ячейку C1​ вкладке​Формировать список по диапазону​Разработчик​Выбор элемента управления, бывает​Для настройки Условного форматирования выделим​ списком, список или​ трех Переключателей в​ ранее не работал​

      Отображается полоса прокрутки.

  3. ​нажмите кнопку​​ попытке добавить их​​andrey-p​

Форматирование элемента ActiveX «Поле со списком»

  1. ​ ограниченными возможностями.​​Редактирование текста в элементе​​ ленте​​ макросов только конкретной​​ элементов.​

  2. ​ ввести формулу​Файл​введите диапазон ячеек,​​.​​ сложно и непредсказуемые.​​ диапазон​​ счетчик) является активным​ Группе, в ячейке​

    ​ с Элементами управления​Вставить​ на лист Excel​: Serge_007,​

    Пример поля со списком.

    Параметры свойств для элемента ActiveX

    ​Выделите элемент управления.​

    ​ управления ActiveX​

    ​, а затем нажмите​

    ​ книгой, выберите среди​​Закройте область​​=ИНДЕКС(A1:A5;B1)​выберите​ содержащий список значений.​​Убедитесь в том, что​​Может быть несколько причин:​G9:K12​

    Свойство цветной заливки для поля со списком.

    ​ в настоящий момент,​С2​

    ​ формы, советуем подробно​​и в группе​​ отображает сообщение​​Ваш файл пробовал,​​Дополнительные сведения установите или​Изменить описание замещающего текста​ кнопку​

    Параметры шрифтов в текстовом поле

    ​ имен доступных открытых​

    ​Properties​​, то при выборе​​Параметры​Примечание:​ Excel открывается в​​Поскольку элемент управления формы​​. Так как формула​ в ячейке​

    ​будет выводиться значение​ ознакомиться с ними​Элементы управления ActiveX​

    ​не удается вставить объект​​ кнопка не меняется.​​ снимите флажок элементы​

    ​ для элемента управления​ОК​

    ​ книг нужную книгу.​(Свойства) и нажмите​​ третьего пункта в​​>​ Если нужно отобразить в​ режиме конструктора. На​

    ​ может содержать текст​ в Условном форматировании​

    ​E9​​ 1, 2 или​​ в следующих статьях:​, нажмите кнопку​

  3. ​.​​ В моем файле​​ управления на листесм.​Выделите элемент управления формы.​​.​​Выполните одно из действий,​

  4. ​ кнопку​ ячейке C1 появится​Настроить ленту​ списке больше элементов,​ вкладке​​ или другие объекты​​ будет содержать относительную​

support.office.com

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

​введем формулу: =ЕСЛИ(C2=1;D8;ЕСЛИ(C2=2;D13;D17))​​ 3.​Флажок;​Другие элементы​Вам необходимо включить вкладку​ кнопка тоже не​Правой кнопкой мыши, выберите​Дополнительные сведения установите или​Чтобы изменить элемент ActiveX,​ описанных ниже.​Режим конструктора​ текст «Фруктовое мороженое».​. В списке​ можно изменить размер​Разработчик​ (например, изображение), при​ ссылку, то убедимся,​ Как мы помним,​Теперь вставим элемент управления​Счетчик;​.​ «Разработчик» на ленте,​

​ меняется, так как​ пункт​ снимите флажок элементы​ убедитесь, что вы​

  • ​Назначение макроса​.​Количество строк списка:​Основные вкладки​

  • ​ шрифта для текста.​в группе​ попытке выберите элемент​ что после выделения​ значение в ячейке​ Поле со списком.​

​Полоса прокрутки;​В нижней части диалогового​ прежде чем можно​

Добавление и изменение макроса для элемента управления формы

  1. ​ она под защитой.​Формат элемента управления​ управления на листесм.​​ находитесь в режиме​​    Выполните одно из действий,​

    ​Завершив форматирование, можно щелкнуть​​количество строк, которые​​установите флажок для​

  2. ​В поле​элементы управления​ управления вы могут​​ диапазона активной ячейкой​​С2​ Вставить элемент можно​

    • ​Переключатель;​ окна​ будет работать с​​ Пользователь может ее​​и перейдите на​

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

    • ​ является G9 (т.е.​определяется Группой переключателей.​ через меню: Разработчик/​Список;​​Другие элементы​​ элементами управления ActiveX.​

    • ​ только нажать. Тем​ вкладку​ выберите команду​Разработчик​Запись макроса​

  3. ​ столбец, который содержит​ щелкнуть стрелку вниз.​

    ​Разработчик​​введите ссылку на​Режим конструктора​

    • ​ управления, если выделен​​ диапазон надо выделять​​Вставляем на лист элемент​​ Элементы управления/ Вставить.​Поле со списком.​нажмите кнопку​​ Подробнее читайте вкладку​​ не менее периодически​​Web​​Изменить текст​​в группе​ Изображение кнопки​    Щелкните​

    • ​ список, и выбрать​​ Например, если список​и нажмите кнопку​ ячейку.​.​​ не навести указатель​​ начиная именно с​

    • ​ Полоса прокрутки. Этим​​ В ячейках столбца​​В этой статье рассмотрим​​Зарегистрировать настраиваемый​ «Разработчик».​ ко мне приход​

      ​.​.​элементы управления​запись​

      ​ команду​​ содержит 10 элементов и​ОК​

    • ​Совет:​​При работе с большое​ мыши точно на​​ нее. Подсказкой служит​​ элементом мы будем​​М​​ более сложный пример​

    • ​.​​На вкладке​ пользователи с проблемой,​В поле​Границу элемента управления фильтрацией​​включите​​, а по завершении​

Добавление и изменение макроса для элемента ActiveX

  1. ​Скрыть​​ вы не хотите​​.​

    ​ Выбираемая ячейка содержит число,​ количество элементов управления,​

    1. ​ границу элемента управления.​​ поле Имя, находящееся​​ изменять ячейку на​​введем несколько значений​​ совместного использования элементов​​В диалоговом окне​​Разработчик​

    2. ​ я открываю файл​​замещающий​​ отображает тенденцию пунктирной​​Режим конструктора​​ записи макроса на​​.​​ использовать прокрутку, вместо​

    ​Выберите тип поля со​

    1. ​ связанное с элементом,​​ расположенные рядом друг​ Изображение кнопки Office​Если Excel не в​ слева от Строки​​ пересечении строки Количество​​ лет: 2009, 2010,​

    2. ​ управления и Условного​​Зарегистрировать элемент управления​​в группе​​ и вижу измененные​текст введите текст,​​ линией.​​.​ вкладке​​Примечание:​ значения по умолчанию​​ списком, которое нужно​​ выбранным в списке.​

  2. ​ с другом, увеличить​ режиме конструктора, при​ формул. После выделения​ (строка 10) и​​ 2011, 2012, 2013.​​ форматирования.​​найдите папку, в​​элементы управления​​ кнопки​ Изображение кнопки​ который вы хотите​

  3. ​Редактирование текста в элементе​

    ​Выделите нужный объект.​Разработчик​Мы стараемся как​

  4. ​ введите 10. Если​​ добавить:​​ Его можно использовать​​ большего размера, чтобы​​ попытке выберите элемент​​ диапазона оно должно​ Изображение кнопки​ столбца выбранного года.​

    ​ Эти значения будут​​Разберем конкретный пример применения​ которой находится файл​нажмите кнопку​ABC​​ отобразить.​​ управления.​

  5. ​Дополнительные сведения установите или​в группе​ можно оперативнее обеспечивать​

    ​ ввести число, которое​в разделе​ в формуле для​ увеличить изображение.​

  6. ​ управления ActiveX, вы​ содержать​​ Значения ячейки будет​ использованы в элементе​​ сразу нескольких Элементов​​ элемента управления (с​​Вставить​

  7. ​: например: при активации​andrey-p​​По окончании редактирования текст​​ снимите флажок элементы​​код​​ вас актуальными справочными​​ меньше количества элементов​ Изображение кнопки​Элементы управления формы​

support.office.com

Редактирование текста в элементе управления на листе

​ получения фактического элемента​​Дополнительные сведения читайте в​ можете случайно начать​G9​ меняться в диапазоне​ Поле со списком.​ управления. В файле​ расширением OCX) или​и затем в​ листа — не​: Добрый день.​ правой кнопкой мыши​ управления на листесм.​нажмите кнопку​ материалами на вашем​ в списке, появится​выберите элемент управления​ из входного диапазона.​ статье масштабирование документа,​ действие, например выполнение​).​ от 0 до​

​Создадим Именованный диапазон Список.​ примера с помощью​ DLL-файл элемента управления,​ группе​ пробовали?​Подскажите, пожалуйста, возможно​ и выберите команду​на вкладке​Остановить запись​

В этой статье

​ языке. Эта страница​ полоса прокрутки.​

​Поле со списком (элемент​В группе​

​ презентации или листа.​ макроса или установка​

Редактирование текста в элемент управления формы

  1. ​вызовите инструмент Условное форматирование (Главная/​

    ​ 1000. Но как​выделяем диапазон​ элементов управления показано​

  2. ​ который необходимо зарегистрировать.​Элементы ActiveX​​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Private Sub Worksheet_Activate()​​ кто-нибудь сталкивался с​

    ​Завершить изменение текста​Разработчик​.​

    Текстовое поле с границей со штриховкой

  3. ​ переведена автоматически, поэтому​Нажмите кнопку​

  4. ​ управления формы)​Возможен выбор​Примечание:​​ флажка.​​ Стили/ Условное форматирование/​

​ определить эту ячейку?​

Редактирование текста в элементе управления ActiveX

  1. ​М9:М12​​ как пользователь может​​Выберите файл элемента управления​

    ​выберите элемент управления​

    1. ​CommandButton1.Left = Cells(2,​​ подобной проблемой: на​ Изображение кнопки Office​.​в группе​​Назначение существующего макроса​​ ее текст может​

    2. ​ОК​​;​​установите переключатель​Мы стараемся как​​Многие элементы управления расположены​ Создать правило);​​Создадим Именованную формулу СмещГода​​;​ отредактировать значения в​​ и нажмите кнопку​​ или нажмите кнопку​​ 2).Left ‘Левое​

      ​ листе Excel размещены​​К началу страницы​элементы управления​    Дважды щелкните макрос в​

  2. ​ содержать неточности и​.​ИЛИ:​одинарного значения​​ можно оперативнее обеспечивать​​ рядом друг с​​выберите Использовать формулу для​​ для определения позиции​​нажимаем Формулы/ Определенные имена/​ Изображение кнопки​ таблице (диапазон​

  3. ​Открыть​

    ​Другие элементы управления​CommandButton1.Top = Cells(2,​ кнопки (элемент Activex).​

  4. ​Если вкладка​нажмите кнопку​

  5. ​ списке или введите​​ грамматические ошибки. Для​​На вкладке​в разделе​​и нажмите кнопку​​ вас актуальными справочными​

  6. ​ другом.​ определения форматируемых ячеек;​

  7. ​ выбранного года в​ Присвоить имя;​

​F9:K12​

Изменить описание замещающего текста для элемента управления

​.​, чтобы просмотреть все​ 2).Top ‘верхнее​ С файлом работает​Разработчик​Просмотреть код​ его имя в​ нас важно, чтобы​Разработчик​Элементы ActiveX​ОК​ материалами на вашем​Во-первых определяют тип элемента​

  1. ​в поле «Форматировать значения,​

    ​ диапазоне лет​в поле Имя вводим​).​

  2. ​Элементы управления формы (Поле​ доступные элементы управления​​CommandButton1.Height = Cells(2,​​ много пользователей, в​недоступна, отобразите ее.​​.​​ поле​

  3. ​ эта статья была​​нажмите кнопку​​выберите элемент управления​.​ языке. Эта страница​

support.office.com

Изменяются элементы ActiveX

​ управления, который требуется​​ для которых следующая​
​G9:K9​ Список.​С помощью одного из​ со списком, Флажок,​ ActiveX и выберите​ 2).Height + 10​ какой-то момент (не​Отображение вкладки Разработчик​Примечание:​Имя макроса​ вам полезна. Просим​Режим конструктора​Поле со списком (элемент​Примечание:​ переведена автоматически, поэтому​
​ выделить. Существует три​

​ формула является истинной»​​. Нажимаем Формулы/ Определенные​​Теперь свяжем элемент управления​ 3-х элементов управления​​ Счетчик и др.)​
​ элемент управления.​ ‘высота​
​ понятно какой) происходит​Нажмите​​ Чтобы изменить существующий макрос,​​.​
​ вас уделить пару​.​
​ ActiveX)​
​  Если вы хотите​ ее текст может​ различных типа элементов​ введите =И(СТОЛБЕЦ(G9)=СмещГода+6;$G$2) Формула​

​ имена/ Присвоить имя,​​ с данными на​
​ Поле со списком,​
​ помогают быстро менять​
​Щелкните на листе место,​CommandButton1.Width = Cells(2,​ изменение размера и​кнопку Microsoft Office​
​ щелкните элемент управления​Создание макроса​ секунд и сообщить,​Щелкните правой кнопкой мыши​.​ выбрать параметр​ содержать неточности и​ управления и объекты,​ примет значение ИСТИНА,​ в поле Имя​ листе. Для этого:​ Список и Счетчик,​ данные на листе​
​ где должен отображаться​ 2).Width + 60​ размещения кнопок (порой​, а затем —​

​ правой кнопкой мыши​​    Нажмите кнопку​ помогла ли она​ поле со списком​Щелкните ячейку, в которую​
​набора значений​​ грамматические ошибки. Для​
​ которые можно изменять​ когда выполнится одновременно​smile
​ вводим СмещГода, в​

​выделите элемент управления Поле​​ пользователь может выбрать​
​ в определенном диапазоне,​ элемент управления ActiveX.​ ‘ширина​ их даже трудно​ кнопку​ и выберите команду​Создать​ вам, с помощью​ и выберите пункт​ нужно добавить поле​или​ нас важно, чтобы​ однозначно, вы может​ 2 условия:​

​ поле диапазон вводим​​ со списком;​ столбец таблицы (год).​ включать и выключать​
​Чтобы изменить элемент управления,​
​End Sub​ найти на листе).​
​Параметры Excel​Просмотреть код​
​, а затем в​ кнопок внизу страницы.​Свойства​
​ со списком, и​списка значений​ эта статья была​
​ не наверняка знаете,​

excelworld.ru

​значение выражения (СмещГода (изменяется​

Содержание
Запись макроса
Макросы Excel 4.0
Visual Basic for Applications 5.0
VBA 6
Использование внешних библиотек
VSTO
Автоматизация Excel для внешних приложений
Безопасность файлов
Сертификаты VBA

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

Запись макроса

Первое средство автоматизации, с которым сталкивается пользователь – это, так называемая, запись макроса. После включения этой записи Excel автоматически создает программный код с последовательностью производимых пользователем операций.

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

Реальное программирование не имеет с записью макросов ничего общего. Требуется знать как основы языка программирования, так и изучить объектную модель Excel. Кстати, как раз для последнего случая функция «запись макроса» несет определенную пользу в качестве дополнения к справочной системе. В автоматически записанном коде можно быстро найти нужные свойства или методы того или иного объекта Excel.

Макросы Excel 4.0

С этим мало, кто сталкивался на практике, но, в версии Excel 4.0 имелась возможность создавать макрокоманды и выполнять их последовательности. Для этого предназначен специальный тип листа рабочей книги. Макросы Excel 4.0 (XLM) поддерживаются во всех версиях до настоящего времени.

Попробуйте вставить «международный лист макросов» и написать в нем 2 команды (см. картинку). Затем запустить этот макрос через указание ячейки (проще всего запуск макросов вызывается через сочетание клавиш Alt+F8):

«Международный лист макросов» необходим для записи команд на английском языке, имеются также аналоги русских команд.

Макросы XLM позволяют выполнять любые команды Excel, реализованные на тот момент, а также формировать и открывать диалоговые окна. С конца 90х годов Microsoft настоятельно рекомендует переписать XLM-макросы в Excel-приложениях на программы VBA. Тем не менее, функциональность старых макросов полностью поддерживается до сих пор.

Работа с макросами Excel 4.0
Справочник по макросам Excel 4.0 (.sit архив)

Visual Basic for Applications 5.0

Первая версия Excel, поддерживающая язык программирования Visual Basic for Applications появилась в 1993м году – Excel 5.0. Первоначально редактор кода представлял собой специальный тип листа рабочей книги.

Поддерживалась полная объектная модель Excel, пользователь мог разделять код на программные модули. Впервые появилась возможность визуального создания и изменения диалоговых форм — коллекция DialogSheets. Для данных форм существуют элементы управления с собственными обработчиками событий, сами формы могут быть открыты только в модальном режиме. С помощью DialogSheets уже можно было создавать достаточно сложные варианты пользовательского интерфейса. В дальнейшем функциональность DialogSheets была заменена на пользовательские формы UserForms. Старые диалоговые формы в версиях, начиная с Excel 2000, поддерживаются только в целях обратной совместимости – на них даже отсутствует описание в справочной системе.

VBA 6

Excel 2000 (порядковый номер версии 9.0) включает в себя новую версию языка Visual Basic for Applications. В нем появилась поддержка пользовательских классов, форм и процедур обработчиков событий. Синтаксис языка VBA унифицирован с основными приложениями Microsoft Office (Excel, Word, Access, PowerPoint). Несколько выделяется, пожалуй, Microsoft Access, который поддерживает собственный редактор форм.

Основные новшества VBA6:

  • Пользовательские классы.
  • Доступ к стандартным обработчикам событий листов и рабочей книги.
  • Возможность обработки событий с использованием ключевого слова WithEvents.
  • Пользовательские формы UserForms с новыми элементами управления.
  • Возможность использования внешних ActiveX-контролов и библиотек кода.
  • Несколько новых полезных функций (например, Join и Split).

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

Использование внешних библиотек

Внешние библиотеки формата COM DLL (ActiveX DLL) подключаются через использование ссылок в проекте VBA (меню ToolsReferences). Визуальные элементы управления (.ocx-файлы) подключаются аналогичным способом при выборе пункта меню Tools Additional Controls. При использовании ссылок на внешние файлы может потребоваться уделить особое внимание целостности проекта при его распространении на другие компьютеры. Стандартные библиотеки (например, MSCOMCTL.OCX) обычно корректно переподключаются на клиентских компьютерах, автоматически подбирая ссылку на последнюю версию. С нестандартными библиотеками и собственными ActiveX-контролами могут возникнуть проблемы. Для проверки подключения внешних COM DLL теоретически можно использовать коллекцию Application.VBE.ActiveVBProject.References. Но на практике объект VBE лучше не использовать в приложениях, так как доступ к нему может быть ограничен настройками Excel (начиная с версии 2007).

Технология COM позволяет обеспечить доступ к внешним библиотекам и приложениям без использования жестких ссылок. Для этого используется, так называемое, позднее связывание объектов. В качестве интерфейса IUnknown в VBA выступает тип Object; для создания экземпляра объекта используется стандартная процедура CreateObject, а для получения имеющегося экземпляра – GetObject.

Dim oWord As Object
Set oWord = CreateObject("Word.Document")
oWord.Application.Visible = True

Для вызова функций и процедур динамических библиотек Windows (Win32 DLL) в любой версии VBA поддерживается конструкция Declare. Например:

Public Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal sBuf As String, ByRef iSize As Long) As Boolean

После подобного объявления функцию можно вызывать обычным способом как любую функцию VBA.

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

VSTO

Microsoft предоставляет средства автоматизации Excel в других своих продуктах для разработчиков. Так, существует, например, шаблон проекта ActiveX DLL Visual Basic 6.0, адаптированный для Microsoft Office. В настоящее время Microsoft поддерживает направление разработки приложений, основанное на технологии .NET — Visual Studio Tools for Office (VSTO). VSTO представляет из себя набор шаблонов проектов и средств поддержки выполнения Visual Studio .NET, предназначенных для разработки библиотек и надстроек различных приложений Microsoft Office.

Пример исходного кода проекта .NET для Excel можно найти в разделе Прочее.

См.также статью Надстройки.

Overview of Office 2003 Developer Tools and Programs (MSDN)

Автоматизация Excel для внешних приложений

Подобно вызову внешних COM DLL, Excel сам может являться объектом автоматизации для других программ. Например, вы можете вызывать и управлять рабочей книгой с помощью vbs-скриптов. Например, создайте текстовый файл следующего содержания:

Set oExcelApp = CreateObject("Excel.Application")
oExcelApp.Visible = True
Set oWorkbook = oExcelApp.Workbooks.Add
Set oWorksheet = oWorkbook.Worksheets.Add
oWorksheet.Cells(1,1)="Hello"

Сохраните этот файл с расширением vbs, а затем откройте. При успешном запуске будет открыт Excel, создана рабочая книга и лист, на котором появится текст «Hello» в верхней левой ячейке. Аналогичным образом можно создавать очень сложные программы, управляющие Excel-файлами. При переносе кода в vbs-скрипт (или другое приложение) первоначально удобнее его создавать и отлаживать код в редакторе VBA самого Excel – в нем имеется полная информация о синтаксисе методов и свойств встроенных объектов. В связи с этим хорошей практикой при программировании на VBA является использование полных путей доступа к объектам: например, вместо ActiveWorkbook прописывать Application.ActiveWorkbook. Такой стиль программирования избавит вас от скрытых ошибок при переносе кода в любые другие приложения.

Безопасность файлов

Microsoft, проявляя заботу о пользователях, всячески пытается предотвратить случайное распространение компьютерных вирусов, написанных на VBA. Основываясь на собственном опыте, можем предположить, что такая «забота» зачастую приносит больше проблем пользователям, чем повышает безопасность их работы. В нашей практике работы с файлами Excel (начиная с 1995го года) нам ни разу не встречались макро-вирусы, написанные специально для приложений Excel. При этом мы не исключаем потенциальную возможность написания таких вирусов (даже можем попытаться что-то подобное создать), только непонятно зачем это кому-нибудь нужно. Использование тех же скриптовых языков гораздо более серьезная угроза для операционной системы. Не говоря уже о том, что Visual Basic – это не самое подходящее средство для написания компьютерных вирусов.

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

Вот как исторически изменялись характеристики безопасности:

  • Excel 4.0-7.0 – нет полной уверенности, но похоже, что не было защиты от макровирусов, макросы запускались без дополнительных предупреждений.
  • Excel 97 (8.0) – появился флажок защиты в общих параметрах.

  • Excel 2000 (9.0) – появился специальный диалог в меню Сервис Макросы с выбором одного из трех уровней безопасности и списком надежных сертификатов. По умолчанию установлен средний уровень безопасности. То есть при открытии файлов с макросами пользователю самому предлагается решить, насколько это безопасно. Надстройки Excel по умолчанию активизируются без дополнительных предупреждений.

  • Excel 2002 (10.0) – добавился еще один «самый высокий» уровень безопасности, разрешающий запуск макросов, подписанных надежным издателем, и только из надежных источников. По умолчанию установлен средний уровень безопасности.
  • Excel 2003 (11.0) – то же, что в предыдущей версии, но по умолчанию устанавливается высокий уровень безопасности. То есть макросы отключаются без предупреждений.

  • Excel 2007 (12.0) – переписан интерфейс параметров, появился так называемый «Центр управления безопасностью». Уровни безопасности изменились по поведению, хотя их также осталось четыре. По умолчанию при открытии файла с макросами под лентой появляется окошко с возможностью активизировать макросы. Условно говоря, это тот же диалог подключения макросов, но открывается он немодально. Решение с одной стороны кажется привлекательным по интерфейсу, но может привести к несовместимости со старым версиями: например, пользователь может поработать некоторое время без макросов, а затем их подключить. Появилась отдельная опция возможности управления объектом VBE на уровне кода, которая по умолчанию отключена. Также отдельно настраивается безопасность надстроек Excel, которые по умолчанию пока все-таки подключаются без дополнительных вопросов.

Учитывайте эти различия в настройках при разработке и распространении собственных приложений для Excel.

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

Сертификаты VBA

Начиная с Microsoft Office 2000 стала доступна технология Microsoft Authenticode, позволяющая подписывать исполняемый код VBA в макросах и надстройках. Для разработчика решений это означает возможность запуска программ с установленным уровнем безопасности Высокий и Очень высокий.

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

Существует несколько вариантов получения сертификатов:

  • Самоподписанный сертификат
  • Сертификат из локального центра сертификации
  • Коммерческий сертификат

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

В случае наличия локального центра сертификации (в рамках организации, например), возможно создание сертификатов, выданных этим центром. При наличии Active Directory возможно распространение корневого сертификата на компьютеры пользователей, которое позволит определять подписанный код как доверенный. Для создания локального центра сертификации можно использовать службы сертификации Windows Server (Certificate Services), либо использовать решения на базе пакета OpenSSL.

При необходимости наиболее широкого распространения решений на базе Microsoft Office, рекомендуется приобрести коммерческий сертификат для подписывания кода (Code Signing). Использование широкоизвестных центров сертификации позволит пользователям быть уверенным, что они получают продукт от вполне определенного поставщика и в неизменённом виде.

Однако, есть несколько моментов в работе с сертификатами, о которых необходимо упомянуть:

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

Список коммерческих центров сертификации (англ.)
Подписывание VBA на VeriSign
Подписывание VBA на Thawte

Смотри также

» Пересчет отдельных формул в рабочей книге

Типичная проблема при работе с большими или очень большими файлами Excel — это слишком сильное замедление при выполнении любых расчетов….

» Редактирование формул

При построении экономических моделей, обработке больших объемов данных, статистических расчетах и других задачах, решаемых при помощи…

» Класс сохранения настроек Excel

В данной статье описывается небольшой, но очень удобный класс для сохранения и автоматического восстановления таких параметров…

» Преимущества нового формата рабочей книги

Начиная с версии 2007, Excel позволяет использовать новый формат рабочей книги (XLSX). По сравнению с прошлым форматом (XLS), поддерживающимся,…

» Проблемы Excel

Большинство статей на нашем сайте прямо или косвенно описывают возможности и достоинства Excel. Это программа используется ежедневно…

Примеры форм листа Благодаря формам, а также многочисленным элементам управления и объектам, которые можно в них добавить, значительно упрощается ввод данных в листы и улучшается их внешний вид. Вы также можете делать это самостоятельно, и вам почти или совсем не потребуется код 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, а также добавлять их на листы диаграмм. Например, после добавления элемента управления «список» на лист и связывания его с ячейкой можно вернуть числовые значения для текущего положения выбранного элемента управления. Затем можно использовать это число в сочетании с функцией ИНДЕКС для выбора различных элементов в списке.

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

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

Обзор элементов управления формы

Название кнопки

Пример

Описание

Изображение кнопки

Надпись

Пример подписи (элемент управления формы)

Указывает назначение ячейки или текстового поля либо содержит описание (заголовки, подписи, рисунки) или краткие инструкции.

Изображение кнопки

Значок кнопки

Пример группы (элемент управления формы)

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

Изображение кнопки

Изображение кнопки

Пример кнопки (элемент управления формы)

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

Изображение кнопки

Флажок

Пример флажка (элемент управления формы)

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

Изображение кнопки

Переключатель

Пример переключателя (элемент управления формы)

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

Изображение кнопки

Список

Пример списка (элемент управления формы)

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

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

  • Список связанного выбора позволяет выбрать один элемент, а также несколько расположенных рядом элементов.

  • Список, разрешающий несвязный выбор нескольких строк, позволяет выбрать один элемент, расположенные рядом элементы, а также разрозненные элементы.

Изображение кнопки

Поле со списком

Пример поля со списком (элемент управления формы)

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

Изображение кнопки

Полоса прокрутки

Пример полосы прокрутки (элемент управления формы)

Используется для прокрутки диапазона значений с помощью кнопок со стрелками или путем перетаскивания ползунка полосы прокрутки. Можно перемещаться по странице значений (с заранее заданным интервалом), щелкая область между ползунком и одной из кнопок со стрелками для прокрутки. Как правило, пользователь также может вводить текст непосредственно в связанную ячейку или текстовое поле.

Изображение кнопки

Счетчик

Пример счетчика (элемент управления формы)

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

Примечание: Следующие элементы управления недоступны в Office Excel 2007 книгах. Эти элементы управления можно использовать только Excel на листах диалогов версии 5.0.

Название кнопки

Изображение кнопки
текстового поля

Изображение кнопки
со списком — редактирование

Изображение кнопкисо #x0 — вниз, редактирование

Изображение кнопки
«Выполнить»

Элементы ActiveX

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

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

На компьютере находятся многочисленные элементы ActiveX, установленные приложением Excel и другими программами, такими как Calendar Control 12.0 и проигрыватель Windows Media.

Важно: Не все элементы ActiveX можно использовать непосредственно на листах; некоторые из них можно применять только к пользовательским формам Visual Basic для приложений (VBA). При попытке добавить такие элементы управления на лист в приложении Excel отображается сообщение «Вставка объекта неосуществима».

Тем не менее элементы ActiveX невозможно добавить на листы диаграмм (с помощью пользовательского интерфейса) или на листы макросов XLM. Кроме того, невозможно назначить макрос, который будет запускаться непосредственно из ActiveX так же, как и для управления формы.

Обзор элементов ActiveX

Название кнопки

Пример

Описание

Изображение кнопки

Флажок

Пример флажка (элемент ActiveX)

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

Изображение кнопки

Текстовое поле

Пример текстового поля (элемент ActiveX)

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

Изображение кнопки

Кнопка

Пример кнопки (элемент ActiveX)

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

Изображение кнопки

Переключатель

Пример переключателя (элемент ActiveX)

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

Изображение кнопки

Список

Пример списка (элемент ActiveX)

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

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

  • Список связанного выбора позволяет выбрать один элемент, а также несколько расположенных рядом элементов.

  • Список, разрешающий несвязный выбор нескольких строк, позволяет выбрать один элемент, расположенные рядом элементы, а также разрозненные элементы.

Изображение кнопки

Поле со списком

Пример поля со списком (элемент ActiveX)

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

Изображение кнопки

Выключатель

Пример выключателя (элемент ActiveX)

Указывает на состояние (да/нет) или режим (вкл./выкл.). При нажатии кнопки она меняет свое состояние на противоположное.

Изображение кнопки

Счетчик

Пример счетчика (элемент ActiveX)

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

Изображение кнопки

Полоса прокрутки

Пример полосы прокрутки (элемент ActiveX)

Используется для прокрутки диапазона значений с помощью кнопок со стрелками или путем перетаскивания ползунка полосы прокрутки. Можно перемещаться по странице значений (с заранее заданным интервалом), щелкая область между ползунком и одной из кнопок со стрелками для прокрутки. Как правило, пользователь также может вводить текст непосредственно в связанную ячейку или текстовое поле.

Изображение кнопки

Надпись

Пример подписи (элемент ActiveX)

Указывает назначение ячейки или текстового поля либо содержит описание (заголовки, подписи, рисунки) или краткие инструкции.

Изображение кнопки

Изображение

Пример изображения (элемент ActiveX)

Выводит изображение, например точечный рисунок, JPEG или GIF.

Рамка

Пример рамки (элемент ActiveX)

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

Примечание: Элемент ActiveX рамки не доступен в разделе ActiveX элементов управления команды Вставка. Тем не менее его можно добавить из диалогового окна Другие элементы, выбрав пункт Рамка Microsoft Forms 2.0.

Изображение кнопки

Другие элементы

Выводит список доступных на компьютере элементов ActiveX, которые можно добавить в настраиваемую форму (например, элементы Calendar Control 12.0 или проигрывателя Windows Media). В этом диалоговом окне также можно зарегистрировать пользовательский элемент управления.

Объекты средств рисования

Примеры фигур вы также можете включить в форму графические элементы SmartArt, фигуры, wordArt и текстовые поля. Можно изменять размер и цвет таких объектов, поворачивать, отражать и объединять их, чтобы получать еще более сложные фигуры. Текст, который вы вводите непосредственно в фигуру или надпись, становится частью объекта — при повороте или отражении объекта он также меняет свое положение. В отличие от элементов ActiveX, отдельным словам и знакам в объекте можно назначать различные атрибуты, например размер или начертание шрифта. Кроме того, объектам можно назначать макросы или гиперссылки. Можно даже связать текст в фигуре или надписи с ячейкой листа и динамически выводить обновленные значения.

Работа с элементами управления и объектами на листе

После добавления форм и элементов ActiveX на форму листа обычно их требуется настроить и упорядочить для создания привлекательной и понятной формы. При этом часто выполняются перечисленные ниже задачи.

  • Управление отображением линий сетки при работе с элементами управления и отключение либо включение вывода линий сетки на готовой форме листа.

  • Выбор или отмена выбора элементов управления с целью указания свойств или дополнительной настройки.

  • Изменение текста элемента управления, например заголовка или подписи.

  • Группировка, копирование, перемещение и выравнивание элементов управления для упорядочения макета формы листа.

  • Изменение размера и форматирования элементов управления для достижения требуемого внешнего вида.

  • Изменение положения или размера элемента управления относительно ячейки.

  • Защита элементов управления и связанных ячеек в соответствии с собственными потребностями.

  • Включение или отключение печати элементов управления вместе с формой листа.

  • Удаление неиспользуемых элементов управления.

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

Определение типа элемента управления на листе

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

  • Если контекстное меню содержит команду Свойства, элемент управления является элементом ActiveX и сейчас используется режим конструктора.

  • Если контекстное меню содержит команду Назначить макрос, это элемент управления формы.

    Совет: Чтобы отобразить правильное shortcut menu для группы box Form control, убедитесь, что вы выбрали периметр, а не внутреннюю часть группы.

  • Если контекстное меню содержит команду Изменить текст, это объект-рисунок.

Пользовательские формы VBA

Для максимальной гибкости можно создавать пользовательские формы пользователей, которые обычно включают один или несколько ActiveX элементов управления. Пользовательские формы вызываются из программного кода VBA, который создается в редакторе Visual Basic. Ниже приведены общие указания по созданию пользовательских форм.

  1. Вставьте пользовательскую форму в проект VBA книги. Для доступа к проекту VBA нужно сначала отобразить редактор Visual Basic (нажмите ALT+F11), а затем в меню Вставка нажать кнопку Пользовательскаяформа.

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

  3. Добавьте элементы ActiveX.

  4. Измените свойства элементов ActiveX.

  5. Создайте процедуры обработчика событий для элементов ActiveX.

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

Перед созданием пользовательских форм рассмотрите возможность применения встроенных диалоговых окон, доступных в Excel. Они включают функции VBA InputBox и MsgBox, метод Excel InputBox, метод GetOpenFilename, метод GetSaveAsFilename и объект Dialogs объекта Application, который содержит все встроенные диалоговые окна Excel.

Дополнительные сведения можно получить в Центре разработчика Microsoft Office Excel.

К началу страницы

Время на прочтение
16 мин

Количество просмотров 8.7K

Изначально архитектура Microsoft Office строилась на основе концепции составных документов, они же документы OLE, активно продвигаемой Microsoft на заре 32-разрядных Windows. В те времена идея «бесшовного» объединения в одном документе данных самых разных форматов казалась заманчивой и увлекательной, и до выявления первых проблем успела прочно врасти во многие масштабные продукты.

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

приятные

сюрпризы

создателям malware

исследователям безопасности.

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

«Дисковым» представлением составного документа является CFBF файл. В этой статье будет рассмотрено встраивание объектов в документы Microsoft Office (а точнее, только аспект безопасности) в контексте данных и кода, загруженных в память во время исполнения.

Формально встраиваемые в документы Microsoft Office объекты можно разделить на следующие группы:

  • Управляющие элементы ActiveX (ActiveX Controls)
  • Внедренные элементы данных OLE (OLE Embedded Objects)
  • Внедряемые файлы (Packages)
  • Встроенные элементы не-OLE

Управляющие элементы ActiveX

Элементы управления ActiveX можно представить как элементы окна программы — скажем, кнопки, переключатели, списки, поля ввода и другие формы — призванные производить некоторые события либо на события отвечать. Когда-то хорошей идеей казалось создавать подобные управляющие элементы универсальными, с возможностью использования в любом приложении, и помещать их с этой целью в компоненты COM.

Встраиваемые в вебстраницы ActiveX представляли известную брешь в безопасности Internet Explorer, меры безопасности со временем усиливались. Браузеры других производителей практически сразу отказались от поддержки ActiveX. Новый браузер Microsoft Edge окончательно расстался с этим пережитком прошлого. Встраивание в документы Office, однако, все еще возможно.

ActiveX в документах предназначены для использования в связке с Visual Basic for Applications. Тем не менее, для их загрузки и активации VBA не требуется, а для загрузки элементов из «белого списка» не требуется и разрешение пользователя.

Уязвимости в последних особенно опасны — настройки по умолчанию, задаваемые при установке приложения, не предполагают ни какой-либо защиты от загрузки этих элементов, ни предупреждения пользователя. Администратору необходимо принудительно ужесточить настройки, запретив загрузку любых элементов ActiveX (отметим однако, что в режиме безопасного просмотра ActiveX не загружаются).

Пример: CVE-2012-0158

Одной из самых опасных уязвимостей в документах Office в 2012 году была CVE-2012-0158. Код загрузки элемента Microsoft ListView Control 6.0 из библиотеки MSCOMCTL.OCX содержал возможность переполнения буфера, что позволяло подменить адрес возврата и выполнить произвольный код. Поскольку элемент находился в «белом списке» ActiveX, загрузка начиналась сразу же при открытии документа. На текущий момент уязвимость устранена, элемент ListView Control по-прежнему считается «безопасным».

Добавление ActiveX в документ

Для добавления управляющего элемента в документ Microsoft Office (для простоты возьмем Word) при помощи интерфейса пользователя необходимо открыть вкладку «Разработчик» (ее видимость настраивается в меню «Параметры Word») и выбрать Элементы управления -> Инструменты из предыдущих версий -> элементы ActiveX. Меню продемонстрирует набор значков, соответствующих элементам Microsoft Forms, а также возможность выбрать ActiveX из списка, составленного из имеющихся в системе элементов, отобранных по ряду критериев.

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

Программное представление

Каждый элемент ActiveX по сути является объектом одного из классов COM, отвечающих определенным требованиям. Загрузка элемента происходит при помощи подсистемы COM, а исполняемый код содержится в одном из модулей, как правило, «внешних» по отношению к приложению-контейнеру. Как и любой COM-объект, элемент ActiveX может быть реализован в виде библиотеки DLL, или же в виде исполняемого EXE-файла. В первом случае библиотека будет загружена в адресное пространство контейнера, во втором — элемент будет обрабатываться в отдельном процессе, с передачей данных между контейнером и объектом посредством COM-маршалинга.

Как и любой объект COM, ActiveX имеет Интерфейсы, Свойства и Методы.

Интерфейсы — это прежде всего набор стандартных интерфейсов, которые обязан иметь класс ActiveX для полноценной загрузки и взаимодействия с контейнером, в частности, IOleControl и IOleObject.

Отсутствие каких-то необходимых интерфейсов может урезать функциональность элемента или прервать его загрузку на каком-то этапе.

Пример: CVE-2015-2424
Уязвимость CVE-2015-2424 была связана с элементом TaskSymbol Class из библиотеки mmcndmgr.dll. Элемент не был предназначен для использования в документах, и не экспортировал интерфейс IDispatch. В процессе загрузки элемента запросившая этот интерфейс процедура получала ошибку и разрушала внутреннюю структуру элемента, что приводило к уязвимости типа use-after-free. На данный момент элемент запрещен к загрузке (несмотря на это, его все еще можно обнаружить в списке для добавления в меню «Разработчик»). Сама уязвимость не устранена.

Помимо стандартных, каждый класс ActiveX экпортирует «основной» интерфейс, представляющий его собственную уникальную функциональность. К примеру, для класса Forms.CommandButton.1 это ICommandButton.

Просматривать интерфейсы ActiveX можно при помощи инструмента OleView, входящего в пакет Microsoft Visual Studio.

Интерфейс элемента определяет его Методы и Свойства. Свойства представляют некоторые данные, определяющие вид и работу элемента. Разработчик ActiveX-элемента присваивает каждому свойству определенное имя, скажем BackColor или GridLineWidth, и тип, например, строка, целое или вещественное двойной точности. Для растровых изображений и значков существует такой тип свойства, как картинка. Клиентская программа может устанавливать отдельные свойства элемента управления, задавая их целочисленные индексы и значения.

С точки зрения низкоуровневой реализации деление на методы и свойства формальное, поскольку «свойства» представлены набором методов get/set. Однако есть и значимое отличие: Методы элемента (его основного интерфейса) могут быть вызваны только программно, в случае документов Office — только из выполняющейся программы VBA. С точки зрения безопасности это не представляет большого интереса, так как исполнение VBA это уже компрометация операционной системы. Свойства же сохраняются в документе и при его открытии будут обработаны и загружены в структуры в памяти даже если исполнение VBA запрещено.

С программной точки зрения, со стороны элемента для сохранения его свойств и состояния в документе контейнер предоставляет интерфейсы IStream, IStorage и IPropertyBag. Их реализация и представление данных в дисковом файле уже не забота элемента ActiveX, и целиком зависит от контейнера и формата документа. Нужно заметить, что набор и формат сохраняемых данных может соответствовать «публично» экспортируемому набору свойств, а может быть и совершенно иным. Рассмотрим примеры реализации, имеющие отношение к Microsoft Office.

Составной файл (compound file, CFBF)

Устаревший формат документов Office, где для хранения данных ActiveX выделялось хранилище нижнего уровня ObjectPool и отдельные подкаталоги внутри него. Поток «01CompObj» содержит идентификатор класса, который в конечном итоге и определяет класс загружаемого объекта. Замена идентификатора непосредственно в hex приведет к попытке загрузки объекта совсем другого класса.

Office Open XML

Современный XML формат документов. Файл представляет собой zip-архив. Данные элементов ActiveX хранятся в подкаталоге ActiveX в файлах с немудреными названиями типа activeX1.xml.

Пример файла:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<ax:ocx ax:classid="{D7053240-CE69-11CD-A777-00DD01143C57}" ax:persistence="persistPropertyBag" xmlns:ax="http://schemas.microsoft.com/office/2006/activeX" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
<ax:ocxPr ax:name="Caption" ax:value="CommandButton1"/>
<ax:ocxPr ax:name="Size" ax:value="2540;847"/>
<ax:ocxPr ax:name="FontName" ax:value="Calibri"/>
<ax:ocxPr ax:name="FontHeight" ax:value="225"/>
<ax:ocxPr ax:name="FontCharSet" ax:value="204"/>
<ax:ocxPr ax:name="FontPitchAndFamily" ax:value="2"/>
<ax:ocxPr ax:name="ParagraphAlign" ax:value="3"/>
</ax:ocx>

В этих файлах в текстовой форме указаны идентификаторы классов. Замена идентификатора также вызовет попытку загрузки элемента другого класса.

Далее файл содержит указание на тип хранения данных объекта: persistPropertyBag, persistStorage или persistStream. Если элемент поддерживает хранение свойств persistPropertyBag, его данные могут быть сохранены в том же текстовом файле, см. пример выше. Если же ему необходимо хранилище или двоичный поток, данные будут сохранены в файле с именем типа activeX1.bin, представляющем собой файл CFBF.

RTF

В документе rtf элемент ActiveX определяется тэгами objectobjocx. Тэг objdata содержит хранилище свойств элемента в виде hex-представления файла CFBF.

{objectobjocxf37objsetsizeobjw1440objh480{*objclass Forms.CommandButton.1}
{*objdata 010500000200000016000000
466f726d732e436f6d6d616e64427574746f6e2e31000000000000000000000e0000
d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006

Загрузка из файла

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

Фильтрация элементов, которые могут быть загружены, имеет множество этапов. Прежде всего отсеиваются классы, указанные в черном списке, известном как Office COM Kill Bit (подветка реестра *OFFICE_KEY*CommonCOM Compatibility). К примеру, флаги, предотвращающие загрузку, имеют такие классы как Microsoft Scriptlet Component и Microsoft Web Browser.

Остальные классы пройдут первоначальную загрузку. Это означает, что библиотека DLL будет загружена в приложение-контейнер, или же будет запущен процесс COM-сервера, реализованного в EXE-файле. Только после этого будут выполняться остальные проверки, включая элементарную — а является ли объект, собственно, представителем ActiveX.

Пример: CVE-2015-6128
В 2015 году исследователь обнаружил, что предварительную загрузку модулей COM можно использовать для обхода ASLR и выполнения произвольного кода за счет загрузки подложных динамических библиотек. В описании вышедшего впоследствии CVE-2015-6128 нет ни слова о Microsoft Office.

Если идентификатор действительно определяет ActiveX, он пройдет еще несколько проверок в нескольких черно-белых списках.

Список ActiveX, загружающихся из .docx на чистых Windows 7 и Office 2016 при настройках по умолчанию.

{00024522-0000-0000-C000-000000000046} RefEdit.Ctrl
{02AF6DD2-77E6-44DF-B3E1-57CF1476D8EA} Microsoft Forms 2.0 OptionButton
{04082FC6-E032-49F2-A263-FE64E9DA1FA3} Microsoft Forms 2.0 HTML TEXT
{0B314611-2C19-4AB4-8513-A6EEA569D3C4} Microsoft Slider Control, version 6.0
{13D557B6-A469-4362-BEAF-52BFD0F180E2} Microsoft Forms 2.0 HTML TextAREA
{19FED08E-EFD1-45da-B524-7BE4774A6AEE} Microsoft Forms 2.0 ListBox
{20DD1B9E-87C4-11D1-8BE3-0000F8754DA1} Microsoft Date and Time Picker Control 6.0 (SP4)
{227B1F3B-C276-4DE0-9FAA-C0AD42ADDCF0} Microsoft Forms 2.0 HTML RESET
{232E456A-87C3-11D1-8BE3-0000F8754DA1} Microsoft MonthView Control 6.0 (SP4)
{3D0FD779-0C2D-4708-A9BA-62F7458A5A53} Microsoft Forms 2.0 ToggleButton
{444D2D27-02E8-486B-9018-3644958EF8A9} FieldListCtrl.2 Object
{4C599241-6926-101B-9992-00000B65C6F9} Microsoft Forms 2.0 Image
{5052A832-2C0F-46c7-B67C-1F1FEC37B280} Microsoft Forms 2.0 Label
{5512D110-5CC6-11CF-8D67-00AA00BDCE1D} Microsoft Forms 2.0 HTML SUBMIT
{5512D112-5CC6-11CF-8D67-00AA00BDCE1D} Microsoft Forms 2.0 HTML IMAGE
{5512D114-5CC6-11CF-8D67-00AA00BDCE1D} Microsoft Forms 2.0 HTML RESET
{5512D116-5CC6-11CF-8D67-00AA00BDCE1D} Microsoft Forms 2.0 HTML CHECKBOX
{5512D118-5CC6-11CF-8D67-00AA00BDCE1D} Microsoft Forms 2.0 HTML OPTION
{5512D11A-5CC6-11CF-8D67-00AA00BDCE1D} Microsoft Forms 2.0 HTML TEXT
{5512D11C-5CC6-11CF-8D67-00AA00BDCE1D} Microsoft Forms 2.0 HTML Hidden
{5512D11E-5CC6-11CF-8D67-00AA00BDCE1D} Microsoft Forms 2.0 HTML Password
{5512D122-5CC6-11CF-8D67-00AA00BDCE1D} Microsoft Forms 2.0 HTML SELECT
{5512D124-5CC6-11CF-8D67-00AA00BDCE1D} Microsoft Forms 2.0 HTML TextAREA
{556C2772-F1AD-4DE1-8456-BD6E8F66113B} Microsoft ImageList Control 6.0 (SP6)
{585AA280-ED8B-46B2-93AE-132ECFA1DAFC} Microsoft StatusBar Control 6.0 (SP6)
{5CBA34AE-E344-40CF-B61D-FBA4D0D1FF54} Microsoft Forms 2.0 HTML CHECKBOX
{5E90CC8B-E402-4350-82D7-996E92010608} Microsoft Forms 2.0 HTML OPTION
{603C7E80-87C2-11D1-8BE3-0000F8754DA1} Microsoft UpDown Control 6.0 (SP4)
{6240EF28-7EAB-4dc7-A5E3-7CFB35EFB34D} Microsoft Forms 2.0 ScrollBar
{65BCBEE4-7728-41A0-97BE-14E1CAE36AAE} Microsoft Office List 16.0
{6C177EBD-C42D-4728-A04B-4131892EDBF6} Microsoft Forms 2.0 ComboBox
{787A2D6B-EF66-488D-A303-513C9C75C344} Microsoft Forms 2.0 HTML Password
{79176FB0-B7F2-11CE-97EF-00AA006D2776} Microsoft Forms 2.0 SpinButton
{86F56B7F-A81B-478d-B231-50FD37CBE761} Microsoft Forms 2.0 CommandButton
{87DACC48-F1C5-4AF3-84BA-A2A72C2AB959} Microsoft ImageComboBox Control, version 6.0
{8B2ADD10-33B7-4506-9569-0A1E1DBBEBAE} Microsoft Toolbar Control 6.0 (SP6)
{8BD21D10-EC42-11CE-9E0D-00AA006002F3} Microsoft Forms 2.0 TextBox
{8BD21D20-EC42-11CE-9E0D-00AA006002F3} Microsoft Forms 2.0 ListBox
{8BD21D30-EC42-11CE-9E0D-00AA006002F3} Microsoft Forms 2.0 ComboBox
{8BD21D40-EC42-11CE-9E0D-00AA006002F3} Microsoft Forms 2.0 CheckBox
{8BD21D50-EC42-11CE-9E0D-00AA006002F3} Microsoft Forms 2.0 OptionButton
{8BD21D60-EC42-11CE-9E0D-00AA006002F3} Microsoft Forms 2.0 ToggleButton
{9432194C-DF54-4824-8E24-B013BF2B90E3} Microsoft Forms 2.0 HTML SUBMIT
{95F0B3BE-E8AC-4995-9DCA-419849E06410} Microsoft TreeView Control 6.0 (SP6)
{978C9E23-D4B0-11CE-BF2D-00AA003F40D0} Microsoft Forms 2.0 Label
{9A948063-66C3-4F63-AB46-582EDAA35047} Microsoft TabStrip Control 6.0 (SP6)
{9BDAC276-BE24-4F04-BB22-11469B28A496} Microsoft Forms 2.0 HTML IMAGE
{A0E7BF67-8D30-4620-8825-7111714C7CAB} Microsoft ProgressBar Control, version 6.0
{CCDB0DF2-FD1A-4856-80BC-32929D8359B7} Microsoft ListView Control 6.0 (SP6)
{D7053240-CE69-11CD-A777-00DD01143C57} Microsoft Forms 2.0 CommandButton
{DCA0ED3C-B95D-490f-9C60-0FF3726C789A} Microsoft Forms 2.0 Image
{DD4CB8C5-F540-47ff-84D7-67390D2743CA} Microsoft Forms 2.0 TextBox
{DFD181E0-5E2F-11CE-A449-00AA004A803D} Microsoft Forms 2.0 ScrollBar
{E9729012-8271-4e1f-BC56-CF85F914915A} Microsoft Forms 2.0 CheckBox
{EA778DB4-CE69-4da5-BC1D-34E2168D5EED} Microsoft Forms 2.0 SpinButton
{EAE50EB0-4A62-11CE-BED6-00AA00611080} Microsoft Forms 2.0 TabStrip
{F14E8B03-D080-4D3A-AEBA-355E77B20F3D} Microsoft Forms 2.0 HTML SELECT
{F8CF7A98-2C45-4c8d-9151-2D716989DDAB} Microsoft Visio Document
{FB453AD8-2EF4-44D3-98A8-8C6474E63CE4} Microsoft Forms 2.0 HTML Hidden
{FDEA20DB-AC7A-42f8-90EE-82208B9B4FC0} Microsoft Forms 2.0 TabStrip
{FE38753A-44A3-11D1-B5B7-0000C09000C4} Microsoft Flat Scrollbar Control 6.0 (SP4)

Можно видеть, что значительное место в списке занимают компоненты группы Microsoft Forms. Это набор управляющих элементов, поставляемых с пакетом Office, вы можете видеть их на панели «элементы ActiveX». Изначально все они регистрировались как «безопасные», но со временем выяснилось, что для отдельных элементов это не так. К примеру, элемент Frame загружает любые другие ActiveX, не проверяя никаких списков (в последних версиях это «исправлено», но собственный блэклист Frame отличается от общего Office). По этой причине часть элементов Microsoft Forms может быть загружена в документ только с разрешения пользователя. Microsoft Forms Frame также требует согласия пользователя (при настройках по умолчанию), зато позволяет загрузить некоторые элементы из Kill Bit списка, которые не могли бы быть загружены при других условиях.

Следовательно, если атакующему удается убедить пользователя разрешить загрузку ActiveX, Frame поможет ему существенно расширить «арсенал» за счет таких элементов как, например Web Browser.

Формат хранения свойств Microsoft Forms частично документирован спецификацией [MS-OFORMS].

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

Многие популярные приложения дополняют эти списки собственными ActiveX. В случае обнаружения уязвимости она будет отражена в бюллетене как имеющая отношение к приложению в состав которого входит. При этом единственным путем эксплуатации уязвимости могут оказаться документы Office.

Пример: Flash ActiveX
Flash ActiveX особенно полюбился вирусописателям за стабильно обнаруживаемые уязвимости и постоянное место в «белых списках» IE и Office. Первые известные уязвимости в этом компоненте появились еще в 2008 году, одна из последних CVE-2018-4878 закрыта в феврале этого года. С угасанием популярности IE документы Office стали основным путем распространения эксплойтов для Flash.

Внедряемые элементы данных OLE

Внедряемые элементы OLE призваны реализовать концепцию «документа в документе» с возможность редактирования «на месте» данных различных форматов, обрабатываемых другими приложениями. Подобно ActiveX, OLE-документы реализованы на основе COM.

Добавить OLE-элемент в документ Word можно следующим образом: открыть вкладку «Вставка» и выбрать Текст -> Объект. Программа выведет список типов документов, для которых зарегистрированы OLE-обработчики. Как и в случае с ActiveX, этот список мало соответствует набору классов, которые действительно могут быть загружены в качестве документов OLE.

Программное представление

Как и в случае ActiveX реализация любого OLE-документа представлена соответствующим классом COM, выполненным в виде DLL или EXE. Компонент экспортирует необходимые служебные интерфейсы, а сохранение состояния в документе-контейнере выполняется посредством интерфейсов IPersist*.

В документе формата CFBF данные объектов OLE сохраняются в хранилище второго уровня ObjectPool. Набор потоков в целом похож на соответствующий элементам ActiveX.

В документах Open Office XML данные объекта OLE сохраняются в подкаталоге embeddings, в файле-хранилище CFBF с именем типа oleObject1.bin.

В документах RTF информация об объекте сохраняется под тэгом objectobjemb. Раздел содержит также хранилище, закодированное как hex-представление файла CFBF.

{objectobjembobjw8307objh553{*objclass WordPad.Document.1}
{*objdata 010500000200000013000000576f72645061642e446f63756d656e742e31000000000000000000000a0000
d0cf11e0a1b11ae100000000

Формат RTF выделяется тем, что поддерживает тэг objupdate, вызывающий автоматическую активацию элемента в то время как по умолчанию OLE-элементы неактивны при загрузке.

Пример: CVE-2017-11882
Уязвимость CVE-2017-11882 OLE компонента Equation Editor благодаря обработке объекта в отдельном процессе давала возможность стабильной и универсальной эксплуатации. Тэг objupdate заставлял Word загружать уязвимый компонент сразу при открытии документа.

Пример: встроенные элементы Excel с макровирусом
Исследователями обнаружены вредоносные rtf-документы, не использующие никаких новых уязвимостей. Документы содержат в качестве встроенных объектов несколько документов Excel с макросом. Расчет сделан на то, что пользователь, вынужденный после открытия документа несколько раз подряд отказываться от выполнения макроса, в итоге «сдастся» и разрешит выполнение. На данный момент техника все еще работает.

Значительное отличие от ActiveX в случае внедряемых элементов OLE состоит в том, что идентификатор класса записывается непосредственно в файл хранилища функцией WriteClassStg. Эта методика унаследована из очень давних времен, когда в Microsoft увлеченно развивали концепцию «сериализации» и хранения объектов с их состоянием в формате CFBF. Документ-контейнер также сохраняет идентификатор класса внедряемого элемента, но загружен будет объект именно того класса, который указан в хранилище. Этот идентификатор возможно заменить, заставив приложение загрузить объект вовсе не предназначенный для этих целей.
Возможно отредактировать и данные элемента, что в определенных случаях приводит к выявлению уязвимостей.

Объекты OLE также проходят многочисленные проверки на возможность загрузки, что затрудняет получение полного списка потенциально загружаемых элементов. Набор элементов, которые могут быть загружены как объекты OLE, отличается от списка загружаемых ActiveX. В частности, проверку они проходят по KillBit списку принадлежащему не Office, а Internet Explorer (HKEY_LOCAL_MACHINESOFTWAREMicrosoftInternet ExplorerActiveX Compatibility).

OLE по ссылке

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

Пример: CVE-2017-0199
Уязвимость CVE-2017-0199 заключалась в возможности добавления в документ «объекта по ссылке» формата hta. Последний представляет собой html с возможностью выполнения кода, то есть, фактически является исполняемым файлом. Обработчик автоматически скачивал и выполнял hta, позволяя выполнить произвольный код при открытии документа.

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

Внедряемые файлы (Packages)

Документы Office поддерживают возможность добавления любого файла (Объект -> Создание из файла или просто перетащить иконку файла в поле редактирования). Технически это реализовано добавлением в документ встраиваемого элемента Object Packager, записывающего в собственные данные желаемый файл. Object Packager позволяет заменить иконку и подпись файла, а также задать командную строку для открытия. Может он включать и файлы «по ссылке», когда открытие файла происходит не из собственного хранилища, а по указанному пути, в том числе и сетевому.

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

Пример: файлы в теле сообщения Outlook
Сообщения Outlook, которые также являются составными документами, позволяют добавлять элементы Object Packager в тело письма. Для пользователя элемент выглядит как изображение, произвольно выбранное злоумышленником. Двойной клик по изображению открывает упакованный файл. Злоумышленнику остается подобрать тип данных из тех, что еще не попали под ужесточение политик безопасности.

Встроенные элементы, реализованные не с помощью OLE

На данный момент наибольшую угрозу/интерес из не-OLE элементов могут представлять изображения, добавляемые в документ по ссылке. При открытии документа не в защищенном режиме изображения скачиваются автоматически, что может приводить к раскрытию местоположения и личности пользователя, скачавшего документ через анонимизирующие прокси или получившего конфиденциальный документ из третьих рук. Эта методика, в частности, была реализована в инструменте Scribbles, находящемся на вооружении спецслужб США.
В локальной сети Windows автоматическое скачивание изображений по ссылке делает возможной эксплуатацию уязвимости NTLMRelay. Механизм ссылок на картинки не совместим с требованиями безопасности сетей ActiveDirectory, поскольку администратор, получающий подобный документ по сути исполняет код злоумышленника с полными административными привилегиями.

Методы защиты

Что можно сделать? В целом, немного.

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

Управляющие элементы ActiveX можно отключить в настройках Trust Center

Обратите внимание, что для встроенных элементов OLE это не работает.

Вставка командной кнопки на рабочий лист для начинающих программировать с нуля. Кнопки из коллекций «Элементы управления формы» и «Элементы ActiveX».

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

Добавление вкладки «Разработчик»

Вкладка с инструментами, связанными с VBA Excel, называется «Разработчик». Если этой вкладки нет на вашей ленте, добавьте ее через окно «Параметры»:

Окно «Параметры Excel»

Порядок действий:

  • Откройте окно «Параметры» через меню «Файл».
  • Выберите вкладку «Настроить ленту».
  • В правой колонке установите галочку у пункта «Разработчик» и нажмите «OK».

Кнопка – элемент управления формы

Вставка кнопки на лист

  1. Выберите вкладку «Разработчик» и нажмите на кнопку «Вставить».
  2. Нажмите на значок кнопки в коллекции «Элементы управления формы».

Добавление кнопки на рабочий лист (элемент управления формы)

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

Кнопка (элемент управления формы)

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

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

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

Создание процедуры для кнопки

Кнопке из коллекции «Элементы управления формы» можно назначить макрос (процедуру), размещенную в стандартном программном модуле.

Создайте или откройте файл Excel с расширением .xlsm (Книга Excel с поддержкой макросов) и перейдите в редактор VBA, нажав сочетание клавиш «Левая_клавиша_Alt+F11».

Если вы не создавали ранее в этом проекте VBA стандартный программный модуль, нажмите кнопку «Module» во вкладке «Insert» главного меню. То же подменю откроется при нажатии на вторую кнопку (после значка Excel) на панели инструментов.

Вставка модуля в редакторе VBA Excel

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

Нажмите кнопку «Procedure…» во вкладке «Insert» главного меню. Та же ссылка будет доступна при нажатии на вторую кнопку после значка Excel на панели инструментов.

Вставка процедуры в редакторе VBA Excel

В открывшемся окне добавления шаблона процедуры оставьте выбранным переключатель «Sub», вставьте в поле «Name» название процедуры «NovayaProtsedura» и нажмите «OK».

Окно добавления процедуры в редакторе VBA Excel

В стандартный программный модуль будет вставлен шаблон процедуры «NovayaProtsedura».

Шаблон процедуры в редакторе VBA Excel

Вставьте внутрь шаблона процедуры следующий код:

‘Записываем в ячейку A1 число 44

Cells(1, 1) = 44

‘Записываем в ячейку B1 число 56

Cells(1, 2) = 56

‘Записываем в ячейку C1 формулу, которая

‘вычисляет сумму значений ячеек A1 и B1

Cells(1, 3) = «=A1+B1»

Процедура в редакторе VBA Excel

На этом процедура (подпрограмма, макрос) для кнопки готова.

Назначение макроса кнопке

Кликните правой кнопкой мыши по кнопке на рабочем листе и в контекстном меню выберите строку «Назначить макрос…», откроется окно «Назначить макрос объекту».

Окно «Назначить макрос объекту»

Выберите в списке процедуру «NovayaProtsedura» и нажмите «OK». Кликните левой кнопкой мыши по рабочему листу, чтобы командная кнопка вышла из режима редактирования.

Теперь можете нажать созданную кнопку из коллекции «Элементы управления формы» для проверки ее работоспособности.

Кнопка – элемент ActiveX

Вставка кнопки на лист

  1. Выберите вкладку «Разработчик» и нажмите на кнопку «Вставить».
  2. Нажмите на значок кнопки в коллекции «Элементы ActiveX».

Добавление кнопки на рабочий лист (элемент ActiveX)

  1. Кликните по рабочему листу и кнопка из коллекции «Элементы ActiveX» появится рядом с курсором.
  2. Автоматически включится режим редактирования, включение и отключение которого осуществляется кнопкой «Режим конструктора».

Кнопка (элемент ActiveX)

Ухватив кнопку за кружок, можно изменить ее размер, а ухватив за границу – перетащить на другое место. Чтобы отредактировать наименование кнопки, нужно кликнуть на ней правой кнопкой мыши и в контекстном меню выбрать «Объект CommandButton» > «Edit».

Добавление процедуры

Кликните дважды по кнопке из коллекции «Элементы ActiveX» левой кнопкой мыши в режиме конструктора. Это приведет к открытию модуля листа, на который вставлена кнопка, и записи шаблона процедуры «CommandButton1_Click».

Шаблон процедуры в модуле рабочего листа Excel

Вставьте внутрь шаблона процедуры код, который будет очищать ячейки A1, B1 и C1:

Процедура в модуле рабочего листа Excel

Перейдите на рабочий лист и, если кнопка «Режим конструктора» затемнена, нажмите на нее, чтобы выйти из режима редактирования. После этого нажмите кнопку «CommandButton1», и она очистит ячейки, заполненные ранее нажатием кнопки «Кнопка 1».

Две кнопки на рабочем листе Excel

Теперь кнопка из коллекции «Элементы управления формы» (Кнопка 1) будет заполнять ячейки диапазона «A1:C1», а кнопка из коллекции «Элементы ActiveX» (CommandButton1) очищать их.


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

Именно для удобства были созданы дополнительные графические элементы, чтобы пользователь быстро мог взаимодействовать с приложением. Однако есть элементы Form Controls и ActiveX Controls для выбора, какие использовать?

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

Небольшой пример элементов Form Controls:Button Form Control

Для выделения такого элемента нужно удерживать клавишу Ctrl и нажать по нему левой кнопкой мыши, тогда можно изменить размеры или передвинуть элемент в другое место. Если нажать правую кнопку мыши над элементом и выбрать пункт «Format Control» появится окно настроек, где на вкладке «Control» можно указать диапазон ячеек для получения данных и/или связную ячейку на листе.

Особенности элементов этого типа:

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

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

Небольшой пример элемента ActiveX:

ActiveX element

Переключатель «Design Mode» должен быть активен если мы хотим редактировать ActiveX элементы, когда переключатель будет выключен готовые элементы можно будет использовать. Для отображения всех свойств этого графического объекта есть специальная кнопка «Properties» сразу возле переключателя «Design Mode».

Особенности элементов этого типа:

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

Содержание:

  1. Вставьте фигуру и назначьте ей макрос
  2. Сохранение формы видимой при скрытии / изменении размера строк / столбцов
  3. Назначение макроса кнопке управления формой
  4. Назначение макроса кнопке управления ActiveX

Хотя есть много разных способов запустить макрос в Excel, ни один из этих методов не может быть таким простым и удобным, как нажатие кнопки.

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

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

Для этого урока я буду использовать приведенный ниже макрокод VBA (который просто выбирает ячейку A1 на активном листе, вводит в нее текст «Доброе утро» и окрашивает ее в красный цвет).
Sub GoodMorning () с ActiveSheet.Range ("A1") .Value = "Доброе утро" .Interior.Color = vbRed Конец с концом Sub
Приведенный выше код VBA помещается в обычный модуль редактора VB.

Теперь давайте перейдем к делу и посмотрим, как можно назначить этот макрос кнопке или фигуре в Excel!

Вставьте фигуру и назначьте ей макрос

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

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

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

Ниже приведены шаги для вставки фигуры в Excel:

  1. Щелкните вкладку Вставка
  2. В группе иллюстраций нажмите Фигуры
  3. В параметрах фигур выберите параметр «Прямоугольник». Вы заметите, что ваш курсор изменится на значок плюса
  4. Щелкните в любом месте листа. Это вставит прямоугольную форму на лист.
  5. Измените размер прямоугольника и отформатируйте его (при желании задайте рамку, цвет, оттенок).

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

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

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

  1. Щелкните правой кнопкой мыши фигуру, которой вы хотите назначить макрос
  2. В появившемся меню выберите «Назначить макрос». Откроется диалоговое окно назначения макроса.
  3. В диалоговом окне «Назначить макрос» вы увидите список всех макросов, имеющихся в книге.
  4. Щелкните имя макроса, который вы хотите назначить этой фигуре. В этом примере я нажимаю на макрос под названием «GoodMorning.
  5. Нажмите ОК.

Вот и все!

Выбранный макрос теперь назначен фигуре.

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

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

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

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

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

Сохранение формы видимой при скрытии / изменении размера строк / столбцов

В Excel. когда вы вставляете фигуру, она располагается над ячейками — как диаграмма / объект.

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

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

Если вы не хотите, чтобы это произошло, выполните следующие действия:

  1. Щелкните форму правой кнопкой мыши
  2. Нажмите «Форматировать фигуру».
  3. На панели «Формат фигуры» (или в диалоговом окне, если вы используете Excel 2010 или более ранние версии) выберите «Размер и свойства».
  4. В разделе «Свойства» выберите вариант «Не перемещать и не изменять размер вместе с ячейками».
  5. Закройте панель (или диалоговое окно)

Теперь, когда вы изменяете размер строк / столбцов или скрываете их, форма останется на своем месте.

Назначение макроса кнопке управления формой

Если вас не слишком интересует форматирование кнопки и вас устраивает обычная серая кнопка, вы можете быстро вставить ее из элемента управления формы (или элемента управления ActiveX, как показано ниже), а затем назначить ему макрос.

Чтобы это работало, вам понадобится вкладка Разработчик на ленте. Если у вас его нет, вот подробное пошаговое руководство по размещению вкладки разработчика на ленте Excel.

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

  1. Перейдите на вкладку «Разработчик».
  2. В группе Ctrl нажмите Insert.
  3. В появившихся параметрах в параметрах элементов управления формы нажмите кнопку (элемент управления формы).
  4. Щелкните в любом месте листа. Это вставит кнопку в любое место, где вы щелкнете, и автоматически откроет диалоговое окно «Назначить макрос».
  5. В диалоговом окне «Назначить макрос» вы увидите список всех макросов, имеющихся в книге.
  6. Щелкните имя макроса, который вы хотите назначить этой кнопке. В этом примере я нажимаю на макрос под названием «GoodMorning».
  7. Нажмите ОК.

Вышеупомянутые шаги вставят кнопку, которой назначен указанный макрос.

По умолчанию это будет небольшая кнопка с написанным на ней текстом, например «Кнопка». Вы можете изменить текст на все, что захотите, а также можете изменить форму кнопки (перетаскивая края).

Поскольку это объект, который помещается на лист (как фигуры / диаграммы), вы можете перетащить его в любое место на листе.

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

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

Вы получаете эти параметры форматирования кнопки, когда щелкаете правой кнопкой мыши по кнопке, а затем нажимаете «Управление форматом».

Откроется диалоговое окно «Управление форматом», в котором вы можете изменить тип / цвет шрифта, размер, выравнивание и т. Д.

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

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

  1. Щелкните правой кнопкой мыши по кнопке
  2. Нажмите на Управление форматом
  3. Перейдите на вкладку «Свойства».
  4. Выберите вариант — «Не перемещать и не изменять размер вместе с ячейками».
  5. Нажмите ОК

Назначение макроса кнопке управления ActiveX

Помимо кнопки управления формой, есть также кнопка управления ActiveX, которой вы можете назначить макрос.

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

Хотите знать, почему у нас есть два разных типа кнопок — Form Ctrl и ActiveX? В то время как элементы управления формы встроены в приложение Excel, ActiveX загружается из отдельной библиотеки DLL (библиотеки динамической компоновки). Это делает кнопки управления формой намного более надежными и надежными по сравнению с кнопками ActiveX. Вы можете узнать больше об этой разнице здесь, в сообщении в StackOverflow.

Это также иногда делает ActiveX немного глючным и непредсказуемым. Итак, пока я расскажу об этом в этом руководстве, я не рекомендую использовать кнопку ActiveX и назначать ей макрос.

Чтобы вставить кнопку ActiveX и затем назначить ей макрос, выполните следующие действия:

  1. Перейдите на вкладку «Разработчик».
  2. В группе Ctrl нажмите Insert.
  3. В появившихся опциях в опциях ActiveX Ctrls щелкните опцию Command Button.
  4. Щелкните в любом месте листа. Это вставит кнопку куда бы вы ни щелкнули.
  5. Дважды щелкните кнопку, и откроется бэкэнд редактора VB, где вы можете разместить код для кнопки ActiveX.

С элементом управления ActiveX вы получаете гораздо больше гибкости с помощью одной кнопки. Например, вы можете указать один макрос, который будет запускаться при простом нажатии кнопки один раз, и другой макрос при двойном щелчке или даже еще один макрос при использовании клавиш со стрелками вверх / вниз.

Опять же, это не то, что вам нужно использовать в своей обычной работе.

Другой вариант, который вы можете рассмотреть (при работе с кнопками / фигурами и назначении им макросов), — это добавить макрос на панель быстрого доступа. Таким образом, вы можете запустить макрос одним щелчком мыши, и он всегда будет виден в QAT.

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

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 &#8211 В чем разница между «Элементами управления» и «Элементом 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: Больше информации:

Выпадающий список в ячейке листа

Видео

 У кого мало времени и нужно быстро ухватить суть — смотрим обучающее видео:

Кому интересны подробности и нюансы всех описанных способов — дальше по тексту.

Способ 1. Примитивный

Один щелчок правой кнопкой мыши по пустой ячейке под столбцом с данными, команда контекстного меню Выбрать из раскрывающегося списка (Choose from drop-down list) или нажать сочетание клавиш ALT+стрелка вниз. Способ не работает, если ячейку и столбец с данными отделяет хотя бы одна пустая строка или вам нужен товар, который еще ни разу не вводился выше:

dropdown1.gif

Способ 2. Стандартный

  1. Выделите ячейки с данными, которые должны попасть в выпадающий список (например, наименованиями товаров).
  2. Если у вас Excel 2003 или старше — выберите в меню Вставка — Имя — Присвоить (Insert — Name — Define), если Excel 2007 или новее — откройте вкладку Формулы (Formulas) и воспользуйтесь кнопкой Диспетчер имен (Name Manager), затем Создать. Введите имя (можно любое, но обязательно без пробелов и начать с буквы!) для выделенного диапазона (например Товары). Нажмите ОК.
  3. Выделите ячейки (можно сразу несколько), в которых хотите получить выпадающий список и выберите в меню (на вкладке) Данные — Проверка (Data — Validation). Из выпадающего списка Тип данных (Allow) выберите вариант Список (List) и введите в строчку Источник (Source) знак равенства и имя диапазона (т.е. =Товары).

dropdown2.gif

Нажмите ОК.

Все! Наслаждайтесь!

dropdown3.gif

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

Способ 3. Элемент управления

Этот способ представляет собой вставку на лист нового объекта — элемента управления «поле со списком» с последующей привязкой его к диапазонам на листе. Для этого:

  1. В Excel 2007/2010 откройте вкладку Разработчик (Developer). В более ранних версиях — панель инструментов Формы (Forms) через меню Вид — Панели инструментов — Формы (View — Toolbars — Forms). Если этой вкладки не видно, то нажмите кнопку Офис — Параметры Excel флажок Отображать вкладку Разработчик на ленте (Office Button — Excel Options — Show Developer Tab in the Ribbon)
  2. Найдите значок выпадающего списка среди элементов управления форм (не ActiveX!). Ориентируйтесь по всплывающим подсказкам — Поле со списком:
    dropdown4.gif
    Щелкните по значку и нарисуйте небольшой горизонтальный прямоугольник — будущий список.
  3. Щелкните по нарисованному списку правой кнопкой мыши и выберите команду Формат объекта (Format control). В появившемся диалоговом окне задайте
    • Формировать список по диапазону — выделите ячейки с наименованиями товаров, которые должны попасть в список
    • Связь с ячейкой — укажите ячейку куда нужно выводить порядковый номер выбранного пользователем элемента.
    • Количество строк списка — сколько строк показывать в выпадающем списке. По умолчанию — 8, но можно больше, чего не позволяет предыдущий способ.

После нажатия на ОК списком можно пользоваться.

Чтобы вместо порядкового номера элемента выводилось его название можно дополнительно использовать функцию ИНДЕКС (INDEX), которая умеет выводить содержимое нужной по счету ячейки из диапазона:

dropdown6.gif

Способ 4. Элемент ActiveX

Этот способ частично напоминает предыдущий. Основное отличие в том, что на лист добавляется не элемент управления, а элемент ActiveX «Поле со списком» из раскрывающегося набора под кнопкой Вставить (Insert) с вкладки Разработчик (Developer):

dropdown7.gif

Механизм добавления тот же — выбираем объект из списка и рисуем его на листе. А вот дальше начинаются серьезные отличия от предыдущего способа.

Во-первых, созданный выпадающий ActiveX список может находится в двух принципиально разных состояниях — режиме отладки, когда можно настраивать его параметры и свойства, двигать его по листу и менять размеры и — режиме ввода, когда единственное, что можно — выбирать из него данные. Переключение между этими режимами происходит с помощью кнопки Режим Конструктора (Design Mode) на вкладке Разработчик (Developer):

dropdown8.gif

Если эта кнопка нажата, то мы можем настраивать параметры выпадающего списка, нажав соседнюю кнопку Свойства (Properties), которая откроет окно со списком всех возможных настроек для выделенного объекта:

dropdown9.gif

Самые нужные и полезные свойства, которые можно и нужно настроить:

  • ListFillRange — диапазон ячеек, откуда берутся данные для списка. Выделить мышью диапазон он не даст, надо просто вписать его руками с клавиатуры (например, Лист2!A1:A5)
  • LinkedCell — связанная ячейка, куда будет выводиться выбранный из списка элемент
  • ListRows — количество отображаемых строк
  • Font — шрифт, размер, начертание (курсив, подчеркивание и т.д. кроме цвета)
  • ForeColor и BackColor — цвет текста и фона, соответственно

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

При использовании этого способа, также возможно указывать в качестве ListFillRange не только одномерные диапазоны. Можно, например задать диапазон из двух столбцов и нескольких строк, указав дополнительно, что выводить нужно два столбца (свойство ColumnCount=2). Тогда можно получить весьма привлекательные результаты, окупающие все потраченные на дополнительные настройки усилия:

dropdown10.gif

Итоговая сравнительная таблица всех способов

  Способ 1. Примитивный Способ 2. Стандартный Способ 3. Элемент управления Способ 4. Элемент ActiveX
Сложность низкая средняя высокая высокая
Возможность настройки шрифта, цвета и т.д. нет нет нет да
Количество отображаемых строк всегда 8 всегда 8 любое любое
Быстрый поиск элемента по первым буквам нет нет нет да
Необходимость использования дополнительной функции ИНДЕКС нет нет да нет
Возможность создания связанных выпадающих списков нет да нет нет

Ссылки по теме:

  • Выпадающий список с данными из другого файла
  • Создание зависимых выпадающих списков
  • Автоматическое создание выпадающих списков надстройкой PLEX
  • Выбор фото из выпадающего списка
  • Автоматическое удаление уже использованных элементов из выпадающего списка
  • Выпадающий список с автоматическим добавлением новых элементов

Понравилась статья? Поделить с друзьями:
  • Excel макрос изменить ячейку
  • Excel макрос изменение шрифта
  • Excel макрос изменение листа
  • Excel макрос значение ячейки листа
  • Excel макрос защиты ячейки