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)

它分三部分返回

  1. “取消”(作为你的范围的父母的名字)
  2. “!”
  3. 和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