Pivot双击 - 显示详细信息事件

时间:2012-06-04 21:16:39

标签: c# excel vsto

有什么方法可以捕获Pivot Double Click事件吗? (在另一张纸上生成详细视图的事件。)

有什么办法可以将所选枢轴的整个数据源看作数据表吗?

我正在使用C#,VSTO编程。

2 个答案:

答案 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的类型反向获取数据。 PivotTablePivotCache没有属性,无论ADODB.RecordSet如何都会返回SourceType,更不用说DataTable