我最近一直面临一个问题,非常感谢任何帮助解决。
我的工作表“Sheet1”有一个数据透视表“Dyn40”。其中一个PivotField是“选项”,其中一个可能的PivotItem是“Potato”。我有错误#error 438:对象不支持此属性或方法
Sub FindPriority()
Dim pass As String
pass = "user"
With Worksheets("Sheet1")
.Activate
.Unprotect Password:=pass
Range("TK2").Select ‘ < --- is this necessary ?
ActiveSheet.PivotTables("Dyn40").PivotCache.Refresh
If ActiveSheet.PivotTables("Dyn40").PivotFields("Options").ListCount = 1 Then ‘check if there is at least one item in the field
If ActiveSheet.PivotTables("Dyn40").PivotFields("Options").PivotItems("Potato").count = 1 Then ‘check if there is at least one single item named “Potato”
CreateObject("WScript.Shell").Popup "Only one item exists and its name is Potato" ‘ if there exists, then message pops up
End If
Else
If ActiveSheet.PivotTables("Dyn40").PivotFields("Options").ListCount > 1 Then ‘check if there is more than one item in the field
If ActiveSheet.PivotTables("Dyn40").PivotFields("Options").PivotItems("Potato").count = 1 Then ‘check if there is at least one single item named “Potato”
CreateObject("WScript.Shell").Popup "There is more than one item and one of them is Potato"‘ if there exists, then message pops up
ActiveSheet.PivotTables("Dyn40").PivotFields("Options").PivotItems("Potato").Visible = False ‘ and then the name “Potato” is hidden
End If
Else
CreateObject("WScript.Shell").Popup "There is nothing in here" 'if there are no fields available, message pops up
End If
End If
End With
End Sub
接下来的问题是......如果我想用“”(空字段)替换Potato,这个代码片段会是什么样子?
答案 0 :(得分:0)
我想出了一种在不使用VBA的情况下做同样事情的新方法。拯救你的大脑做更重要的编码。这是解决上述问题的方法:
与开始时一样,过滤器字段(人员和选项)是常量数据,这意味着没有新的人员或选项将被视为新条目,因为它们是固定项目。另一方面,行标签和值字段是变量,这意味着它们的内容可以在数据库中根据需要进行更改,添加或删除 - 图片1。
现在我想要从字段人中过滤一个人“Laetitia”,将她排除在我的结果之外。事先了解所有关于人员的新条目都不会更改(此特定示例的列表中不会添加新名称),一旦使用新数据刷新数据透视表,我们的结果将保持完整会很好 - 图2
现在我想过滤一个蔬菜“马铃薯”,将其排除在蔬菜字段的结果中。马铃薯在行Lables 中,此字段是可变的,这意味着将添加或排除新蔬菜和新的运输方式 - 图3
一旦数据透视表刷新,问题就开始了。如果有关蔬菜字段的新条目被添加到我们的数据库(即:甜菜根),则不会在最终结果中处理它,即使私有表已全部刷新。人们可以认为这个新的数据“甜菜根”没有包含在我们的报告中。请注意,通过访问数据透视表&gt;行标签&gt;蔬菜。我们可以意识到“甜菜根”并未自动选择 - 图4
为了弥补这种不便,只需访问数据透视表&gt;行标签&gt;蔬菜&gt;提交配置,最后勾选方框“在手册栏中选择新项目” - 图片5,6。
最后,下一次蔬菜字段的新条目是 添加并且数据透视表已刷新,唯一的素材不是 可用的是马铃薯(按计划!)。至于结论,做 别忘了选择数据透视表选项&gt;数据&gt; 并选择“无” 在“每个字段保留的项目数”。这个设置是 默认情况下自动并将其更改为无将阻止数据透视表 保留下拉列表中不再存在的项目 更新数据库 - 图7