Здравствуйте! Помогите пожалуйста. Только месяц как изучаю макросы, пока только ищу их на просторах. Суть проблемы: нашла макрос, который при нажатии окрашивает в красный цвет, как мне и надо, НО... другие фигуры принимают один и тот же цвет, согласно коду, который сработал при нажатии на определенную кнопку. Что надо: чтобы цвет фигур сохранился свой изначальный, а только нажатый макрос был окрашен в красный, затем когда на другую кнопку жмешь, то предыдущая возвращает свой исходный цвет, а новая нажатая становится красной. Пример во вложении как это сейчас выглядет.
Здравствуйте! Помогите пожалуйста. Только месяц как изучаю макросы, пока только ищу их на просторах. Суть проблемы: нашла макрос, который при нажатии окрашивает в красный цвет, как мне и надо, НО... другие фигуры принимают один и тот же цвет, согласно коду, который сработал при нажатии на определенную кнопку. Что надо: чтобы цвет фигур сохранился свой изначальный, а только нажатый макрос был окрашен в красный, затем когда на другую кнопку жмешь, то предыдущая возвращает свой исходный цвет, а новая нажатая становится красной. Пример во вложении как это сейчас выглядет.makkedonia
Добрый день! дело в том, что у меня все окрашены в разные цвета(фото приложила), возможно ли сохранить все цвета, а только нажатую окрашивать?
Добрый день! дело в том, что у меня все окрашены в разные цвета(фото приложила), возможно ли сохранить все цвета, а только нажатую окрашивать?makkedonia
закомментируйте в своих макросах "перекрашивание" кнопок, а вместо этого вызовите процедуру PressButton Обратите внимание, на комменты в процедуре repair_color
[vba]
Код
Dim ButtonName$ Dim ButtonColor&
Sub repair_color() ' так как переменные ButtonName и ButtonColor хранятся только пока книга открыта, то ' данный макрос нужно поставить на какое-то событие книги, что бы не "потерять" заливку кнопки ' например на сохранение Workbook_BeforeSave If ButtonColor <> 0 Then Application.ActiveCell.Worksheet.DrawingObjects(ButtonName).Interior.Color = ButtonColor End Sub Sub PressButton() Call repair_color With Application.ActiveCell.Worksheet.DrawingObjects(Application.Caller) 'присваиваем новые значения переменным ButtonColor = .Interior.Color ButtonName = .Name 'красим в красный .Interior.Color = 255 End With End Sub
[/vba]
Добрый день makkedonia,
закомментируйте в своих макросах "перекрашивание" кнопок, а вместо этого вызовите процедуру PressButton Обратите внимание, на комменты в процедуре repair_color
[vba]
Код
Dim ButtonName$ Dim ButtonColor&
Sub repair_color() ' так как переменные ButtonName и ButtonColor хранятся только пока книга открыта, то ' данный макрос нужно поставить на какое-то событие книги, что бы не "потерять" заливку кнопки ' например на сохранение Workbook_BeforeSave If ButtonColor <> 0 Then Application.ActiveCell.Worksheet.DrawingObjects(ButtonName).Interior.Color = ButtonColor End Sub Sub PressButton() Call repair_color With Application.ActiveCell.Worksheet.DrawingObjects(Application.Caller) 'присваиваем новые значения переменным ButtonColor = .Interior.Color ButtonName = .Name 'красим в красный .Interior.Color = 255 End With End Sub