我正试图找到一种方法来遍历上面的数据透视表。我的三行标签是“Desk”,“Product Type”和“Prod ID”。我要做的是确定B列中的条目在“产品类型”中等于0的任何地方,突出显示“产品ID”,它在B列中等于0。
到目前为止我的尝试是(我意识到这是一团糟,我不是很擅长VBA),
Sub Pivot_Table()
'
' Pivot_Table Macro
'
Dim PvTable As PivotTable
Dim PvField As PivotField
Dim PvField2 As PivotField
Dim PvItem As PivotItem
Dim PvItemL As PivotItem
Set PvTable = ActiveSheet.PivotTables("PivotTable1")
Set PvField = PvTable.PivotFields("Product Type")
Set PvField2 = PvTable.PivotFields("Prod ID")
Dim lRow As Long
With ws
lRow = .Range("B" & .Rows.Count).End(xlUp).Row
For Each PvItem In PvField.PivotItems
If Range("B2:B" & lRow) = 0 Then
For Each PvItemL In PvField2.PivotItems
If Range("B2:B" & lRow) = 0 Then
LabelRange.Interior.Color = vbYellow
End If
Next
End If
Next
End With
End Sub
首先关闭“lrow”我得到一个运行时错误,我不明白,因为我之前使用过这段代码。之后我不确定循环是否会起作用?
任何帮助都非常感谢!!
答案 0 :(得分:0)
您必须使用Range.Value属性来检查范围是否包含数字零。 VBA中的Range是一个对象,因此无法与数字进行比较(您必须指定要与零比较的Range的哪个属性)。
For Each PvItem In PvField.PivotItems
If Range("B2:B" & lRow).Value = 0 Then
For Each PvItemL In PvField2.PivotItems
If Range("B2:B" & lRow).Value = 0 Then
LabelRange.Interior.Color = vbYellow
End If
End If
Next
关于lrow片段,尝试在Rows.Count之前删除点。
With ws
lRow = .Range("B" & Rows.Count).End(xlUp).Row