Вот как вы это сделаете в vba. Поместите этот код в код модуле рабочего листа:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim pt As Excel.PivotTable
On Error Resume Next
Set pt = Target.PivotTable
If Err.Number = 0 Then
MsgBox "captured"
'to cancel uncomment next line
'Cancel = True
End If
End Sub
EDIT: «Я ищу после двойного щелчка события, как мне нужно, чтобы захватить диапазон значений на новом листе.»
Попробуйте это. Поместите его в модуль ThisWorkbook. Он использует переменную уровня модуля, чтобы отслеживать, был ли двойной элемент с двойным щелчком, и проверяет его в событии NewSheet.
Private PivotDoubleClicked As Boolean
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Dim pt As Excel.PivotTable
On Error Resume Next
Set pt = Target.PivotTable
If Err.Number = 0 Then
PivotDoubleClicked = True
End If
End Sub
Private Sub Workbook_NewSheet(ByVal Sh As Object)
If PivotDoubleClicked Then
MsgBox "new sheet from pivot double-click"
PivotDoubleClicked = False
End If
End Sub
Я ищу после события двойного щелчка, так как мне нужно захватить диапазон значений на новом листе или лучше всего, если я могу получить весь источник данных в виде таблицы данных из объекта-поворота. – Cannon
Да. Но выше решение сделает меня двумя событиями на уровне листа. События будут там, когда есть двойной щелчок на листе или добавляется новый лист независимо от двойного щелчка. Если возможно, я хотел бы избежать объявления этих событий. – Cannon
В чем вас беспокоит наличие двух событий? То, что я изложил, является стандартным типом подхода к этим типам ситуаций. Вы можете сузить ее, проверяя лист перед проверкой, если это стержень ячейки. Легко сказать «Да, но» после того, как вы получили ответ, но не так легко догадаться о своих требованиях, прежде чем перечислить их. :) –