我有一个Userform,其中我提交了一些数据,从我的数据框中填充了更多数据,在我从该框中选择数据后,我需要从第三个框中选择该项目的数据。收集的数据来自数据透视表。
Box1只是一个提供的组合框,而2和3直接来自数据透视表。我有基于Box1的Box2工作功能,但这是因为它们是由工作表分开的。
目标是Box1可以= A,B,C然后如果Box1 = A则Box2可以= 1,2,3然后如果Box2 = 1则Box3 = x,y,z。
问题出现在Box3中,它返回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
答案 0 :(得分:0)
我一整天都在玩这个,发现你必须让第二行可见。这段代码效果很好。注意在计算之前显示细节。
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
但这需要在您开始计算列表中的项目之前。