Тип Несоответствие 13 Ошибка - Ссылка на объект - PullRequest
1 голос
/ 28 ноября 2011

Я создал подпрограмму для хранения всех ячеек на листе в объекте с именем "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 Ответ

6 голосов
/ 28 ноября 2011

Если вы попытаетесь записать код с помощью устройства записи макросов, вы увидите, что SourceRange ожидает увидеть адрес, такой как "Cancel!R1C1:R10C5", который включает имя листа

Так, а не

SourceData:= CLrng3.Cells

1009 * попробовать *

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...