我在Excel工作表上有一个数据透视表。它有一个名为" Season"的字段,它是一个包含多个选择和一些空白值的报告字段。 我想看看是否在过滤器中选择了空白值(即可见),并使用以下代码。
Sub ShowVisbilityOfBlankItem()
Dim PivotField As PivotField
Set PivotField = ActiveSheet.PivotTables(1).PivotFields("Season")
Dim PivotItem As PivotItem
Set PivotItem = PivotField.PivotItems("(blank)")
Debug.Print PivotItem.Visible ' Runtime Error 13: Type mismatch
End Sub
但是,最后一行会导致运行时错误13:类型不匹配。其他PivotItem
不会发生这种情况。这是Excel(2010)或我的代码中的错误吗?还有另一种方法可以确定空白是否可见?
可以设置空白PivotItem
的可见性。此外,本地窗口显示True
的值PivotItem.Visible
,无论它是否可见。
答案 0 :(得分:1)
在谷歌搜索并获得相同的错误后,我在另一个问题中遇到了这个回复: https://stackoverflow.com/a/39107082/1626443
我认为问题与Excel语言版本有关,只有在字面值为(blank)
时才能处理。我使用的是德语版本,之前它是(leer)
并且它不起作用。
这为我删除了错误:
sStore = pi.Value
pi.Value = sStore
If pi.Visible Then 'no more error
注意,从技术上讲,您只需要执行一次,我认为以下代码也可以正常运行:
If pi.Value = "(BLANK_IN_YOUR_LANGUAGE)" Then pi.Value = "(blank)"
甚至可能是这个:
If pi.Value = "(BLANK_IN_YOUR_LANGUAGE)" Then pi.Value = pi.Value
说实话,这是一个非常奇怪和令人沮丧的错误。
我知道这是一年前的事情,但也许它仍然可以帮助你或其他人完成PivotItems
的旅程。
答案 1 :(得分:0)
我使用法语遇到了同样的错误。不幸的是,这不仅与(空白)价值有关,而且与每个具有语言解释的价值有关。
我遇到了PivotItem.value
的值,该值来自我的数据源中的双精度类型值。可以肯定的是,由于十进制分隔符是,但法语。用英语。
应用PivotItem.value=PivotItem.value
使.visible
再次起作用,但是请注意,它会更改在Excel中打开过滤器时有效显示的值:123,456
最初显示为123.456
。
这可能会使您的最终用户在使用数据透视表时感到困惑。 这也可能会更改过滤功能,因为新值虽然事先是双精度的,但似乎仍被视为字符串。因此,例如>或<过滤器将给出不同的结果。
这显然是一个错误,但是到目前为止,我还没有找到µsoft的修复程序。我使用的是excel2007,可能应该更新...没有任何保险,因为它已在最新版本中修复