Новости:

Интересные и полезные статьи по работе с Excel и VBA
можно найти в разделе ХИТРОСТИ

Главное меню

Изменение цвета кнопки при перемещении указателя мыши

Автор parovoz, 14.03.2017, 16:57:00

« назад - далее »

parovoz

Добрый день.
На форме расположена кнопка . При наведении курсором на кнопку изменяется цвет кнопки( на СЕРЫЙ). Если  курсор  вне зоны кнопки, то цвет должен поменяться обратно на ЗЕЛЕНЫЙ.
Как подкорректировать код, что бы менялся цвет кнопки когда курсор мышки вне зоны кнопки?"

Perfect2You

Во-первых, анализировать координаты, которые передает мышь. В зависимости от них подкрашивать в свой цвет.
Во-вторых, добавить аналогичное событие для формы. Ввиду того, что не особо гибко работает механизм, это поможет избежать сбоев.
Итог:
Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
'   Me.CommandButton1.BackColor = &HE0E0E0
    If (X >= 0) And (X <= Me.CommandButton1.Width) And _
            (Y >= 0) And (Y <= Me.CommandButton1.Height) Then
        Me.CommandButton1.BackColor = &HE0E0E0
    Else
        Me.CommandButton1.BackColor = &HC0FFC0
    End If
 
'Me.CommandButton1.BackColor = &HC0FFC0 'зеленый цвет
End Sub

Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    If (X >= Me.CommandButton1.Left) And (X <= Me.CommandButton1.Left + Me.CommandButton1.Width) And _
            (Y >= Me.CommandButton1.Top) And (Y <= Me.CommandButton1.Top + Me.CommandButton1.Height) Then
        Me.CommandButton1.BackColor = &HE0E0E0
    Else
        Me.CommandButton1.BackColor = &HC0FFC0
    End If
End Sub

RAN

Цитата: Perfect2You от 14.03.2017, 20:31:09анализировать координаты
Смысл? За пределами CommandButton1 событие CommandButton1_MouseMove все равно не наступит. Так что вполне достаточно
Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
        Me.CommandButton1.BackColor = &HE0E0E0
End Sub
Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
        Me.CommandButton1.BackColor = &HC0FFC0
End Sub

Ну и кнопку разместить так, чтобы мышь обязательно попадала на форму, а не на другой контрол
А что ты умеешь?
Учиться...

parovoz

Perfect2You,RAN, большое спасибо за варианты ответов :)

Яндекс.Метрика Рейтинг@Mail.ru