Я получаю ошибку несоответствия 13 при запуске кода ниже. Весь модуль кода используется и в основном не менялся больше года, я ничего не менял в последнее время, и я единственный пользователь этой книги.
Нерабочий код:
Private Sub CreateMIAPivots(MIABook As Workbook, MIASheet As Worksheet, MaxRow As Long)
Dim wksPivotSheet As Worksheet
Dim PivotRange As Range
Set wksPivotSheet = MIABook.Sheets.Add
wksPivotSheet.Name = "Summary"
wksPivotSheet.Tab.Color = RGB(255, 0, 0)
Set PivotRange = MIASheet.Range("A1:Y" & MaxRow)
With MIABook.PivotCaches.Add(xlDatabase, PivotRange) 'Error sets here
'More code below
MaxRow
является переменной, но я проверил ее на файле, содержащем от 600 до 7000 строк, и объект Range
создает действительную ссылку, если я пытаюсь взаимодействовать с ним любым другим способом.
Я рассмотрел некоторые связанные вопросы здесь, на SO:
- Я работаю только в 2003 году, и в любом случае ошибка другая.
- Я подтвердил, что у меня нет других
PivotCaches
в книге, прежде чем пытаться создать новую. - Я успешно выполнил эту работу, используя принятое здесь решение: Используйте именованные диапазоны (см. дополнительный код ниже)
Обходной код:
Private Sub CreateMIAPivots(MIABook As Workbook, MIASheet As Worksheet, MaxRow As Long)
Dim wksPivotSheet As Worksheet
Dim pc As PivotCache
Dim lVBAVer As Long
Dim PivotRange As Range
lVBAVer = CLng(Application.Version)
Set wksPivotSheet = MIABook.Sheets.Add
wksPivotSheet.Name = "Summary"
wksPivotSheet.Tab.Color = RGB(255, 0, 0)
Set PivotRange = MIASheet.Range("A1:Y" & MaxRow)
MIABook.Names.Add Name:="PivotRange", RefersTo:=PivotRange
'Using answer from https://stackoverflow.com/a/11868231/698590 (StackOverflow)
'as a guide for version checking. Original answer of
'CLng(Application.VBE.Version) did not work here.
#If lVBAVer <= 11 Then
Set pc = MIABook.PivotCaches.Add(xlDatabase, "PivotRange")
#Else
Set pc = MIABook.PivotCaches.Create(xlDatabase, "PivotRange")
#End If
With pc
'More code below
Теперь у меня вопрос: почему необходимо вышеуказанное решение? Похоже, что я не единственный, у кого отлично работающий код внезапно останавливался при использовании PivotCaches
, как это было изначально. Так в чем здесь настоящая первопричина? Из-за чего перестал работать код?
Я хотел бы знать, поэтому, если это возможно, я могу предотвратить появление непредвиденных ошибок в будущем. Я знаю, что ответ может заключаться в том, что я сделал где-то еще в коде/рабочей книге (здесь не упоминается), но я не могу в жизни отследить, что изменилось.