Я написал макрос на 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
Как бы я изменил его, чтобы он был назначен событию клика? @НикСлэш
щелкните правой кнопкой мыши на кнопке и скажите "назначить макрос"
Ваш код работает для меня, вам просто нужно убедиться, что:
1. он действительно запускается при нажатии кнопки (правый клик по "кнопке" -> назначить макрос -> выбрать changeButtonColor
2. ваша кнопка - это форма, добавленная через вставку -> формы, а не кнопка формы на вкладке разработчика (эта кнопка не может быть окрашена)
3. Цвет заливки кнопки предустановлен на один из трех цветов, которые вы указали в своем коде, белый будет самым простым, я думаю.
Ваш саб вызывается? Назначено ли оно событию клика?