#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), фон останется темно-серым, а всплывающее окно будет полностью видно. Таким образом, проблема в том, что всплывающее окно почти невидимо при первом появлении, пока вы не наведете курсор мыши на все параметры и не измените отдельный фон каждого параметра на темно-серый. Я бы хотел, чтобы всплывающее окно имело белый фон (что оно уже делает, с черным текстом), но я не могу понять, как это закодировать или где находятся атрибуты объекта, которые мне нужно изменить.
Вещи, которые я уже пробовал:
- Изменение режима окон с темного на светлый и наоборот: никаких изменений в поведении. В настоящее время я запускаю Темную тему. Я действительно думал, что это все исправит, но этого не произошло.
- Поиск вариантов цвета фона/шрифта. В объекте нет опции .background или .font
.Controls.add(type:=msoControlButton)
. После добавления элемента управления под панелью команд (в моем случае»Меню») появляется элемент управления -> Элемент 1 ->> Приложение ->>> SmartArtColors. Однако я не думаю, что это правильное место для поиска, и я не уверен, как его изменить или смогу ли я, так как он находится в классе приложений. В классе объектов управления также нет других параметров цвета или шрифта. Любое понимание будет высоко оценено!
Комментарии:
1. Вы тестировали на другом компьютере — я думаю, что это проблема с конфигурацией Windows
2. @Ike, Да, я попробовал это сегодня на компьютере коллег, хотя и в той же корпоративной конфигурации, и результаты были одинаковыми.
3. Я запускаю ваш код на своей машине — все в порядке. Это должно быть что-то из конфигурации, касающееся настроек Windows ….
4. @Ike спасибо за попытку помочь! Могу ли я что-нибудь сделать, чтобы «исправить» / изменить конфигурацию / настройки Windows?
5. Я изменил некоторые настройки на своей машине, но ничего не вызвало вашей проблемы, так что, извините, понятия не имею, что вам нужно изменить.