В моем исследовании я обнаружил, что нет встроенных функций для включения событий двойного щелчка на фигурах на листе excel. Многие из обходных решений, которые я видел, касались написания классов или других подобных вещей, чтобы добавить эту функциональность, все из которых казались немного выше моей базы знаний VBA. Следовательно, я написал вышеприведенный код (в настоящее время как тест), чтобы попытаться написать собственную функцию двойного щелчка для фигур.Событие с двойным щелчком по фигурам
Public Clicked As Boolean, LastClickObj As String, LastClickTime As Date
Sub GenerateShapes()
Dim sheet1 As Worksheet, shape As shape
Set sheet1 = ThisWorkbook.Worksheets("Sheet1")
Set shape = sheet1.Shapes.AddShape(msoShapeDiamond, 50, 50, 5, 5)
shape.OnAction = "ShapeDoubleClick"
Set shape = sheet1.Shapes.AddShape(msoShapeRectangle, 50, 60, 5, 5)
shape.OnAction = "ShapeDoubleClick"
LastClickTime = Now
End Sub
Sub ShapeDoubleClick()
If Second(Now) - Second(LastClickTime) > 0.5 Then
Clicked = False
LastClickObj = ""
LastClickTime = Now
Else
If Not Clicked Then
Clicked = True
LastClickObj = Application.Caller
ElseIf LastClickObj = Application.Caller Then
MsgBox ("Double Click")
Clicked = False
LastClickObj = ""
LastClickTime = Now - 1
Else
LastClickObj = Application.Caller
Clicked = True
LastClickTime = Now
End If
End If
End Sub
Однако, учитывая то, как я encorporated таймера, код часто будет только выполнить «двойной щелчок», если я нажимаю три раза в быстрой последовательности. Я думаю, что это имеет какое-то отношение к тому, как я обрабатываю тайм-аут «перезагрузки» Clicked
, но могут быть другие проблемы с логикой. Любые идеи о том, как правильно реализовать эту функцию без других обширных дополнений (например, Классы и т. Д.)?
Ha! Я также полагал, что нажатие кнопки было проблемой для тройного нажатия - отличное решение, которое вы нашли. Это была хорошая головоломка! –
@DavidG Выберите таймер, потому что он занимает время с полуночи в секундах (таким образом, единственное возможное срабатывание может произойти, если два клика пересекают полночь, что маловероятно в этом использовании) – RGA