有什么方法可以捕获 Pivot Double Click 事件?(在另一张纸上生成详细视图的事件。)
有什么方法可以将所选数据透视表的整个数据源视为数据表?
我正在使用 C#、VSTO 编程。
这是您在 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
编辑:“我正在寻找双击事件后,因为我需要捕获新工作表上的值范围。”
那就试试这个。将它放在 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
我相信您对Range
对象的ShowDetail
属性感兴趣。
要获取整个数据集,您可以为数据DataBodyRange
透视表设置此属性。
Excel.PivotTable pivotTable = (Excel.PivotTable)Globals.Sheet3.PivotTables(1);
pivotTable.DataBodyRange.ShowDetail = true;
编辑:根据评论,如果您想要数据透视表呈现的数据集,您必须编写一个方法,使用PivotCache
来确定SourceType
并根据SourceType
. 没有PivotTable
or的属性PivotCache
返回 aADODB.RecordSet
不管SourceType
,更不用说 .NET 了DataTable
。