Vba 录制的宏出现运行时错误5
我是VBA新手。 我录制了一个宏并想编辑它。录制完后,我想运行一次。但当我这样做时,它返回运行时错误5 宏应从一张工作表中获取和,并将其添加到另一张工作表的数据透视表中 这就是错误产生的代码Vba 录制的宏出现运行时错误5,vba,excel,excel-2010,Vba,Excel,Excel 2010,我是VBA新手。 我录制了一个宏并想编辑它。录制完后,我想运行一次。但当我这样做时,它返回运行时错误5 宏应从一张工作表中获取和,并将其添加到另一张工作表的数据透视表中 这就是错误产生的代码 ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ "sourcetable!R1C1:R1048576C21", Version:=xlPivotTableVersion14). _ Create
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"sourcetable!R1C1:R1048576C21", Version:=xlPivotTableVersion14). _
CreatePivotTable TableDestination:="Tabelle2!R3C1", TableName:= _
"PivotTable1", DefaultVersion:=xlPivotTableVersion14
感谢您的帮助首先:sourcetable和Tabelle2工作表是否存在 然后,尝试删除所有可选的无意义参数:
ActiveWorkbook.PivotCaches.Create(xlDatabase, "sourcetable!R1C1:R1048576C21") _
.CreatePivotTable ActiveWorkbook.Worksheets("Tabelle2").Range("R3C1")
第一:是否存在sourcetable和Tabelle2工作表 然后,尝试删除所有可选的无意义参数:
ActiveWorkbook.PivotCaches.Create(xlDatabase, "sourcetable!R1C1:R1048576C21") _
.CreatePivotTable ActiveWorkbook.Worksheets("Tabelle2").Range("R3C1")
不,不,这是一张新的单子,只适合这个pivot@SiddharthRout–初学者4分钟前 最简单的方法是
With ActiveWorkbook
.Sheets("Tabelle2").Cells.Clear
.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"sourcetable!R1C1:R1048576C21", Version:=xlPivotTableVersion14). _
CreatePivotTable TableDestination:="Tabelle2!R3C1", TableName:= _
"PivotTable1", DefaultVersion:=xlPivotTableVersion14
End With
我还注意到,在第1048576行之前,您已经定义了源数据。为什么会这样?更完美的方法是找到最后一行,然后构建范围。比如说
Sub Sample()
Dim lRow As Long
With ActiveWorkbook
'~~> Find last row in sheet sourcetable
With .Sheets("sourcetable")
If Application.WorksheetFunction.CountA(.Cells) <> 0 Then
lRow = .Cells.Find(What:="*", _
After:=.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
Else
lRow = 1
End If
End With
.Sheets("Tabelle2").Cells.Clear
.PivotCaches.Create(SourceType:=xlDatabase, _
SourceData:="sourcetable!R1C1:R" & _
lRow & _
"C21", _
Version:=xlPivotTableVersion14).CreatePivotTable _
TableDestination:="Tabelle2!R3C1", _
TableName:="PivotTable1", _
DefaultVersion:=xlPivotTableVersion14
End With
End Sub
子样本()
暗淡的光线和长的一样
使用ActiveWorkbook
“~~>查找图纸源表中的最后一行
带.Sheets(“sourcetable”)
如果Application.WorksheetFunction.CountA(.Cells)为0,则
lRow=.Cells.Find(内容:=“*”_
之后:=.范围(“A1”)_
看:=xlPart_
LookIn:=xl公式_
搜索顺序:=xlByRows_
搜索方向:=xlPrevious_
MatchCase:=False)。行
其他的
lRow=1
如果结束
以
.Sheets(“Tabelle2”).Cells.Clear
.PivotCaches.Create(SourceType:=xlDatabase_
SourceData:=“sourcetable!R1C1:R”&_
lRow&_
“C21”_
版本:=xlPivotTableVersion14)。CreatePivotTable_
TableDestination:=“Tabelle2!R3C1”_
TableName:=“数据透视表1”_
DefaultVersion:=xlPivotTableVersion14
以
端接头
不,不,这是一张新的单子,只适合这个pivot@SiddharthRout–初学者4分钟前 最简单的方法是
With ActiveWorkbook
.Sheets("Tabelle2").Cells.Clear
.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"sourcetable!R1C1:R1048576C21", Version:=xlPivotTableVersion14). _
CreatePivotTable TableDestination:="Tabelle2!R3C1", TableName:= _
"PivotTable1", DefaultVersion:=xlPivotTableVersion14
End With
我还注意到,在第1048576行之前,您已经定义了源数据。为什么会这样?更完美的方法是找到最后一行,然后构建范围。比如说
Sub Sample()
Dim lRow As Long
With ActiveWorkbook
'~~> Find last row in sheet sourcetable
With .Sheets("sourcetable")
If Application.WorksheetFunction.CountA(.Cells) <> 0 Then
lRow = .Cells.Find(What:="*", _
After:=.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
Else
lRow = 1
End If
End With
.Sheets("Tabelle2").Cells.Clear
.PivotCaches.Create(SourceType:=xlDatabase, _
SourceData:="sourcetable!R1C1:R" & _
lRow & _
"C21", _
Version:=xlPivotTableVersion14).CreatePivotTable _
TableDestination:="Tabelle2!R3C1", _
TableName:="PivotTable1", _
DefaultVersion:=xlPivotTableVersion14
End With
End Sub
子样本()
暗淡的光线和长的一样
使用ActiveWorkbook
“~~>查找图纸源表中的最后一行
带.Sheets(“sourcetable”)
如果Application.WorksheetFunction.CountA(.Cells)为0,则
lRow=.Cells.Find(内容:=“*”_
之后:=.范围(“A1”)_
看:=xlPart_
LookIn:=xl公式_
搜索顺序:=xlByRows_
搜索方向:=xlPrevious_
MatchCase:=False)。行
其他的
lRow=1
如果结束
以
.Sheets(“Tabelle2”).Cells.Clear
.PivotCaches.Create(SourceType:=xlDatabase_
SourceData:=“sourcetable!R1C1:R”&_
lRow&_
“C21”_
版本:=xlPivotTableVersion14)。CreatePivotTable_
TableDestination:=“Tabelle2!R3C1”_
TableName:=“数据透视表1”_
DefaultVersion:=xlPivotTableVersion14
以
端接头
工作表Tabelle2
是否有除枢轴以外的任何其他数据?不,不是,这是一张新工作表,仅用于此枢轴@SiddharthRoutOkk发布回答工作表Tabelle2
是否有除枢轴以外的任何其他数据?不,这不是一张新工作表,仅用于此枢轴@SiddharthRoutOkk发布回答是的存在。我试过你的解决方案,但现在我有一个错误438:它们是存在的。我尝试了您的解决方案,但现在出现了一个错误438:注意数据透视表名称与现有数据透视冲突。@LS\u dev:如果您一直在该表中创建数据透视1,那么它将不会:)哇,它工作了!非常感谢你!但我还有一个问题:“If Application.WorksheetFunction.CountA(.Cells)0 Then”是什么意思?请注意,数据透视表名称与现有数据透视冲突。@LS\u dev:如果您一直在该数据透视表中创建数据透视1,那么它就不会:)哇,它工作得很好!非常感谢你!但我还有一个问题:“If Application.WorksheetFunction.CountA(.Cells)0 Then”是什么意思?