Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 为什么我不能按名称访问工作表?_Excel_Vba_Pivot Table_Excel 2013_Worksheet - Fatal编程技术网

Excel 为什么我不能按名称访问工作表?

Excel 为什么我不能按名称访问工作表?,excel,vba,pivot-table,excel-2013,worksheet,Excel,Vba,Pivot Table,Excel 2013,Worksheet,我正在使用Excel 2013。我可以通过遍历工作表并检查Name属性来访问工作表,但使用工作表名称作为键无法单独找到它 我真的必须遍历所有工作表,然后遍历所有透视表才能找到需要刷新的透视表吗 这项工作: 将工作表调整为工作表 Dim oPivot作为数据透视表 对于ActiveWorkbook.工作表中的每个工作表 如果oWorksheet.Name=“fpspoint”,则 对于oWorksheet.PivotTables中的每个oPivot oPivot.PivotCache.Refres

我正在使用Excel 2013。我可以通过遍历工作表并检查
Name
属性来访问工作表,但使用工作表名称作为键无法单独找到它

我真的必须遍历所有工作表,然后遍历所有透视表才能找到需要刷新的透视表吗

这项工作:

将工作表调整为工作表
Dim oPivot作为数据透视表
对于ActiveWorkbook.工作表中的每个工作表
如果oWorksheet.Name=“fpspoint”,则
对于oWorksheet.PivotTables中的每个oPivot
oPivot.PivotCache.Refresh
下一个观点
如果结束
下一个工作表
这不起作用:

将工作表调整为工作表
oWorksheet=ActiveWorkbook.Worksheets(“fpspoint”)
我得到了老栗子:

未设置对象变量或带块变量

为什么?

理想情况下,我只想要一行:

ActiveWorkbook.Worksheets(“fpspoint”).PivotTables(“fpspoint”).PivotCache.Refresh
这肯定是可能的?

错误

未设置对象变量或带块变量

发生的原因是,如果使用对象,则需要使用
Set

Dim oWorksheet As Worksheet
Set oWorksheet = ActiveWorkbook.Worksheets("FPSpivot")
另外:

您确定是指
ActiveWorkbook
(有焦点/位于顶部的工作簿)还是指
thishworkbook
(编写代码的工作簿)?在大多数情况下,您需要
此工作簿

您确定是指
活动工作簿
(有焦点/位于顶部的工作簿)还是指
此工作簿
(编写代码的工作簿)?会产生巨大的差异,在大多数情况下,您需要
此工作簿
还请注意,对于将工作表放入变量的对象,您需要使用
Set
。工作表(“fpspoint”)使用
ActiveWorkbook
activesheet
。选择
,因为它会导致@P之类的错误ᴇʜ指出。我仍然不清楚为什么
ActiveWorkbook.Worksheets(“fpspoint”).PivotTables(“fpspoint”).PivotCache.Refresh
不起作用。它抱怨“无法获取工作表类的数据透视表属性”。@MarkRoworth这意味着您的数据透视表未命名为“fpspoint”。啊,谢谢。首先,是的,我指的是这本手册。其次,我经常使用.Net,我忘了在VBA中需要一个集合。奇怪的是,有时你看不见树木,看不见树木。谢谢你的帮助。完全正确