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
但这需要在您开始计算列表中的项目之前。
我有一个用户表单,我在其中提交了一些数据,从数据中我的盒子填充了更多数据,在我 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
但这需要在您开始计算列表中的项目之前。