Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.08.2009, 23:05   #1
Евгений ГВС
Пользователь
 
Регистрация: 28.05.2009
Сообщений: 43
По умолчанию Событие листа - изменение выделения.

Есть обработчик события Worksheet_SelectionChange, но он реагирует как на клик мышью, так и на выделение ячеек в результате нажатия клавиш. Есть еще обработчик Worksheet_BeforeDoubleClick, а почему же нет обработчика просто одинарного клика? Что делать, если нужно обрабатывать только клик мышью?
Евгений ГВС вне форума Ответить с цитированием
Старый 05.08.2009, 01:24   #2
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Попробуйте так:
Код:
Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer

  Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   
          If GetKeyState(vbKeyLButton) = 1 Then
   
              '-- Ваш код здесь 
             MsgBox "Вы нажали левую кнопку мыши в ячейке " + Target.Address
      
   End If
   
End Sub
или лучше так (1-ый случай иногда что-то глючит):

Код:
Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Const VK_LEFT = &H25
    Const VK_UP = &H26
    Const VK_RIGHT = &H27
    Const VK_DOWN = &H28

    If (GetKeyState(VK_UP) >= 0 And GetKeyState(VK_DOWN) >= 0 And GetKeyState(VK_LEFT) >= 0 And GetKeyState(VK_RIGHT) >= 0) Then
    If GetKeyState(vbKeyLButton) >= 0 Then
    MsgBox "Вы нажали левую кнопку мыши в ячейке " + Target.Address
    End If
    End If
End Sub

Последний раз редактировалось motorway; 05.08.2009 в 01:48.
motorway вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как зафиксировать событие (изменение) в книге? ЕленаС Microsoft Office Excel 27 31.12.2010 17:34
Динамическая выделения памяти megavolt91 Общие вопросы C/C++ 1 25.05.2009 21:05
касательно выделения столбцов Volodymyr Microsoft Office Excel 2 20.07.2008 11:47
Изменение ячеек защищённого листа Slim Microsoft Office Excel 3 07.02.2007 22:28