Select 第二个数据透视表 Table 第一行输入后的行数据 VBA 用户表单和组合框

Select Second Pivot Table Row Data After First Row Input VBA Userforms & ComboBox

我有一个用户表单,我在其中提交了一些数据,从数据中我的盒子填充了更多数据,在我 select 来自那个盒子的数据之后,我需要 select 来自的数据第三个盒子里的那个东西。收集的数据来自数据透视表。

Box1 只是一个提供的组合框,而 2 和 3 直接来自数据透视表。我有基于 Box1 的 Box2 功能,但那是因为它们被工作表分开。

目标是 Box1 可以 = A,B,C 那么如果 Box1=A 那么 Box2 可以 = 1,2,3 那么如果 Box2 = 1 那么 Box3= x,y,z。

问题在 Box3 中 returns Box2= 1,2 AND 3 而不仅仅是 1 的信息。

我当前的代码是:

    lCommentCount = Sheets(pt).PivotTables("Pivottable1").TableRange2.Rows.Count

    For i = 1 To lCommentCount
        If Me.ptDatabox.Value = Sheets(pt).PivotTables("PivotTable1").PivotFields("ptData").LabelRange.Offset(i, 0).List Then
            OEEDataEntry.commentbox.AddItem Sheets(pt).PivotTables("PivotTable1").PivotFields("ptData").LabelRange.Offset(i, 1)
        End If
    Next i

    For i = Me.commentbox.ListCount - 1 To 0 Step -1
        If Me.commentbox.List(i) = "" Or Me.commentbox.List(i) = "Grand Total" Or Me.commentbox.List(i) = ("(blank)") Then
            Me.commentbox.RemoveItem (i)
        End If
    Next i

我整天都在研究这个,发现你必须让第二行可见。此代码运行良好。注意在计数之前显示详细信息。

    Sheets(pt).PivotTables("PivotTable1").PivotFields("ptData").ShowDetail = _
True

For i = 1 To lCommentCount
    pti = Sheets(pt).PivotTables("PivotTable1").PivotFields("ptData").LabelRange.Offset(i, 0).Value
    If Me.ptDatabox.Text = pti Then
        OEEDataEntry.commentbox.AddItem Sheets(pt).PivotTables("PivotTable1").PivotFields("ptData").LabelRange.Offset(i, 1)
    End If
Next i

For i = Me.commentbox.ListCount - 1 To 0 Step -1
    If Me.commentbox.List(i) = "" Or Me.commentbox.List(i) = "Grand Total" Or Me.commentbox.List(i) = ("(blank)") Then
        Me.commentbox.RemoveItem (i)
    End If
Next i

如果出于某种原因您想更改第一个框中给出的信息,那么您需要进行更改,以便在第一个框重新退出时折叠所有项目符号,因此 Sheets(pt).PivotTables("PivotTable1").PivotFields("ptData").ShowDetail = False 但这需要在您开始计算列表中的项目之前。