Измените шрифт и цвет фона панели команд Excel

#excel #vba #colors #fonts #commandbar

Вопрос:

Я часами искал в Интернете и на этом форуме, пытаясь найти кого-нибудь с подобной проблемой, но безуспешно. Я пытаюсь определить, как изменить цвет фона и цвет шрифта по умолчанию для всплывающего окна командной строки Excel. Вот мой применимый код:

 Public Sub Custom_PopUpMenu_1()
    Dim MenuItem As CommandBar

    Set MenuItem = Application.CommandBars.add(name:=menuName, Position:=msoBarPopup, _
                                               MenuBar:=False, Temporary:=True)

    With MenuItem
        With .Controls.add(type:=msoControlButton)
            .OnAction = "'" amp; ThisWorkbook.name amp; "'!" amp; "tbox_Copy"
            .Caption = "amp;Copy"
        End With '.Controls.add(msoControlButton)
    
        With .Controls.add(type:=msoControlButton)
            .OnAction = "'" amp; ThisWorkbook.name amp; "'!" amp; "tbox_Paste"
            .Caption = "amp;Paste"
        End With '.Controls.add(msoControlButton)
    
        With .Controls.add(type:=msoControlButton)
            .OnAction = "'" amp; ThisWorkbook.name amp; "'!" amp; "tbox_Cut"
            .Caption = "Cuamp;t"
        End With '.Controls.add(msoControlButton)
    
        With .Controls.add(type:=msoControlButton)
            .OnAction = "'" amp; ThisWorkbook.name amp; "'!" amp; "tbox_Select"
            .Caption = "amp;Select"
        End With '.Controls.add(msoControlButton)
    
        With .Controls.add(type:=msoControlButton)
            .OnAction = "'" amp; ThisWorkbook.name amp; "'!" amp; "tBox_clear"
            .Caption = "Camp;lear"
        End With '.Controls.add(msoControlButton)
    End With 'CommandBars.add(menuName, msoBarPopup)
End Sub
 

Все работает так, как нужно, однако, когда появляется всплывающее окно, текст белый, и фон тоже белый. Поэтому, если вы не будете очень внимательно присматриваться к слабым очертаниям всплывающего окна, вы не поймете, что оно присутствует. Когда я наводю курсор мыши на определенный элемент (например, Копирование, вставка и т.д.), Фон динамически меняется на темно-серый (текст остается белым), а также подсвечивается светло-зеленым. После того, как я наведу курсор мыши на все доступные опции (т. Е. кнопки Msocontrol), фон останется темно-серым, а всплывающее окно будет полностью видно. Таким образом, проблема в том, что всплывающее окно почти невидимо при первом появлении, пока вы не наведете курсор мыши на все параметры и не измените отдельный фон каждого параметра на темно-серый. Я бы хотел, чтобы всплывающее окно имело белый фон (что оно уже делает, с черным текстом), но я не могу понять, как это закодировать или где находятся атрибуты объекта, которые мне нужно изменить.

Вещи, которые я уже пробовал:

  1. Изменение режима окон с темного на светлый и наоборот: никаких изменений в поведении. В настоящее время я запускаю Темную тему. Я действительно думал, что это все исправит, но этого не произошло.
  2. Поиск вариантов цвета фона/шрифта. В объекте нет опции .background или .font .Controls.add(type:=msoControlButton) . После добавления элемента управления под панелью команд (в моем случае»Меню») появляется элемент управления -> Элемент 1 ->> Приложение ->>> SmartArtColors. Однако я не думаю, что это правильное место для поиска, и я не уверен, как его изменить или смогу ли я, так как он находится в классе приложений. В классе объектов управления также нет других параметров цвета или шрифта. Любое понимание будет высоко оценено!

Комментарии:

1. Вы тестировали на другом компьютере — я думаю, что это проблема с конфигурацией Windows

2. @Ike, Да, я попробовал это сегодня на компьютере коллег, хотя и в той же корпоративной конфигурации, и результаты были одинаковыми.

3. Я запускаю ваш код на своей машине — все в порядке. Это должно быть что-то из конфигурации, касающееся настроек Windows ….

4. @Ike спасибо за попытку помочь! Могу ли я что-нибудь сделать, чтобы «исправить» / изменить конфигурацию / настройки Windows?

5. Я изменил некоторые настройки на своей машине, но ничего не вызвало вашей проблемы, так что, извините, понятия не имею, что вам нужно изменить.