类型不匹配13错误 - 引用对象

时间:2011-11-28 02:36:05

标签: excel excel-vba vba

我创建了一个子例程来将工作表中的所有单元格存储在名为“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

现在,我想引用此对象来创建包含数据的轴:

ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
    CLrng3.Cells, Version:=xlPivotTableVersion12).CreatePivotTable _
    TableDestination:="CancelSummary!R1C1", TableName:="CancelPivot", _
    DefaultVersion:=xlPivotTableVersion12

问题是当我运行这部分代码时,我得到“类型不匹配错误13”。有谁知道为什么我可能会收到此错误以及如何解决它?

谢谢!

1 个答案:

答案 0 :(得分:6)

如果您尝试使用宏录制器录制代码,您会看到SourceRange希望看到包含工作表名称的"Cancel!R1C1:R10C5"等地址

所以而不是

SourceData:= CLrng3.Cells

SourceData:=(Clrng3.Parent.Name & "!" & Clrng3.Address)

以三部分返回

  1. “取消”(作为范围内容的名称)
  2. “!”
  3. 和A1:E10
  4. 之类的东西

    给予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