使用VBA设置Visible = False

编辑1:

Sub MultiItemPivotFilter() Dim PI As PivotItem For Each PI In ActiveSheet.PivotTables("test").PivotFields("date").PivotItems If PI.Name < ActiveSheet.Range("H14").Value Or PI.Name > ActiveSheet.Range("H15").Value Then PI.Visible = False Else PI.Visible = True End If Next PI End Sub 

H14和H15只是从源表复制的固定date,但If条件永远不会是真的。 它返回最后的错误,因为它不能设置所有的行

 visible = false 

结束编辑1:

我正在尝试编写一个VBA脚本,它允许用户从两个date之间的数据透视表中select所有观察值。 到目前为止,我的脚本不工作。

 Sub datelist() Set pf = Sheets("sheet1").PivotTables("test") Set pt = pf.PivotFields("date") For Each pit In pt.PivotItems If pit.Value < Sheets("sheet1").Range("G14").Value Then pit.Visible = False Next End Sub 

G14是包含用户从菜单中select的值的单元格。 我想实现每行的date低于所选值设置为Visible = False

提前致谢

我不太了解数据透视表,但实际上是引用一个行对象,或者只是一个单元格吗? 我相信你不能只把单元格设置为visible = false,你必须引用整行/列。

你可以通过尝试来testing

 dim rngTestRow as range set rngTestRow = rows(pit.row) rngTestRow.Visible = false 

这部分代码:

 PI.Name < ActiveSheet.Range("H14").Value 

比较StringDate

要使其正常工作,您应该使用CDate函数将PI.Name转换为date。

 CDate(PI.Name) < ActiveSheet.Range("H14").Value