【发布时间】:2015-07-08 18:26:06
【问题描述】:
再次,我需要一点帮助,我将不胜感激。
基本上,在我的仪表板页面上,我有几个复选框,用于在后台控制大量数据透视表。
我有称为“确定”、“暂定”、“待定”、...的复选框,也对应于数据透视字段中的值。
我在不同的工作表中有许多名为“Hidden_1”或“Hidden_2”的数据透视表,但都具有相同的结构。
我的想法是,如果有人选中“确定”,它将在名为“状态”的字段中的所有数据透视表中被选中。如果有人“取消选中”此复选框,则枢轴会做出反应。
为此,我使用了我之前创建的代码,并且运行良好:
Sub checkbox1()
Application.ScreenUpdating = False
On Error Resume Next
Dim pt As PivotTable, wks As Worksheet
For Each wks In ActiveWorkbook.Worksheets
For Each pt In wks.PivotTables
With pt
If .Name = "Hidden_1" Or .Name = "Hidden_2" Then
.PivotFields("Status").CurrentPage = "definite"
End If
End With
Next pt
Next wks
Application.ScreenUpdating = True
End Sub
但是,此代码仅选择一个值,因此如果有人选中了这些框,我不能同时选择“确定”和“待定”。现在所有复选框都有一个单独的代码,其中只有 .CurrentPage = "checkboxname" 被更改..
我有两个问题:
1) 选择多个值的最佳方法是什么。例如。如果选中了“确定”和“待定”复选框,则数据透视表应该在“状态”字段中选择了两个值“确定”和“待定”
2)“取消选择”值的最佳方法是什么?现在,每次单击复选框时,我的程序 checkbox1 都会运行。而且我希望它仅在我“检查”它时运行。 现在我正在尝试将复选框与单元格链接,例如“确定”有 H10,所以我的代码以以下行开头:
If Range("H10").Value = True Then
'code to select the value in "Status" field
Else
'code to unselect the value in "Status" field
End If
我还应该指出,我不能使用 ActiveX Checkbox,因为我有错误:“无法插入对象”并且我使用了表单控件。我读到这个错误与我安装的补丁有关。
感谢大家的帮助, 马特
【问题讨论】:
-
如果您想摆脱无法插入对象的错误,请查看support.microsoft.com/en-gb/kb/3025036,它将告诉您如何修复它
-
亲爱的 Sam,很遗憾,我不允许安装任何修复程序,我需要等到它在公司级别完成。
-
在该链接上有一个手动说明该做什么。它涉及关闭所有 excel 实例并删除临时文件夹和应用数据中的某些文件
-
我刚问过我的老板,他不让我这样做。无论如何,我最初的问题仍然是一样的。我也在努力,所以也许我可以自己做。
标签: vba checkbox pivot-table