В Excel нет события рабочего листа для щелчка левой кнопкой мыши.
У него есть событие для SelectionChange, и его можно комбинировать с вызовом API, чтобы проверить, была ли нажата левая кнопка мыши.
Этот код должен попасть в объект листа в области Project Explorer для рабочего листа, на который вы нацеливаетесь.
Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Private Const MOUSEEVENTF_LEFTDOWN = &H2
Private Const MOUSEEVENTF_LEFTUP = &H4
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Key As Integer
If Target.Count > 1 Then Exit Sub
''//If multiple cells selected with left click and drag
''// then take no action
Key = GetKeyState(MOUSEEVENTF_LEFTDOWN)
If Key And 1 Then
If IsNumeric(Target.Value) Then
Target.Value = Target.Value + 1
''//Check to see if cell contains a number, before
''// trying to increment it
Application.EnableEvents = False
Target.Resize(1, 2).Select
Application.EnableEvents = True
''//Resize the selection, so that if the cell is clicked
''// for a second time, the selection change event is fired again
End If
End If
End Sub
Хотя этот код работает, он может увеличивать значение ячейки, даже если пользователь не щелкнул левой кнопкой мыши.
Я бы порекомендовал использовать событие «BeforeDoubleClick» вместо этого, если это возможно. Это встроено в Excel и является более надежным, чем код выше.
Чтобы увеличить значение ячейки, пользователь должен будет дважды щелкнуть по ячейке.
Этот код должен попасть в объект листа в области Project Explorer для рабочего листа, на который вы нацеливаетесь.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If IsNumeric(Target.Value) Then
Target.Value = Target.Value + 1
''//Check to see if cell contains a number, before
''// trying to increment it
Application.EnableEvents = False
Target.Resize(1, 2).Select
Application.EnableEvents = True
''//Resize the selection, so that if the cell is clicked
''// for a second time, the selection change event is fired again
Cancel = True
''//Stop the cell going into edit mode
End If
End Sub