带动态数据的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