Страницы: 1
RSS
Подсвечивать нажатые кнопки, Кнопки-макросы
 
Здравствуйте! Для работы надо сделать, чтобы при нажатии кнопки-макроса она подсвечивалась цветом, затем при нажатии на другую та возвращает свой цвет, а новая нажатая так же подсвечивалась. Нашла на просторах код для элементов ActiveX, а как сделать для фигуры не пойму, помогите плиз. Файл прикладываю. Таких кнопок будет много, штук 15, может можно универсальное что то.
Изменено: makkedonia - 28.06.2022 23:27:08
 
makkedonia, здравствуйте
Вставьте фигуру, убедитесь, что она выделена, запустите макрокордер, измените цвет фигуры, остановите макрорекордер, используйте полученный код для написания своего, назначьте макрос на фигуру.
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Назначить макрос на все фигуры
Код
Sub qq()
    With Selection.Parent
        .DrawingObjects.Interior.Color = 12419407
        .DrawingObjects(Application.Caller).Interior.Color = 255
    End With
End Sub
 
Цитата
написал:
makkedonia, здравствуйте
Вставьте фигуру, убедитесь, что она выделена, запустите макрокордер, измените цвет фигуры, остановите макрорекордер, используйте полученный код для написания своего, назначьте макрос на фигуру.
Мне бы, чтобы мой макрос основной работал, а при нажатии на кнопку цвет менялся, чтобы видеть какая кнопка сработала. Т.е получается мне нужен макрос в макросе как с CommandButton, который задает мой макрос и плюс меняет цвет как во вложенном примере. Попробовала как Вы описали, выдает ошибку, код вот такой получился
Sub Макрос6()
'
' Макрос6 Макрос
'

'
   With Selection.ShapeRange.Fill
       .Visible = msoTrue
       .ForeColor.ObjectThemeColor = msoThemeColorAccent
       .ForeColor.TintAndShade = 0
       .ForeColor.Brightness = 0
       .Transparency = 0
       .Solid
   End With
End Sub
 
Вставьте макрос qq в свою книгу, а в свой макрос первой строкой напишите qq.
 
Цитата
написал:
а в свой макрос первой строкой напишите qq
Application.Caller не сработает, т.к. не все фигуры в книге будут опознаны по локальному имени. А еще ТС не учел тот момент, что на листе есть и другие фигуры(а-ля фирменные леблы).
Изменено: Дмитрий(The_Prist) Щербаков - 29.06.2022 10:04:02
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
написал:
Цитата
написал:
а в свой макрос первой строкой напишите qq
Application.Caller не сработает, т.к. не все фигуры в книге будут опознаны по локальному имени. А еще ТС не учел тот момент, что на листе есть и другие фигуры(а-ля фирменные леблы).
вставила, но выдает ошибку

Sub Показать_все()
   Columns.Hidden = False  
   Rows.Hidden = False
With Selection.Parent
       .DrawingObjects.Interior.Color = 12419407
       .DrawingObjects(Application.Caller).Interior.Color = 255
   End With
End Sub
Изменено: makkedonia - 29.06.2022 10:09:43
 
Цитата
makkedonia написал:
выдает ошибку
как я выше уже и написал.
Измените имя фигуры вручную, желательно дав уникальное имя английскими буквами. Тогда все должно заработать.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
написал:
Цитата
makkedonia написал:
выдает ошибку
как я выше уже и написал.
Измените имя фигуры вручную, желательно дав уникальное имя английскими буквами. Тогда все должно заработать.
спасибо большое, видно пропустила, работает, попробовала на одной кнопке пока, сейчас еще попробую на других
 
спасибо большое еще раз всем и извиняюсь за свой тупизм))) все работает, урааа
 
Здравствуйте! Помогите еще плиииз. Как в этом коде изменить задавать изначально цвет, т.е. тот цвет, который уже есть у фигуры надо его именно изменить на красный при нажатии кнопки. Т.е. вот эту сроку не привязывать к цвету в коде DrawingObjects.Interior.Color = 12419407, а сделать тот цвет, который есть в фигуре изначально.
Код
Sub Показать_все()
   Columns.Hidden = False  
   Rows.Hidden = False
With Selection.Parent
       .DrawingObjects.Interior.Color = 12419407
       .DrawingObjects(Application.Caller).Interior.Color = 255
   End With
End Sub
Изменено: makkedonia - 01.07.2022 23:38:36
 
Неужели нет решения или я что то не так написала
 
Просто есть куча макросов на отдельном листе excel, им уже присвоен цвет, получается надо узнать код каждого цвета и его прописать
 
Код не так написали: его нужно оформить соответствующим тегом - ищите кнопку <...> и исправьте своё сообщение )
 
Цитата
написал:
Код не так написали: его нужно оформить соответствующим тегом - ищите кнопку <...> и исправьте своё сообщение
меня берут смутные сомнения, что я не так исправила)
Изменено: makkedonia - 01.07.2022 22:53:52
 
Посмторите, как выглядит код в #3. И посмотрите, как у Вас.
 
Цитата
написал:
Посмторите, как выглядит код в #3. И посмотрите, как у Вас.
поняла) нашла
 
Было бы просто замечательно, если бы Вы ещё поняли, что можно отвечать и без цитирования, когда оно абсолютно не нужно )
 
Юрий М, уже поняла и заметила, спасибо
 
Цитата
написал:
Здравствуйте! Помогите еще плиииз. Как в этом коде изменить задавать изначально цвет, т.е. тот цвет, который уже есть у фигуры надо его именно изменить на красный при нажатии кнопки. Т.е. вот эту сроку не привязывать к цвету в коде DrawingObjects.Interior.Color = 12419407, а сделать тот цвет, который есть в фигуре изначально.Код ? 12345678Sub Показать_все()   Columns.Hidden = False     Rows.Hidden = FalseWith Selection.Parent       .DrawingObjects.Interior.Color = 12419407       .DrawingObjects(Application.Caller).Interior.Color = 255   End WithEnd Sub
Здравствуйте! неужели нет решения?
 
Попробую еще раз по другому) Если нет универсального решения, т.е. чтобы каждая фигура сохраняла свой цвет, а только при нажатии меняла на красный, а потом при нажатии на другую возвращала исходный цвет, тогда помогите пожалуйста с такой проблемой. Как изменить код, чтобы фигуры, на которые не нажимались сохранили свой цвет как в коде прописано, а не принимали общий цвет. Файл пример как это сейчас выглядет приложила.
Изменено: makkedonia - 02.07.2022 20:45:03
 
Как вариант..
 
Маугли, спасибо большое! Я сейчас пытаюсь всем своим 42 фигурам сделать по тому же подобию. Правильно ли я поняла, что например DrawingObjects(36), где 36 это номер в имени фигуры? Всем присвоила, но у меня фигуры например идет 37, потом 38 и потом 36, в коде порядок важен или только номер? А то почему то из 42 3 фигуры приняли не верный цвет. И еще файл стал ооочень тормозить. Прошу прощения, только месяц как макросы изучаю.
Изменено: makkedonia - 03.07.2022 19:11:46
 
Вместо индексов примените имя кнопки в кавычках.
 
Маугли, помогло, спасибо еще раз. А не подскажите, файл при нажатии на кнопку стал тормозить из за присвоения цвета 42 фигурам? Тк макросы до присвоения цветов обрабатывали файл быстро.
Изменено: makkedonia - 03.07.2022 20:06:02
Страницы: 1
Наверх