Страницы: 1
RSS
Получить номер цвета при градиентной заливке
 
Всем привет.
И у меня созрел вопрос. Обнаружил странность при получении номеров цветов при градиентной заливке.

Залиты две ячейки: одна градиентной, вторая - одноцветной заливкой. Вторая только для сравнения. Нажимаем кнопку "записать" - номера цветов записываются в ячейки:
Код
Sub RecordColor()
    With Range("C5").Interior.Gradient.ColorStops
        Range("D5").Value = .Add(0).Color ' цвет1 градиентной
        Range("E5").Value = .Add(1).Color ' цвет2 градиентной
    End With
    
    Range("D6").Value = Range("C6").Interior.Color ' цвет ячейки
End Sub

Странности начинаются, если кнопку нажимать повторно:
         
- второе срабатывание макроса вызывает подсветку цветов градиентной заливки белым и изменение номера первого цвета (ячейка D5) на 16777215;
- третий проход видимых изменений не вызывает;
- четвертый раз макрос меняет номер второго цвета (ячейка E5) на 16777215;
- пятый - подсветка белым пропадает;
- шестой - подсветка появляется;
- на седьмой раз макрос показывает правильный номер первого цвета;
- далее номер опять меняется, при последующих запусках подсветка то появляется, то пропадает, номера цветов могут определиться нормально, а могут как 16777215 (зависимости от чего-либо не обнаружил)
Запись номеров в ячейки другого листа и запуск кода из другого листа на результат не повлияли.

Прошу помочь разобраться. Вопросов два:
1. Правильно ли определяю номер цвета?
2. Что происходит? (на другой машине не проверял)
 
Код
Sub RecordColor()
  With ws0.Range("C5").Interior.Gradient.ColorStops
    ws0.Range("D5").Value = .Item(1).Color ' цвет1 градиентной
    ws0.Range("E5").Value = .Item(4).Color ' цвет2 градиентной
  End With
  Range("D6").Value = Range("C6").Interior.Color ' цвет ячейки
End Sub
2-й и 3-й элементы в ColorStops имет те же цвета, что и 1-й и 4-й.
Виктор, странности начинались, когда ты вместо того чтобы взять цвет из определенного элемента коллекции ColorStops добавлял в нее еще 2 новых элемента.
Изменено: Ігор Гончаренко - 21.06.2017 03:23:07
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Вот она, ошибка... Спасибо, Игорь.
Страницы: 1
Наверх