使用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
比较String
和Date
。
要使其正常工作,您应该使用CDate
函数将PI.Name
转换为date。
CDate(PI.Name) < ActiveSheet.Range("H14").Value