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 VBA运行时1004“;引用无效";-透视刷新宏_Excel_Vba - Fatal编程技术网

Excel VBA运行时1004“;引用无效";-透视刷新宏

Excel VBA运行时1004“;引用无效";-透视刷新宏,excel,vba,Excel,Vba,我正在尝试运行这段非常简单的代码,我将其嵌入到一个按钮中以刷新数据透视: Sub Button5_Click() ThisWorkbook.Worksheets("DD").PivotTables("test").PivotCache.REFRESH End Sub 在下面的照片中,您可以看到我正在处理的工作表,以及轴的名称 看起来我的代码指向了正确的东西,所以我不明白为什么会出现这个错误。我也尝试过不使用此工作簿 工作簿照片 为了更新“DD”工作表中的数据透视表(“测试”),您需要首

我正在尝试运行这段非常简单的代码,我将其嵌入到一个按钮中以刷新数据透视:

Sub Button5_Click()
    ThisWorkbook.Worksheets("DD").PivotTables("test").PivotCache.REFRESH
End Sub
在下面的照片中,您可以看到我正在处理的工作表,以及轴的名称

看起来我的代码指向了正确的东西,所以我不明白为什么会出现这个错误。我也尝试过不使用此工作簿

工作簿照片


为了更新“DD”工作表中的数据透视表(“测试”),您需要首先使用数据透视表从中检索数据的范围内的更新来更新数据透视缓存。然后刷新表

我已经使用下面的行定义了
数据透视缓存的
范围
(仅用于运行此代码):

修改工作表的名称和所需对象范围以适合您的数据

代码

Option Explicit

Sub Button5_Click()

Dim PvtTbl                  As PivotTable
Dim PvtCache                As PivotCache
Dim PvtDataRng              As Range

' Set/Update Pivot Data Range
Set PvtDataRng = Worksheets("PivotDataSheet").Range("A1:E100") ' <-- just an example

' Create/Update Pivot Cache
Set PvtCache = ActiveWorkbook.PivotCaches.Add(xlDatabase, PvtDataRng)

' Set the Pivot Table (already created, otherwise need to create it)
Set PvtTbl = Worksheets("DD").PivotTables("test")

' refresh the Pivot Table with the latest Pivot Cache
With PvtTbl
    .ChangePivotCache PvtCache
    .RefreshTable
End With

End Sub
选项显式
子按钮5_单击()
作为数据透视表的Dim PvtTbl
将PvtCache设置为数据透视缓存
变暗PvtDataRng As范围
'设置/更新透视数据范围

设置PvtDataRng=Worksheets(“PivotDataSheet”).Range(“A1:E100”)”要更新“DD”工作表中的
数据透视表(“test”)
中的数据,首先需要使用
数据透视表从中检索数据的范围内的更新来更新
数据透视缓存。然后刷新表

我已经使用下面的行定义了
数据透视缓存的
范围
(仅用于运行此代码):

修改工作表的名称和所需对象范围以适合您的数据

代码

Option Explicit

Sub Button5_Click()

Dim PvtTbl                  As PivotTable
Dim PvtCache                As PivotCache
Dim PvtDataRng              As Range

' Set/Update Pivot Data Range
Set PvtDataRng = Worksheets("PivotDataSheet").Range("A1:E100") ' <-- just an example

' Create/Update Pivot Cache
Set PvtCache = ActiveWorkbook.PivotCaches.Add(xlDatabase, PvtDataRng)

' Set the Pivot Table (already created, otherwise need to create it)
Set PvtTbl = Worksheets("DD").PivotTables("test")

' refresh the Pivot Table with the latest Pivot Cache
With PvtTbl
    .ChangePivotCache PvtCache
    .RefreshTable
End With

End Sub
选项显式
子按钮5_单击()
作为数据透视表的Dim PvtTbl
将PvtCache设置为数据透视缓存
变暗PvtDataRng As范围
'设置/更新透视数据范围

设置PvtDataRng=工作表(“数据透视表”)。范围(“A1:E100”)'整个工作簿中有多少个数据透视表?您是否使用通用数据透视表(1)对其进行了测试,以确定该名称是否不被接受?您能否给出错误的屏幕截图?是“排序引用无效”吗?如果是这种情况,请看这里-错误只是“引用无效”。嗨,Cyril,是的,我用通用名称进行了测试,得到了相同的错误,这就是为什么我命名它只是为了确保它指向正确的表…整个工作簿中有多少透视表?您是否使用通用数据透视表(1)对其进行了测试,以确定该名称是否不被接受?您能否给出错误的屏幕截图?是“Sort reference not valid”(排序引用无效)吗?如果是这种情况,请看这里-错误只是“reference not valid”(引用无效)。嗨,Cyril,是的,我用泛型名称进行了测试,得到了相同的错误,这就是为什么我命名它只是为了确保它指向正确的表…一个后续操作-如何在此代码中添加第二个透视表?我有两个表,我希望按钮刷新一个后续操作-如何向代码中添加第二个透视表?我有两张桌子,我想让按钮刷新