Vba excel как изменить цвет кнопки

Элемент управления пользовательской формы CommandButton, используемый в VBA Excel для запуска процедур и макросов. Свойства кнопки, примеры кода с ней.

Элемент управления пользовательской формы CommandButton, используемый в VBA Excel для запуска процедур и макросов. Свойства кнопки, примеры кода с ней.

UserForm.CommandButton – это элемент управления пользовательской формы, предназначенный исключительно для запуска процедур и макросов VBA Excel.

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

Для запуска процедур и макросов обычно используется событие кнопки – Click.

Свойства элемента CommandButton

Свойство Описание
AutoSize Автоподбор размера кнопки. True – размер автоматически подстраивается под длину введенной надписи (заголовка). False – размер элемента управления определяется свойствами Width и Height.
BackColor Цвет элемента управления CommandButton.
Caption Надпись (заголовок) – текст, отображаемый на кнопке.
ControlTipText Текст всплывающей подсказки при наведении курсора на кнопку.
Enabled Возможность взаимодействия пользователя с элементом управления CommandButton. True – взаимодействие включено, False – отключено (цвет надписи становится серым).
Font Шрифт, начертание и размер текста надписи.
Height Высота элемента управления.
Left Расстояние от левого края внутренней границы пользовательской формы до левого края элемента управления.
Picture Добавление изображения вместо текста заголовка или дополнительно к нему.
PicturePosition Выравнивание изображения и текста на кнопке.
TabIndex Определяет позицию элемента управления в очереди на получение фокуса при табуляции, вызываемой нажатием клавиш «Tab», «Enter». Отсчет начинается с 0.
Top Расстояние от верхнего края внутренней границы пользовательской формы до верхнего края элемента управления.
Visible Видимость элемента управления CommandButton. True – элемент отображается на пользовательской форме, False – скрыт.
Width Ширина элемента управления.
WordWrap Перенос текста заголовка на новую строку при достижении ее границы. True – перенос включен, False – перенос выключен.

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

Пример кнопки с надписью и изображением

Пример кнопки с надписью и изображением

Примеры кода VBA Excel с кнопкой

Изначально для реализации примеров на пользовательскую форму UserForm1 добавлена кнопка CommandButton1.

Пример 1

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

Условие примера 1

  • Действия при загрузке формы: замена заголовка формы по умолчанию на «Пример 1», замена надписи кнопки по умолчанию на «Кнопка», запись цвета кнопки по умолчанию в переменную уровня модуля.
  • Сделать, чтобы при наведении курсора на кнопку, она изменяла цвет на зеленый, а надпись «Кнопка» менялась на надпись «Нажми!»
  • Добавление кода VBA Excel, который будет при удалении курсора с кнопки возвращать ей первоначальные настройки: цвет по умолчанию и надпись «Кнопка».

Решение примера 1

1. Объявляем в разделе Declarations модуля пользовательской формы (в самом начале модуля, до процедур) переменную myColor:

2. Загружаем пользовательскую форму с заданными параметрами:

Private Sub UserForm_Initialize()

  Me.Caption = «Пример 1»

    With CommandButton1

      myColor = .BackColor

      .Caption = «Кнопка»

    End With

End Sub

3. Меняем цвет и надпись кнопки при наведении на нее курсора мыши:

Private Sub CommandButton1_MouseMove(ByVal _

Button As Integer, ByVal Shift As Integer, _

ByVal X As Single, ByVal Y As Single)

  With CommandButton1

    .BackColor = vbGreen

    .Caption = «Нажми!»

  End With

End Sub

4. Возвращаем цвет и надпись кнопки при удалении с нее курсора мыши:

Private Sub UserForm_MouseMove(ByVal _

Button As Integer, ByVal Shift As Integer, _

ByVal X As Single, ByVal Y As Single)

  With CommandButton1

    .BackColor = myColor

    .Caption = «Кнопка»

  End With

End Sub

Все процедуры размещаются в модуле пользовательской формы. Переменная myColor объявляется на уровне модуля, так как она используется в двух процедурах.

Пример 2

Запуск кода, размещенного внутри процедуры обработки события Click элемента управления CommandButton:

Private Sub CommandButton1_Click()

  MsgBox «Код внутри обработки события Click»

End Sub

Пример 3

Запуск внешней процедуры из процедуры обработки события Click элемента управления CommandButton.

Внешняя процедура, размещенная в стандартном модуле проекта VBA Excel:

Sub Test()

  MsgBox «Запуск внешней процедуры»

End Sub

Вызов внешней процедуры из кода обработки события Click

  • с ключевым словом Call:

Private Sub CommandButton1_Click()

  Call Test

End Sub

  • без ключевого слова Call:

Private Sub CommandButton1_Click()

  Test

End Sub

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

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

Измените цвет кнопки ActiveX Control с изменением свойств
Измените цвет кнопки управления ActiveX с кодом VBA


Измените цвет кнопки ActiveX Control с изменением свойств

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

1. Вставьте элемент управления ActiveX кнопку, нажав Застройщик > ВставитьИ выберите Кнопка управления под Элементы управления ActiveX раздел, см. снимок экрана:

документ-изменить-кнопку-цвет1

Внимание: Если Застройщик вкладка не отображается на ленте, вы можете нажать Файл > Опция > Настроить ленту, затем проверьте Застройщик на правой панели, чтобы отобразить Застройщик меню.

2. Затем перетащите мышь, чтобы нарисовать кнопку.

документ-изменить-кнопку-цвет1

3. Затем нажмите кнопку и щелкните правой кнопкой мыши, выберите Объявления из контекстного меню, а во всплывающем Объявления диалоговое окно, нажмите Алфавитный Вкладка, а затем нажмите кнопку НазадЦвет выпадающий список, чтобы выбрать один понравившийся цвет, см. скриншоты:

4. Затем закройте диалоговое окно, и цвет вашей командной кнопки будет изменен следующим образом:

документ-изменить-кнопку-цвет1

5. Наконец, брось Режим проектирования кликнув Застройщик > Режим проектирования чтобы кнопка использовалась нормально.


Измените цвет кнопки управления ActiveX с кодом VBA

Как мы видим, Excel предоставляет нам несколько цветов в диалоговом окне «Свойства». С помощью следующего простого кода VBA можно выбрать множество цветов.

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

документ-изменить-кнопку-цвет1

2, Затем Окно Microsoft Visual Basic для приложений отобразится, см. снимок экрана:

документ-изменить-кнопку-цвет1

3. А затем скопируйте и вставьте этот простой скрипт кода: CommandButton1.BackColor = 12713921 в окно между двумя кодами, см. снимок экрана:

документ-изменить-кнопку-цвет1

Примечание: В приведенном выше кодовом сценарии CommandButton1 это название вашей кнопки, а номер 12713921 это MS-доступномер, они все переменные, вы можете изменить их по своему усмотрению.

4. Затем нажмите F5 нажмите кнопку для запуска этого кода, и цвет вашей кнопки сразу изменится.

документ-изменить-кнопку-цвет1

Функции: Вы можете перейти на этот сайт: http://www.endprod.com/colors/ чтобы увидеть больше Номер доступа MS значения цвета, возможно, вы можете использовать сотни цветов. После открытия веб-сайта вам просто нужно выбрать цвет и скопировать соответствующий номер в MSAccess herder, а затем заменить указанный выше номер в скрипте кода.

документ-изменить-кнопку-цвет1


Лучшие инструменты для работы в офисе

Kutools for Excel решает большинство ваших проблем и увеличивает вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


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

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Комментарии (7)


Оценок пока нет. Оцените первым!

 

Доброго вам дня дорогие знатоки!  

  Делаю свои первые шаги в VBA. Записываю макрос и потом привязываю его к кнопке. Шрифты на названиях кнопок меняются поцветам и размерам, но вот цвет самой области кнопки почему-то нет. Есть ли возможность менять заливку кнопки?  

  Заранее спасибо! С уважением — Самир, Баку

 

Юрий М

Модератор

Сообщений: 60390
Регистрация: 14.09.2012

Контакты см. в профиле

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

 

{quote}{login=Юрий М}{date=08.07.2010 01:12}{thema=}{post}Если будете использовать кнопки из панели инструментов «Элементы управления», то кнопки можно легко покрасить.{/post}{/quote}  

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

 

Юрий М

Модератор

Сообщений: 60390
Регистрация: 14.09.2012

Контакты см. в профиле

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

 

The_Prist

Пользователь

Сообщений: 13997
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

Лучше используйте не элементы, а фигуры. Выбрали любую понравившуюся-Вставили_Правый щелчок мыши-Назначить макрос. А уж красить и вертеть эту фигуру потом можно как угодно….

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

{quote}{login=Юрий М}{date=08.07.2010 01:20}{thema=}{post}Подозреваю, что Вы используете кнопки из панели инструментов «Формы». Там, действительно, можно только со шрифтом поиграться. А в тех, о которых я писал выше — можете менять и цвет самой кнопки.{/post}{/quote}  

  Ваши подозрения правильные :) Сейчас все понятно! Спасибо Юра гардаш! (гардаш — это означает брат)  

  С уважением — Самир, Баку

 

Юрий М

Модератор

Сообщений: 60390
Регистрация: 14.09.2012

Контакты см. в профиле

И не отворачивайтесь от совета Prist — можно «кнопочки» любой формы нарисовать :-)

 

Guest

Гость

#8

08.07.2010 13:37:04

{quote}{login=The_Prist}{date=08.07.2010 01:27}{thema=}{post}Лучше используйте не элементы, а фигуры. Выбрали любую понравившуюся-Вставили_Правый щелчок мыши-Назначить макрос. А уж красить и вертеть эту фигуру потом можно как угодно….{/post}{/quote}  

  Не сказать в лицо, но я уже здесь 6 месяцев и считаю что The_Prist это «The_Best»  Конечно же можно через фигуры делать! Спасибо вам! вы меня не раз выручали!!

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

Рис. 1.8. Окно свойств объекта

Рис. 1.8. Окно свойств объекта

В окне свойств отображается таблица набор строк в два столбца. При этом левый столбец отводится для названий свойств, а в нравом расположены значения этих свойств. Понятно, что содержание левого столбца изменить нельзя свойства объекта уже определены его разработчиком (компанией Microsoft). А значения свойств мы поменять можем для этого достаточно щелкнуть в ячейке правого столбца и изменить се содержание.

Если приглядеться к окну на рис. 1.8, то мы увидим, что для ряда свойств возможны только два варианта значений. Например, для свойства Visible (определяет видимость объекта на экране) возможны только значения False и True. Такая ситуация наблюдается и для ряда других свойств. Среди них можно отметить Enabled определяет доступ к объекту в режиме выполнения (если установить для этого свойства значение False и выйти из режима конструктора, то объект будет недоступен). Свойство AutoSize позволяет обеспечить автоматическую подгонку размеров кнопки под размер текста, расположенного на ней. Такое будет происходить, если установить True в качестве значения данного свойства.

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

  • Width ширина;
  • Height высота;
  • Тор координата верхней границы элемента, начиная от верхней части листа;
  • Left координата левой границы элемента, начиная от левой части листа.

Если для свойства Enabled установлено значение False, то элемент управления на экране будет выглядеть более блекло (такая ситуация знакома по работе с различными приложениями, когда ряд разделов меню недоступен).

Рис. 1.9. Палитра цветов

Рис. 1.9. Палитра цветов

Если теперь в режиме конструктора выбудете перемещать созданную на листе кнопку но экрану и изменять ее размеры (с помощью окружающих ее маркеров), то соответствующие значения в окне свойств будут меняться. И наоборот, изменив значения в окне свойств, вы увидите изменения на экране. Для установки значений ряда свойств следует использовать пиктографические меню. Так, с помощью свойства BackColor можно изменять цвет кнопки. Для этого всего лишь требуется щелчком мыши выбрать необходимый цвет (рис. 1.9). Аналогичное свойство ForeColor определяет цвет текста на кнопке. За надпись на кнопке отвечает другое свойство Caption. Если напротив названия этого свойства ввести текст (рис. 1.10), то мы увидим его и на кнопке.

Рис. 1.10. Установка значения свойства Caption

Рис. 1.10. Установка значения свойства Caption

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

Рис. 1.11. Окно диалога для выбора шрифта надписи на кнопке

Рис. 1.11. Окно диалога для выбора шрифта надписи на кнопке

Еще одно интересное свойство, Picture, позволяет разместить на кнопке изображение (рис. 1.12) из графического файла. Для этого в качестве значения свойства следует указать имя файла. Это действие производится с помощью стандартного диалогового окна (рис. 1.13), в котором необходимо выбрать один из графических файлов на компьютере либо в сети. В случае, если вы захотите убрать изображение, то в ноле для значения данного свойства следует воспользоваться клавишей Delete.

Во введении уже упоминалось, что основное свойство объекта это имя. В окне свойств оно называется Name. Как мы видели (см. рис. 1.8) на примере создания кнопки, Excel автоматически присвоил ей имя. Имя первой созданной кнопки на рабочем листе по умолчанию CommandButtonl, которое вы при желании можете изменить. Явной необходимости изменения имен, которые присваиваются по умолчанию, нет. Однако очень часто программисты назначают объектам свои имена. Это связано с тем, что к любым объектам на листе мы можем получить доступ из текста программы (фактически требуется обращаться к свойствам и методам этих объектов), указав имя конкретного объекта. В связи с этим с точки зрения организации программного кода часто удобнее использовать свою систему назначения имен объектов.

Рис. 1.12. Размещение на кнопке изображения

Рис. 1.12. Размещение на кнопке изображения

Система формирования имен по умолчанию заключается в комбинации типа элемента управления (CommandButton — командная кнопка) и числа (порядкового номера элемента управления данного типа).

Для первой созданной кнопки имя — CommandButton1. Если мы на рабочем листе разместим еще одну кнопку, то она будет иметь имя CommandButton2. При добавлении последующих кнопок данный принцип сохраняется. Если вы все же решитесь изменить имя, то вместо CommandButton1 в окне свойств следует набрать слово или словосочетание, которое вас устраивает. Но заметим, что оно должно быть без пробелов внутри (частая ошибка в первых разработках). В качестве примера подберем новое имя для кнопки — PrimerButton.

Рис. 1.13. Окно диалога для выбора графического файла

Рис. 1.13. Окно диалога для выбора графического файла

Теперь, если вы произвели описанные выше установки (а также убрали изображение очистили значение в свойстве Picture), кнопка будет выглядеть так, как показано на рис. 1.14. Для свойства AutoSize здесь установлено значение True, что позволяет подогнать размеры кнопки под расположенную на ней надпись.

С подобных шагов начинается любая разработка на листе размещаются элементы ActiveX, и ряду их свойств присваиваются необходимые значения. На первый взгляд свойства Name и Caption похожи, и кажется, одно из них является лишним. Однако это не так, и в связи с этим дадим небольшое пояснение. Дело в том, что Name внутреннее название объекта, и значение этого свойства используется на программном уровне (во введении об этом уже шла речь). Если мы хотим использовать в программном коде обращение к свойствам и методам объекта, то в строке программной процедуры необходимо указать имя объекта. Свойство же Caption отвечает просто за надпись на кнопке, и значение его только отображается на экране.

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

Рис. 1.14. Установка свойств кнопки

Рис. 1.14. Установка свойств кнопки

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

0 / 0 / 0

Регистрация: 12.07.2016

Сообщений: 42

1

Excel

Создание кнопки и изменение ее цвета

26.11.2020, 15:42. Показов 5738. Ответов 7


Как создать и изменить цвет кнопки в Exel. Кнопка должна при нажатии получать надпись «Да» на зеленом фоне, а надпись «Нет» на красном фоне. А так же передавать значение Да или нет в столбец I для составления расчета. В примере это реализовано с помощью вкладку Данные и Проверка данных.

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



3817 / 2245 / 750

Регистрация: 02.11.2012

Сообщений: 5,894

26.11.2020, 16:11

2

Цитата
Сообщение от prokudin
Посмотреть сообщение

с помощью вкладку Данные и Проверка данных.

Это не кнопка, а выпадающий список. Как вам все таки нужно?
Ваш вариант можно дополнить закраску с помощью УФ.



0



0 / 0 / 0

Регистрация: 12.07.2016

Сообщений: 42

26.11.2020, 16:28

 [ТС]

3

Нет, про правила раскраски знаю. мне нужна именно кнопка. То есть в каждой строчке кнопка.



0



0 / 0 / 0

Регистрация: 12.07.2016

Сообщений: 42

26.11.2020, 16:41

 [ТС]

4

Типа вот такого



0



prokudin

0 / 0 / 0

Регистрация: 12.07.2016

Сообщений: 42

27.11.2020, 09:18

 [ТС]

5

Всем привет!

Как дописать код чтобы при переключении ДА/НЕТ не только менялось название кнопки, но и цвет кнопки (зеленый/красный), а так же имя кнопки передавалось в определенную ячейку на листе.

Пример моего кода:

Visual Basic
1
2
3
4
5
6
7
8
Private Sub CommandButton1_Click()
 
With Me.OLEObjects("CommandButton1").Obj ect
.Caption = IIf(.Caption = "Да", "Нет", "Да")
Range("E13:E14").Locked = .Caption = "Да"
End With
 
End Sub



0



prokudin

0 / 0 / 0

Регистрация: 12.07.2016

Сообщений: 42

27.11.2020, 10:33

 [ТС]

6

Благодаря коллективному разуму был сотворен такой код. Но подсветка фона кнопки с надписью — НЕТ переходит только в серый цвет, а хочется чтобы она имела красный цвет. Да, в ходе различных манипуляций хотелось бы, что бы кнопка имела автоматический размер ячейки в которой она находится.

Visual Basic
1
2
3
4
5
6
7
8
9
Private Sub CommandButton1_Click()
 
With Me.OLEObjects("CommandButton1").Object
.Caption = IIf(.Caption = "Äà", "Íåò", "Äà")
Range("E13:E14").Locked = .Caption = "Äà"
CommandButton1.BackColor = IIf(CommandButton1.BackColor = -2147483633, vbGreen, -2147483633)
Range("A5").Value = .Caption
End With
End Sub

Вложения

Тип файла: zip КнигаVBA1.zip (16.6 Кб, 15 просмотров)



0



Vlad999

3817 / 2245 / 750

Регистрация: 02.11.2012

Сообщений: 5,894

27.11.2020, 13:12

7

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub CommandButton1_Click()
With Me.OLEObjects("CommandButton1").Object
    If .Caption = "Да" Then
        .Caption = "Нет"
        .BackColor = vbRed
    Else
        .Caption = "Да"
        .BackColor = vbGreen
    End If
Range("E13:E14").Locked = .Caption = "Да"
End With
End Sub



1



286 / 150 / 82

Регистрация: 01.04.2020

Сообщений: 414

27.11.2020, 18:19

8

prokudin,
возможно вам подходят «кнопки» такого типа ? …



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

27.11.2020, 18:19

8

Понравилась статья? Поделить с друзьями:
  • Vba excel как изменить формат ячейки
  • Vba excel как изменить текст кнопки
  • Vba excel runtime error 6 overflow
  • Vba excel on error примеры
  • Vba excel on error resume next описание