如何使用数据透视表中的字段填充Excel用户窗体组合框?

时间:2018-08-01 20:03:38

标签: excel vba pivot-table userform

用户不想查看电子表格或数据透视表,他们希望表单选择他们想要的内容并打印报告。

我有一个包含3个组合框(提供者,年份和季度)的用户窗体。当用户选择所需的内容时,它将过滤数据透视表中的数据,以便他们可以打印报告。我没有设法用数据透视表字段填充用户窗体组合框。

我尝试将要过滤的字段放在列部分和过滤器部分中,但无法正常工作。从另一个建议中,我将想要的节放在过滤后的节中,然后将其重命名为数据透视表中的单元格,但这也不起作用。

唯一可行的方法是将它们放置在过滤区域中,然后转到“属性”中的RowSource并放置单元格的名称,但是它并没有仅显示所有列表“ All”。现在,我在“提供者和姓名”行部分,在“年,季度和值”列中。

数据透视表
enter image description here

我不知道它是否不起作用,因为可以从另一个用户窗体上的命令按钮访问该用户窗体,或者这是否是我设置数据透视表的方式。我正在使用Excel 2016。

这是我对代码的最新尝试。

Sub FillcboProviderPT()

    Dim ws As Worksheet
    Dim pt As PivotTable
    Dim pf As PivotField

    Set ws = ThisWorkbook.Worksheets("ComReportPT")
    Set pt = ws.PivotTables("ptComReport")
    Set pf = pt.PivotFields("Provider").LabelRange.Select

    Dim Item As PivotItem
    Dim index As Integer
    index = 1

    For Each Item In pf.PivotItems
        Me.cboProviderPT.AddItem Item.Name
    Next Item

    Me.cboProviderPT.AddItem "(All)"
End Sub

Private Sub cboProviderPT_Change()
    Dim ws As Worksheet
    Dim pt As PivotTable
    Dim pf As PivotField

    Set ws = ThisWorkbook.Worksheets("ComReportPT")
    Set pt = ws.PivotTables("ptComReport")
    Set pf = pt.PivotFields("Provider").LabelRange.Select

    pf.CurrentPage = Me.cboProviderPT.Value

End Sub

0 个答案:

没有答案