Qwentor
@Qwentor
Веб-программист

Excel 2010 и 2013 по разному кодируют цвета? И вообще где почитать про различия для разных версий офиса?

Есть VBA скрипт, в котором все завязано на цвета ячеек. В Excel 2013 работает, а в 2010 нет.
Завязано на Cells(row, column).Interior.Color по числовым значениям. И эти значения на машинах с 8/2013 и XP/2010 отличаются. Так и должно быть? На каждую версию свой сдвиг по цветам? Файл один и тот же. Какие ещё различия между версиями есть? Где посмотреть?
  • Вопрос задан
  • 504 просмотра
Решения вопроса 1
honor8
@honor8
Принципы быстродействия VBA в описании
Начну с того, что не удачно привязываться к цветам в 99% (по праздникам на сайте github блок contributions заливался жёлтым, в обычные дни - зелёным).
Каждая версия программы Excel имеет свою объектную структуру, в которой могут быть как нововведения, так и изменения. Нововведения в предыдущих версиях вообще не будут работать, а изменения могут работать криво (т.к. объектная структура может измениться). Различия между Excel 2010 и 2013 на вскидку указать сложно, - разве что числовые значения цветов и сводные таблицы. Различий между Excel 2003 и 2007 гораздо больше: начиная от записи формул условного форматирования и заканчивая объектной моделью ribbon-меню. В процессе отладки при выявлении конкретной проблемы можно просто сделать вилку:
Select Case Val(Application.Version)
  Case 12
    ' Excel 2007
  Case 14
    ' Excel 2010, VB 7.0
  Case 15
    ' Excel 2013
  Case 16
    ' Excel 2016, VB 7.1
  Case 17
    ' Excel 2019
  Case Else
    ' Прочие
End Select

Куда большая пропасть при обработке кода на x86 и x86_64. В вашем конкретном случае посоветую заменить числовые цвета на индексы палитры.
Cells(row, column).Interior.ColorIndex ' принимает значения от 0 до 56
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы