Как изменить цвет кнопки макроса в эксель
Разберем еще один пример, который опять будет связан с реакцией на перемещение мыши. Расположим на листе кнопку и сделаем так, чтобы при перемещении курсора мыши в области кнопки ее цвет менялся. Функциональность должна быть следующей:
- при расположении курсора мыши в левой верхней части кнопки ее цвет должен быть красным;
- при расположении курсора в правой верхней части кнопки цвет кнопки должен быть зеленым;
- если курсор находится в нижней левой части — кнопка должна быть синей;
- при расположении курсора в правой нижней части кнопка должна стать серой.
Чтобы реализовать требуемый эффект, оформим процедуру реакции на перемещение мыши так, как показано в листинге 1.17. Как видно из текста процедуры, для свойства Name кнопки использовано C1.
' Листинг 1.17. Процедура, реализующая динамическое изменение цвета кнопки Private Sub C1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) If X < C1.Width / 2 And Y < C1.Height / 2 Then C1.BackColor - RGB(2 55, 0, 0) ElseIf X > C1.Width / 2 And Y < C1.Height / 2 Then C1.BackColor - RGB(0, 255, 0) ElseIf X < C1.Width / 2 And Y > C1.Height / 2 Then C1.BackColor - RGB(0, 0, 255) Else C1.BackColor - RGB(190, 190, 190) End If End Sub
Прокомментируем моменты, которые появились впервые. А именно: значение переменной Y, которое передается в программу, представляет собой координату курсора мыши в области кнопки по вертикали. Полный размер кнопки по вертикали отражается в значении се свойства Height. Координата Y изменяется от верхнего угла кнопки к нижнему, а координата X изменяется от левого угла кнопки к правому. В первом условии процедуры If X . Проверяется находится ли курсор в левой верхней части кнопки. Если условие выполняется, то цвет кнопки устанавливается красным. Для установки цвета используется свойство кнопки BackColor и внутренняя функция RGB: C1.BackColor - RGB(255, 0, 0) .
Здесь RGB это функция Visual Basic, которая позволяет установить цвет объекта в виде сочетания трех основных цветов красного, зеленого и синего. Интенсивности каждого из этих основных цветов задаются в качестве трех входных параметров. При этом минимальное значение интенсивности цвета равняется 0 (в этом случае в составном цвете данный цветовой компонент просто отсутствует), а максимальное 255. В рассматриваемой строке задаются максимальная интенсивность для красного цвета и отсутствие компонентов зеленого и синего цветов. При подобном сочетании этих трех базовых цветов кнопка будет красной.
Продолжим рассмотрение текста процедуры, приведенной в листинге. Если первое условие не выполняется, то программа переходит к проверке второго условия: ElseIf X > C1.Width / 2 And Y . Если оно выполняется, то устанавливается зеленый цвет кнопки: C1.BackColor - RGB(0, 255, 0) . А если второе условие не выполняется, то проверяется третье условие: ElseIf X C1.Height / 2 Then .
Если оно истинно, то цвет кнопки становится синим, а если ложно, то получается, что курсор мыши не находится ни в одной из трех просмотренных областей. Из этого однозначно следует, что курсор мыши располагается в нравом нижнем квадранте, и кнопка закрашивается серым цветом. Программа, таким образом, готова; теперь следует вернуться в Microsoft Excel, выйдя из режима конструктора, и при перемещении мыши в пределах кнопки посмотреть на изменение ее цвета.
В Excel, когда вы вставляете командную кнопку, цвет кнопки по умолчанию серый. Но иногда вам нужно изменить серый цвет на красивый, чтобы сделать рабочий лист более профессиональным. Сегодня я могу представить вам несколько быстрых приемов изменения цвета кнопки в Excel.
Измените цвет кнопки ActiveX Control с изменением свойств
Обычно в Excel есть кнопки двух типов: одна Контроль формы кнопка, а другой элемент управления ActiveX кнопка. Если кнопка является кнопкой управления формой, вы можете просто изменить ее цвет шрифта, но не меняйте цвет фона. Вы просто можете изменить цвет задней части кнопки ActiveX Control. Пожалуйста, сделайте так:
1. Вставьте элемент управления ActiveX кнопку, нажав разработчик > ВставитьИ выберите Кнопка управления под Элементы управления ActiveX раздел, см. снимок экрана:
Внимание: Если разработчик вкладка не отображается на ленте, вы можете нажать Файл > Опция > Настроить ленту, затем проверьте разработчик на правой панели, чтобы отобразить разработчик меню.
2. Затем перетащите мышь, чтобы нарисовать кнопку.
3. Затем нажмите кнопку и щелкните правой кнопкой мыши, выберите Свойства из контекстного меню, а во всплывающем Свойства диалоговое окно, нажмите Алфавитный Вкладка, а затем нажмите кнопку BackColor выпадающий список, чтобы выбрать один понравившийся цвет, см. скриншоты:
4. Затем закройте диалоговое окно, и цвет вашей командной кнопки будет изменен следующим образом:
5. Наконец, брось Режим проектирования кликнув разработчик > Режим проектирования чтобы кнопка использовалась нормально.
Измените цвет кнопки управления ActiveX с кодом VBA
Как мы видим, Excel предоставляет нам несколько цветов в диалоговом окне «Свойства». С помощью следующего простого кода VBA можно выбрать множество цветов.
1. Вставьте командную кнопку и щелкните правой кнопкой мыши, затем выберите Просмотреть код из контекстного меню см. снимок экрана:
2, Затем Окно Microsoft Visual Basic для приложений отобразится, см. снимок экрана:
3. А затем скопируйте и вставьте этот простой скрипт кода: CommandButton1.BackColor = 12713921 в окно между двумя кодами, см. снимок экрана:
Примечание: В приведенном выше кодовом сценарии CommandButton1 это название вашей кнопки, а номер 12713921 это MS-доступномер, они все переменные, вы можете изменить их по своему усмотрению.
4. Затем нажмите F5 нажмите кнопку для запуска этого кода, и цвет вашей кнопки сразу изменится.
Для запуска процедур и макросов обычно используется событие кнопки – 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:
Вы можете использовать кнопку управления формы или кнопку (ActiveX) для запуска макроса, который выполняет действие, когда пользователь щелкает его. Обе эти кнопки также называются push-кнопками, которые можно настроить для автоматизации печати, фильтрации данных или вычисления чисел. Как правило, кнопки управления формы и ActiveX похожи по внешнему виду и функции. Однако между ними есть несколько отличий, которые объясняются в следующих разделах.
Кнопка (управление формы)
В разделах ниже вы узнаете, как добавить макрос на кнопку в Excel для Windows или Mac.
Примечание: ActiveX не поддерживаются на компьютере Mac.
Макрос и средства VBA находятся на вкладке Разработчик, которая по умолчанию скрыта.
Прежде всего нужно включить его. Дополнительные сведения см. в статье Показ вкладки "Разработчик".
Добавление кнопки (управление формы)
На вкладке Разработчик в группе Элементы управления нажмите кнопку Вставить, а затем в группе Элементы управления формы нажмитекнопку .
Щелкните на листе место, где должен быть расположен левый верхний угол кнопки. Появится всплывающее окно Назначение макроса.
Назначьте кнопке макрос и нажмите кнопку ОК.
Чтобы задать свойства кнопки, щелкните ее правой кнопкой мыши и выберите форматирование.
Добавление кнопки (ActiveX управления)
На вкладке Разработчик в группе Элементы управления нажмите кнопку Вставить, а затем вгруппе Элементы управления ActiveX нажмите кнопку .
Щелкните на том месте, где должен отображаться левый верхний угол кнопки.
В группе Элементы управления нажмите кнопку Код представления. При этом Visual Basic редактора. Убедитесь, что в списке справа выбрано нажатие кнопки. При нажатии кнопки CommandButton1_Click процедуры (см. рисунок ниже) запускаются эти два макроса: SelectC15 и HelloMessage.
В подпроцеду для кнопки сделайте следующее:
Введите имя существующего макроса в книге. Макрос можно найти, щелкнув Макрос в группе Код. С помощью кнопки можно запускать несколько макроса, вводя их имена в отдельных строках подпроцесса.
При необходимости добавьте собственный код VBA.
Закроем Visual Basic редактора и нажмите кнопку Режим конструктора режим конструктора, чтобы отключить режим конструктора.
Чтобы запустить код VBA, который теперь является частью кнопки, нажмите кнопку ActiveX, которую вы только что создали.
Чтобы изменить элемент ActiveX, убедитесь, что выбран режим конструктора. На вкладке Разработчик в группе Элементы управления нажмите кнопку Режим конструктора.
Чтобы задать свойства кнопки, на вкладке Разработчик в группе Элементы управления нажмите кнопку Свойства . Можно также щелкнуть правой кнопкой мыши кнопку и щелкнуть свойства .
Примечание: Перед тем как нажать кнопку Свойства, выделите объект, свойства которого требуется просмотреть или изменить.
Появится поле Свойства. Для получения дополнительных сведений о каждом свойстве выберите свойство и нажмите клавишу F1, чтобы отобразить соответствующий раздел справка по Visual Basic. Можно также ввести имя свойства в поле Поиск справки Visual Basic. В следующей таблице 2010 2010 2016 2016 2016 2016 201
Описание параметра
Необходимое свойство
Загружает ли его при открытом книге. (Игнорируется для ActiveX элементов управления.)
Может ли он получать фокус и отвечать на события, созданные пользователем.
Можно ли изменять элемент управления
Имя элемента управления
Способ привязки элемента управления к расположенным под ним ячейкам (не закреплен, можно перемещать, но нельзя изменять размер, можно перемещать и изменять размер)
Можно ли выводить элемент управления на печать
Является ли элемент управления видимым или скрытым
Атрибуты шрифта (полужирный, курсив, размер, зачеркивание, подчеркивание и насыщенность)
Bold, Italic, Size, StrikeThrough, Underline, Weight (форма)
Поясняющий текст элемента управления, определяющий или описывающий его
Будет ли содержимое элемента управления переноситься по словам в конце строки
Размер и положение
Будет ли размер элемента управления изменяться автоматически для отображения всего содержимого
Высота или ширина в пунктах
Height, Width (форма)
Расстояние от элемента управления до левого или верхнего края листа
Форматирование
Стиль фона (прозрачный или непрозрачный)
Цвет переднего плана
Наличие тени элемента управления
Изображение
Точечный рисунок, отображаемый в элементе управления
Положение рисунка относительно его заголовка (слева, сверху, справа и так далее)
Клавиатура и мышь
Сочетание клавиш для элемента управления
Настраиваемый значок мыши
Тип указателя, отображаемого при наведите указатель мыши на определенный объект (стандартный, стрелка, I-указатель и так далее).
Будет ли фокус при щелчке.
Макрос и средства VBA находятся на вкладке "Разработчик", которая по умолчанию скрыта, поэтому сначала нужно включить ее.
Перейдите в Excel > параметры. > ленты & панель инструментов.
В категории Настроить ленту в списке Основные вкладки установите флажок Разработчик, а затем нажмите кнопку Сохранить.
Добавление кнопки (управление формы)
На вкладке Разработчик нажмите кнопку .
Щелкните на листе место, где должен быть расположен левый верхний угол кнопки. Появится всплывающее окно Назначение макроса.
Примечание: Если кнопка уже вставлена, щелкните ее правой кнопкой мыши и выберите назначить макрос.
Назначьте кнопке макрос и нажмите кнопку ОК.
Чтобы задать свойства кнопки, щелкните ее правой кнопкой мыши и выберите форматирование.
Добавление кнопки (Visual Basic управления)
На вкладке Разработчик нажмите кнопку .
Щелкните место на том месте, где должен отображаться левый верхний угол кнопки.
Примечание: Если кнопка уже вставлена, щелкните ее правой кнопкой мыши и выберите назначить макрос.
В диалоговом окне Назначение макроса выберите Новый, который откроет редактор Visual Basic(VBE)в области со следующим кодом:
В подпроцеду для кнопки между строками Sub и End Sub сделайте следующее:
Введите имя существующего макроса в книге. Вы можете запускать несколько макроса с помощью кнопки, введя их имена в отдельных строках внутри под процедуры.
Добавьте собственный код VBA.
Чтобы изменить кнопку, щелкните ее правой кнопкой мыши ивыберите Visual Basic .
Чтобы задать свойства кнопки, щелкните ее правой кнопкой мыши и выберите форматирование.
Дополнительные сведения
Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.
Читайте также: