Количество кликов в Excel - PullRequest
0 голосов
/ 20 марта 2010

Может ли кто-нибудь порекомендовать любую бесплатную программу, которая подсчитывает количество нажатий внутри ячейки.

Например, представьте что-то вроде электронной таблицы Я нажимаю на ячейку A1, значение показывает 1 Затем я снова нажимаю ячейку A1, значение показывает 2 и так далее. Если я щелкну ячейку A3 где-то между счетчиками, ячейка A3 показывает 1 и т. Д.

Если что-то подобное можно реализовать в виде макроса в Excel (пожалуйста, 2003), пожалуйста, предложите или любую другую бесплатную программу, о которой вы могли бы знать, пожалуйста, дайте мне знать. Я ценю вашу помощь и заранее благодарю.

Ответы [ 2 ]

2 голосов
/ 21 марта 2010

В 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
0 голосов
/ 20 марта 2010

Да, это возможно. Вы можете использовать некоторые варианты сценария VBA, предоставленные на этой ссылке . Надеюсь, это поможет.

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