在VBA中,我正在编写一个代码,根据用户表单中的初始输入收集信息。
从初始入口点开始,我希望代码出去找到相应的数据并添加它。我一切都运作良好。
但我正在从数据透视表中收集数据,如果数据透视表已打开,则返回""空格,"(空白)"和#34; Grand Total",我想摆脱。
我的当前代码是:
lcomboCount = Sheets(pt).PivotTables("Pivottable1").TableRange2.Rows.Count
For i = 1 To lcomboCount
datapoint = Sheets(pt).PivotTables("PivotTable1").PivotFields("combo").LabelRange.Offset(i, 0).Value
UserForm1.ComboBox.AddItem Sheets(pt).PivotTables("PivotTable1").PivotFields("combo").LabelRange.Offset(i, 0)
Next i
For i = 0 To Me.ComboBox.ListCount - 1
If Me.ComboBox = "" Or Me.ComboBox = "Grand Total" Or Me.ComboBox = ("(blank)") Then
Me.ComboBox.RemoveItem (i)
End If
Next i
我有一个Msgbox
在那里,看看我的价值观是否正确,他们是。
答案 0 :(得分:3)
当您测试存储在ComboBox中的值时,您只需要.List(i)
。
我也改变了#34;方向"第二个循环的(请参阅第二条评论的详细信息)以避免遗漏项目。
以下是您修改过的代码:
lcomboCount = Sheets(pt).PivotTables("PivotTable1").TableRange2.Rows.Count
For i = 1 To lcomboCount
datapoint = Sheets(pt).PivotTables("PivotTable1").PivotFields("combo").LabelRange.Offset(i, 0).Value
UserForm1.ComboBox.AddItem datapoint
Next i
For i = Me.ComboBox.ListCount - 1 To 0 Step -1
If Me.ComboBox.List(i) = "" Or Me.ComboBox.List(i) = "Grand Total" Or Me.ComboBox.List(i) = ("(blank)") Then
Me.ComboBox.RemoveItem (i)
End If
Next i