Изменение цвета фона активных кнопок опций x с помощью переменных делает их черными - PullRequest
1 голос
/ 20 марта 2019

У меня есть странное (как я не понимаю) поведение в Excel. У меня есть несколько optionbuttons, которые я хочу изменить цвет фона. Всего есть что-то вроде 15 кнопок и 3 (возможно, 4) цвета. Это прекрасно работает, если я просто назначу им сам код RGB.

Private Sub OptionButton1_Click()

OptionButton1.BackColor = RGB(0, 150, 79) 'Dark Green
ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=4

End Sub

однако, когда я пытаюсь создать переменные, содержащие коды RGB, вот так:

 Private Sub OptionButton1_Click()

    OptionButton1.BackColor = DGn 'Dark Green
    ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=4

 End Sub

кнопки становятся черными так:

enter image description here

Поскольку есть довольно много кнопок, я бы хотел просто назначить цвета один раз, а затем просто набирать DGn или Ylw вместо того, чтобы постоянно нажимать CTRL-C, CTRL-V

Код в ThisWorkbook

Dim DGn As Long
Dim LGn As Long
Dim Ylw As Long


Public Sub Workbook_Open()
DGn = RGB(0, 150, 79)
LGn = RGB(138, 201, 49)
Ylw = RGB(249, 234, 5)
End Sub

Любые предложения приветствуются! Хорошего хорошего дня / вечера.

1 Ответ

3 голосов
/ 20 марта 2019

В верхней части обычного модуля:

Public Const DGn As Long = 5215744   'RGB(0, 150, 79)
Public Const LGn As Long = 3262858   'RGB(138, 201, 49)
Public Const Ylw As Long = 387833    'RGB(249, 234, 5)

Вы не можете напрямую использовать RGB() в константе, потому что значение константы должно быть известно во время времени компиляции иRBG() не выполняется до времени выполнения .

Чтобы преобразовать значения, перейдите на панель Immediate в редакторе VB, введите (например) ? RGB(138, 201, 49) и нажмите Enter - вы будетеполучите длинный результат, который вы затем сможете использовать в своей константе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...