Ошибка ChangePivotCache, указывающая на ошибку несоответствия типа

У меня есть макрос, который ранее сбросил кеш двух сводных таблиц без каких-либо ошибок. Я столкнулся с несоответствием типа 13 времени выполнения для всего лишь одного из таблиц, и я не понимаю, почему он внезапно не работает. И только для одной таблицы, когда код идентичен для обеих таблиц.

Sub refresh_caches() Dim cpt As PivotTable, chpt As PivotTable Set ca2 = Sheets("claim edit").Range("A2") Set cha2 = Sheets("chrg review").Range("A2") Set cpc = Range(ca2.End(xlToRight), ca2.End(xlDown)) Set chpc = Range(cha2.End(xlToRight), cha2.End(xlDown)) Set cpt = Sheets("Formulas & Pivots").PivotTables("ptClaim") Set chpt = Sheets("Formulas & Pivots").PivotTables("ptCharge") cpt.ChangePivotCache ActiveWorkbook. _ PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ cpc, Version:=xlPivotTableVersion15) chpt.ChangePivotCache ActiveWorkbook. _ PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ chpc, Version:=xlPivotTableVersion15) For Each PivotCache In ActiveWorkbook.PivotCaches PivotCache.Refresh Next End Sub 

Ошибка времени выполнения попадает на код changepivotcache . Когда я chpt ко второму коду для chpt , он обновляет эту таблицу.

Любая помощь будет принята с благодарностью.

Изменить Ошибка появляется после обновления источника данных, который является подключением к данным. Я получаю ту же ошибку, даже если sourcedata на диапазон непосредственно как sourcedata . Хотя, если я вручную меняю источник данных, сводная таблица обновляется просто отлично.

Также странно, что при обращении к полному диапазону данных непосредственно он будет вызывать ошибку, но если я не буду ссылаться на каждую строку, она обновит таблицу.

NEW Edit Я считаю, что я определил строку, вызывающую мою проблему, хотя я не совсем понимаю, почему, или если это то, что вызвало проблему ранее. Я сузил проблему до конкретной ячейки, и, похоже, она происходит всякий раз, когда какая-либо ячейка диапазона содержит более 255 символов. Я проверил это с дополнительными ячейками в диапазоне, добавив текст в ячейку и вызвав ошибку, также я мог предотвратить ошибку, гарантируя, что текст ячейки содержит не более 255 символов.

Почему это? Я могу вручную выбрать диапазон данных и использовать его в качестве своего пивовата, но я не могу заставить код делать то же самое. Нашли некоторые проблемы с ячейками, превышающими 255 символов в google, но я все еще сбиваюсь с толку, поскольку я не ссылаюсь на ячейку конкретно, просто включив ее в диапазон. Было бы очень полезно узнать об этом, тем более, что я могу найти обходное решение для следующего раза, когда данные вытягивают значение ячейки, превышающее этот предел.

Хотя я до сих пор не совсем понимаю, почему ошибки кода возникают, когда ячейка, содержащая более 255 символов, включена в диапазон данных, она, по-видимому, является причиной.

Я реализовал немного кода, чтобы просто идентифицировать ячейки и уменьшить текст до приемлемого количества, прежде чем устанавливать PivotCache .

 Dim c as Range For each c in Range("SpecialtyClaimEdit") 'the name of my data connection If Len(c) > 255 Then c = Left(c, 255) End If Next 

По некоторым причинам, по некоторым причинам для некоторых свойств excel имеет предел 255 символов.

Например, я пытался установить описания для своих UDF (пользовательские функции), и я узнал, что он ограничен 255 символами. Вот мой вопрос: ошибка при настройке описания UDF в VBA

Кроме того, если вы попытаетесь написать функцию с более чем 255 символами в одной ячейке, Excel не сможет ее обработать. Посмотрите на эту тему: Excel: используйте формулу дольше, чем 255 символов

Теперь у вас есть ответ, но вам также нужно перебрать все ячейки и потерять / удалить некоторые данные. Я думаю, он может также работать над созданием нового листа и ссылкой на ячейки в вашем оригинальном листе (например, в ячейке A1 нового листа, который вы вводите ='Formulas & Pivots'!A1 ). Затем используйте этот лист в своем коде. Вам нужно взять адрес диапазона сводной таблицы из исходного листа, а затем установить другой диапазон, который будет таким же, но на новом листе.

  • Как это (возможно?) Можно предотвратить, чтобы PivotTablization данных привел к «# DIV / 0!», А также при отсутствии данных?
  • Проблема в создании сводной таблицы через VBA
  • Добавить столбец оборачиваемости в сводную таблицу с помощью PowerPoint
  • Как я могу написать макрос или условное форматирование, чтобы подсветить ячейку, если
  • MS Excel. Консолидация и сумма из столбцов с списком проверки данных и зависимым списком.
  • Две сводные таблицы на одном и том же лицевом листе
  • Сводная таблица, мешающая обнаружению в столбце
  • Почему некоторая раскраска ячеек не возникает, и существует ли связь между этим и «Не удается выполнить привязку времени выполнения» err msg?
  • Применение многозначных фильтров в Excel Pivot
  • Как использовать Excel VBA для: создания сводной таблицы для разных листов, расширения поворота в новые книги и сохранения с определенным именем
  • обновить встроенную ось excel в powerpoint с помощью кода VBA
  • Interesting Posts

    Скопируйте и вставьте данные на Mac с помощью терминала

    Попытка вернуть вторую последнюю позицию согласованного значения

    Excel VLOOKUP с 2 значениями поиска

    взаимодействовать с флажком на excel spread python 2.7

    Добавить комментарии к конкретным ячейкам в Range. Excel VBA

    Почему я получаю ошибку else, когда я использую оператор case case и как его исправить?

    Excel INDEX MATCH ЕСЛИ более 10%

    Вычисление режима отфильтрованных данных

    excel 2007 VBA Subscript вне диапазона, проблема ReDim Preserve, когда не найдены дубликаты

    excel vba: перестановка матричных значений

    Как фильтровать по одному столбцу, затем фильтровать по следующему, затем другому и копировать общее количество всех трех фильтров?

    Разделение строк на основе нескольких правил и значений

    Мой VBA не возвращает никаких ошибок, но не устанавливает значение ячейки в MS-Excel

    Excel Возврат Соответствующая строка из непустой ячейки

    Полностью удалить запросы с листа через Excel VBA

    Давайте будем гением компьютера.