Як налаштувати динамічна зміна кольору кнопки засобами vba - трюки і прийоми в microsoft excel

Розберемо ще один приклад, який знову буде пов'язаний з реакцією на переміщення миші. Розташуємо на аркуші кнопку і зробимо так, щоб при переміщенні курсору миші в області кнопки її колір змінювався. Функціональність повинна бути наступною:

  • при розташуванні курсору миші в лівій верхній частині кнопки її колір повинен бути червоним;
  • при розташуванні курсору в правій верхній частині кнопки колір кнопки повинен бути зеленим;
  • якщо курсор знаходиться в нижній лівій частині - кнопка повинна бути синьою;
  • при розташуванні курсору в правій нижній частині кнопка повинна стати сірою.

Щоб реалізувати необхідний ефект, оформимо процедуру реакції на переміщення миші так, як показано в лістингу 1.17. Як видно з тексту процедури, для властивості Name кнопки використано C1.

'Лістинг 1.17. Процедура, яка реалізує динамічна зміна кольору кнопки Private Sub C1_MouseMove (ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) If X C1.Width / 2 And Y C1.Height / 2 Then C1.BackColor - RGB (0, 0, 255) Else C1.BackColor - RGB (190, 190, 190) End If End Sub

Тут RGB це функція Visual Basic, яка дозволяє встановити колір об'єкта у вигляді поєднання трьох основних кольорів червоного, зеленого і синього. Інтенсивності кожного з цих основних кольорів задаються в якості трьох вхідних параметрів. При цьому мінімальне значення інтенсивності кольору дорівнює 0 (в цьому випадку в складеному кольорі даний колірний компонент просто відсутня), а максимальне 255. У розглянутій рядку задаються максимальна інтенсивність для червоного кольору і відсутність компонентів зеленого і синього кольорів. При подібному поєднанні цих трьох базових кольорів кнопка буде червоною.

Продовжимо розгляд тексту процедури, наведеної в лістингу. Якщо перша умова не виконується, то програма переходить до перевірки другого умови: ElseIf X> C1.Width / 2 And Y. Якщо воно виконується, то встановлюється зелений колір кнопки: C1.BackColor - RGB (0, 255, 0). А якщо друга умова не виконується, то перевіряється третя умова: ElseIf X C1.Height / 2 Then.

Схожі статті