types不匹配13错误 – 引用一个对象
我创build了一个子程序,将工作表中的所有单元存储在一个名为“CNrng3”的对象中。
Sub GetCLRange() Dim CLrng1 As Range Dim CLrng2 As Range Sheets("Cancel").Activate Set CLrng1 = Cells.Find("*", [a1], , , xlByRows, xlPrevious) Set CLrng2 = Cells.Find("*", [a1], , , xlByColumns, xlPrevious) If Not CLrng1 Is Nothing Then Set CLrng3 = Range([a1], Cells(CLrng1.Row, CLrng2.Column)) Application.Goto CLrng3 Else MsgBox "sheet is blank", vbCritical End If End Sub
现在,我想引用这个对象来创build一个与数据的关键:
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ CLrng3.Cells, Version:=xlPivotTableVersion12).CreatePivotTable _ TableDestination:="CancelSummary!R1C1", TableName:="CancelPivot", _ DefaultVersion:=xlPivotTableVersion12
问题是,当我运行这部分代码时,出现“types不匹配错误13”。 有没有人有一个想法,为什么我可能会收到这个错误,以及如何解决它?
谢谢!
如果您尝试使用macroslogging器logging代码,您将看到SourceRange预期会看到诸如"Cancel!R1C1:R10C5"
的地址,其中包含表单名称
所以,而不是
SourceData:= CLrng3.Cells
尝试
SourceData:=(Clrng3.Parent.Name & "!" & Clrng3.Address)
它分三部分返回
- “取消”(作为你的范围的父母的名字)
- “!”
- 和A1:E10一样
给予Cancel!A1:E10
Sub GetCLRange() Dim CLrng1 As Range Dim CLrng2 As Range Dim Clrng3 As Range Sheets("Cancel").Activate Set CLrng1 = Cells.Find("*", [a1], , , xlByRows, xlPrevious) Set CLrng2 = Cells.Find("*", [a1], , , xlByColumns, xlPrevious) If Not CLrng1 Is Nothing Then Set Clrng3 = Range([a1], Cells(CLrng1.Row, CLrng2.Column)) ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ ("'" & Clrng3.Parent.Name & "'!" & Clrng3.Address), Version:=xlPivotTableVersion12).CreatePivotTable _ TableDestination:="CancelSummary!R1C1", TableName:="CancelPivot", _ DefaultVersion:=xlPivotTableVersion12 Application.Goto Clrng3 Else MsgBox "sheet is blank", vbCritical End If End Sub