带动态数据的VBA透视

带动态数据的VBA透视,vba,excel,pivot-table,Vba,Excel,Pivot Table,我试图从同一工作簿中的另一个选项卡获取数据透视,但出现错误。有什么想法吗 Sub RefreshPivots() Dim SrcData As String Dim PivTbl As PivotTable Dim lastrow As Long Sheets("EXP 7004").Activate lastrow = Sheets("EXP 7004").Range("a" & Rows.Count).End(xlUp).Row SrcData = Sheets("EXP 70

我试图从同一工作簿中的另一个选项卡获取数据透视,但出现错误。有什么想法吗

Sub RefreshPivots()

Dim SrcData As String
Dim PivTbl As PivotTable
Dim lastrow As Long

Sheets("EXP 7004").Activate
lastrow = Sheets("EXP 7004").Range("a" & Rows.Count).End(xlUp).Row

SrcData = Sheets("EXP 7004").Range("$A$26:$AT$" & lastrow).Address(ReferenceStyle:=xlR1C1)

Set PivTbl = Sheets("EXP Pivot").PivotTables("PivotTable1")
Sheets("EXP Pivot").Activate

Sheets("EXP Pivot").PivotTables(PivTbl).ChangePivotCache Sheets("EXP Pivot"). _
PivotCaches.Create(SourceType:=xlDatabase, SourceData:=SrcData)

End Sub
尝试下面的代码(解释在代码注释中):

像这样试试

Sub RefreshPivots()

Dim SrcData As Range
Dim PivTbl As PivotTable
Dim lastrow As Long

lastrow = Sheets("EXP 7004").Range("a" & Sheets("EXP 7004").Rows.Count).End(xlUp).Row

Set SrcData = Sheets("EXP 7004").Range("$A$26:$AT$" & lastrow)
Set PivTbl = Sheets("EXP Pivot").PivotTables("PivotTable1")

PivTbl.ChangePivotCache ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=SrcData)

End Sub

你犯了什么错误?哪里寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。参见。错误在本部分中;“Sheets(“EXP Pivot”).PivotTables(PivTbl).ChangePivotCache Sheets(“EXP Pivot”)。PivotCaches.Create(SourceType:=xlDatabase,SourceData:=SrcData)。”这是Ru时间错误“438”。对象不支持此属性或方法。请在问题中添加错误。这是运行时错误。数据透视表名称无效。@BenjaminWann这是哪一行出现的错误?Else'只要用更新的范围(EXP 7004工作表中的数据)PivTbl.ChangePivotCache PivCache PivTbl.RefreshTable End If刷新数据透视缓存即可。我试图删除宏,但宏未执行任何操作。是否确实从A列到A列中有有效数据?46列?数据从第26行开始?不是2号?@BenjaminWann你处理了我的全部代码吗?还是只有一点点?这很有效。非常感谢。不客气。很高兴它成功了。@sktneer来吧,你比这更好,不要用
激活
呵呵。。实际上,我在问题区域工作,没有调整代码的其余部分。:)@Shai Rado在这种情况下激活的替代方案是什么?
Sub RefreshPivots()

Dim SrcData As Range
Dim PivTbl As PivotTable
Dim lastrow As Long

lastrow = Sheets("EXP 7004").Range("a" & Sheets("EXP 7004").Rows.Count).End(xlUp).Row

Set SrcData = Sheets("EXP 7004").Range("$A$26:$AT$" & lastrow)
Set PivTbl = Sheets("EXP Pivot").PivotTables("PivotTable1")

PivTbl.ChangePivotCache ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=SrcData)

End Sub