Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Кнопка-фигура, сделать другим цветом при нажатии - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Кнопка-фигура, сделать другим цветом при нажатии
makkedonia Дата: Суббота, 02.07.2022, 21:08 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Здравствуйте! Помогите пожалуйста. Только месяц как изучаю макросы, пока только ищу их на просторах. Суть проблемы: нашла макрос, который при нажатии окрашивает в красный цвет, как мне и надо, НО... другие фигуры принимают один и тот же цвет, согласно коду, который сработал при нажатии на определенную кнопку. Что надо: чтобы цвет фигур сохранился свой изначальный, а только нажатый макрос был окрашен в красный, затем когда на другую кнопку жмешь, то предыдущая возвращает свой исходный цвет, а новая нажатая становится красной. Пример во вложении как это сейчас выглядет.
К сообщению приложен файл: 5072721.xlsm (29.8 Kb)


Сообщение отредактировал makkedonia - Суббота, 02.07.2022, 21:13
 
Ответить
СообщениеЗдравствуйте! Помогите пожалуйста. Только месяц как изучаю макросы, пока только ищу их на просторах. Суть проблемы: нашла макрос, который при нажатии окрашивает в красный цвет, как мне и надо, НО... другие фигуры принимают один и тот же цвет, согласно коду, который сработал при нажатии на определенную кнопку. Что надо: чтобы цвет фигур сохранился свой изначальный, а только нажатый макрос был окрашен в красный, затем когда на другую кнопку жмешь, то предыдущая возвращает свой исходный цвет, а новая нажатая становится красной. Пример во вложении как это сейчас выглядет.

Автор - makkedonia
Дата добавления - 02.07.2022 в 21:08
boa Дата: Воскресенье, 03.07.2022, 11:58 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 559
Репутация: 167 ±
Замечаний: 0% ±

365
Добрый день,
просто, укажите для всех вызовов строки
[vba]
Код
.DrawingObjects.Interior.Color =
[/vba]
одинаковое значение.


 
Ответить
СообщениеДобрый день,
просто, укажите для всех вызовов строки
[vba]
Код
.DrawingObjects.Interior.Color =
[/vba]
одинаковое значение.

Автор - boa
Дата добавления - 03.07.2022 в 11:58
makkedonia Дата: Воскресенье, 03.07.2022, 12:17 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Добрый день! дело в том, что у меня все окрашены в разные цвета(фото приложила), возможно ли сохранить все цвета, а только нажатую окрашивать?
К сообщению приложен файл: 9899754.png (103.2 Kb)
 
Ответить
СообщениеДобрый день! дело в том, что у меня все окрашены в разные цвета(фото приложила), возможно ли сохранить все цвета, а только нажатую окрашивать?

Автор - makkedonia
Дата добавления - 03.07.2022 в 12:17
boa Дата: Понедельник, 04.07.2022, 11:20 | Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 559
Репутация: 167 ±
Замечаний: 0% ±

365
Добрый день 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]
К сообщению приложен файл: 5158949.xlsm (33.5 Kb)




Сообщение отредактировал boa - Понедельник, 04.07.2022, 11:29
 
Ответить
СообщениеДобрый день 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]

Автор - boa
Дата добавления - 04.07.2022 в 11:20
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!