2

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

有什么方法可以将所选数据透视表的整个数据源视为数据表?

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

4

2 回答 2

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
于 2012-06-04T21:27:37.053 回答
0

我相信您对Range对象的ShowDetail属性感兴趣。

要获取整个数据集,您可以为数据DataBodyRange透视表设置此属性。

Excel.PivotTable pivotTable = (Excel.PivotTable)Globals.Sheet3.PivotTables(1);
pivotTable.DataBodyRange.ShowDetail = true;

编辑:根据评论,如果您想要数据透视表呈现的数据集,您必须编写一个方法,使用PivotCache来确定SourceType并根据SourceType. 没有PivotTableor的属性PivotCache返回 aADODB.RecordSet不管SourceType,更不用说 .NET 了DataTable

于 2012-06-04T22:48:13.783 回答