Напишите макрос на VBA, чтобы изменить цвет кнопки

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

Однако код не работает, и кнопка просто сохраняет исходный синий цвет.

Sub ChangeButtonColor()
Dim btn As Object


Set btn = ActiveSheet.Shapes("lint")


Select Case btn.Fill.ForeColor.RGB
    Case RGB(255, 255, 255)
        btn.Fill.ForeColor.RGB = RGB(0, 255, 0) 'green
    Case RGB(0, 255, 0)
        btn.Fill.ForeColor.RGB = RGB(255, 0, 0) 'red
    Case RGB(255, 0, 0)
        btn.Fill.ForeColor.RGB = RGB(255, 255, 255) 'white
End Select


End Sub

Ваш саб вызывается? Назначено ли оно событию клика?

NickSlash 24.01.2023 12:51

Как бы я изменил его, чтобы он был назначен событию клика? @НикСлэш

CodeBob 24.01.2023 12:51

щелкните правой кнопкой мыши на кнопке и скажите "назначить макрос"

Max 24.01.2023 13:06
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
0
3
60
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваш код работает для меня, вам просто нужно убедиться, что:

1. он действительно запускается при нажатии кнопки (правый клик по "кнопке" -> назначить макрос -> выбрать changeButtonColor

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

3. Цвет заливки кнопки предустановлен на один из трех цветов, которые вы указали в своем коде, белый будет самым простым, я думаю.

Другие вопросы по теме