有什么方法可以捕获Pivot Double Click事件吗? (在另一张纸上生成详细视图的事件。)
有什么办法可以将所选枢轴的整个数据源看作数据表吗?
我正在使用C#,VSTO编程。
答案 0 :(得分:1)
以下是你在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
答案 1 :(得分:0)
我相信您对Range
对象的ShowDetail
属性感兴趣。
要获取整个数据集,您可以为数据透视表的DataBodyRange
设置此属性。
Excel.PivotTable pivotTable = (Excel.PivotTable)Globals.Sheet3.PivotTables(1);
pivotTable.DataBodyRange.ShowDetail = true;
修改:根据评论,如果您想要数据透视表呈现的数据集,则必须编写一个使用PivotCache
来确定SourceType
的方法并根据SourceType
的类型反向获取数据。 PivotTable
或PivotCache
没有属性,无论ADODB.RecordSet
如何都会返回SourceType
,更不用说DataTable
。