Страницы: 1
RSS
Сбросить счётчик форматов ячеек не переоткрывая файл., "Слишком много различных форматов ячейки"
 
Всем привет!
Файл с количеством форматов более 64 тыс. (заполняются динамически)
Получаю сообщение "Слишком много различных форматов ячейки."
Удаляю все форматы, сообщение не пропадает.
Если файл сохранить и открыть заново, сообщение не выводится.
Как сбросить счетчик форматов ячеек, не переоткрывая файл?
«Бритва Оккама» или «Принцип Калашникова»?
 
может удалить форматы и сохранить файл? Thisworkbook.Save
К сожалению, нет под рукой файла с 64 тыс. стилей, чтобы проверить
Изменено: New - 10.12.2021 10:53:11
 
New, это не обязательно стили. Это могут быть и цвета ячейки.
Вот тестовый код, для проверки.
Код
Sub test()
Dim i As Long
For i = 1 To 66000
    Cells(i, 1).Interior.Color = i
Next
End Sub
«Бритва Оккама» или «Принцип Калашникова»?
 
Код
ActiveSheet.UsedRange

Нет?
 
bedvit, приветствую!
Код
With: ActiveSheet.UsedRange: End With
Видел у Дмитрия Щербакова такой вариант переопределения UsedRange. Может сработать и для твоего случая, но это не точно )
Изменено: Jack Famous - 10.12.2021 11:11:14
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Не работает.
Код.
Здесь ошибка переполнения форматов, хотя предыдущий блок был очищен и новое количество форматов в рамках 64 тыс.
Код
Sub test()
Dim i As Long
For i = 1 To 64000
    Cells(i, 1).Interior.Color = i ' все ОК, количество форматов в рамках 64 тыс.
Next

' очищаю все форматы, но счетчик не сбрасывается!
Columns("A:A").ClearFormats
'пробуем предложенный способ - не работает
With ActiveSheet: .UsedRange: End With
    
For i = 1 To 64000
    Cells(i, 2).Interior.Color = i + 64000 'здесь ошибка переполнения форматов, хотя предыдущий блок был очищен и новое количество форматов в рамках 64 тыс.
Next

End Sub
Изменено: bedvit - 10.12.2021 11:19:42
«Бритва Оккама» или «Принцип Калашникова»?
 
У меня работает нормально. Форматов не должно быть больше 65430. Пока мы не превысили число 65430 форматов - всё ОК. Как превысили - удаляем старые
Код
Sub test()
    Dim i As Long
    'создаём 65429 форматов
    For i = 1 To 65429
        Cells(i, 1).Interior.Color = i 'все ОК, количество форматов в рамка 65429 тыс.
    Next
     
    Columns("A:A").ClearFormats 'удаляем предыдущие 65429 форматов
     
   'создаём новые форматы - И всё ОК
    For i = 1 To 65429
        Cells(i, 2).Interior.Color = i 'все ОК, количество форматов в рамка 65429 тыс.
    Next
 
End Sub
Изменено: New - 10.12.2021 11:37:24
 
New, вы создаете теже форматы что и были, посмотрите мой пример. Вы во втором блоке не увеличиваете количество форматов. Они уже есть в первом. Поэтому и без ошибок. Можно даже первый не очищать блок.
Создавайте новые)
Изменено: bedvit - 10.12.2021 11:36:23
«Бритва Оккама» или «Принцип Калашникова»?
 
Я так понимаю решение данной проблемы не было найдено.
 
Нет.
«Бритва Оккама» или «Принцип Калашникова»?
Страницы: 1
Наверх