Страницы: 1
RSS
Инверсия цвета шрифта
 
Добрый день.
На листе макросом создаются ячейки различных цветов, изначально информация только о цвете фона и значении
Проблема в том что цвет шрифта сливается с цветом фона некоторых ячеек
тем самым текст становится не видно.
Возможно ли силами vba сделать инверсию цвета шрифта относительно цвета фона ячейки?
Код
ActiveCell.Font.Color = ActiveCell.Interior.Color
Код делает цвет шрифта таким же как цвет фона, можно ли изменить чтоб цвет был не таким же а противоположным?
Или не противоположным а хотя бы чтобы отличался по тону как нибудь.
 
Вариант: везде белый, если нет заливки или заливка белая. А вот с "противоположным" проблема. Может таблицу соответствий создать?
 
Цитата
Александр.М написал: чтоб цвет был не таким же а противоположным
А какой цвет будет ПРОТИВОПОЛОЖНЫМ, например, желтому? :) Может таблицу соответствий какую-нибудь ввести
Согласие есть продукт при полном непротивлении сторон
 
Доброе время суток
Цитата
Александр.М написал:
сделать инверсию цвета шрифта относительно цвета фона ячейки
Так вы же сами алгоритм называете
Код
ActiveCell.Font.Color = Not ActiveCell.Interior.Color

Успехов.
 
Цитата
Андрей VG написал:
... = Not ActiveCell.Interior.Color
Приколько :)  Хотя и не всегда удачное "Инвертирование" получается :)
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
Цитата
Михаил Лебедев написал:
Хотя и не всегда удачное "Инвертирование" получается
Согласен, Михаил. Для 50% серого будет тоже самое. Да и чёрное не инвертируется в белое (хотя если RGB представить как 1, 1, 1), то всё нормально. Формально, полагая инверсию как противоположное значение относительно диапазона 0-255, нужно получить RGB компоненты форма, вычесть их из 255 и по новым значениям компонент собрать цвет шрифта.
Ну, или разрабатывать другое понятие инверсии, может быть, исходя, из максимального разницы по шкале яркости.
Изменено: Андрей VG - 14.02.2016 13:14:54
 
Не, нормально. За исключением нескольких позиций ))
Код
Sub TestColor()
Dim i As Integer
    For i = 1 To 56
        With Cells(i, 1)
            .Interior.ColorIndex = i
            .Value = "Текст"
            .Font.Color = Not .Interior.Color
        End With
    Next
End Sub
 
Сейчас компа нет, но почему обязательно RGB? Рекомендую поиграть с Luminosity из HSL. Например выбрать оптимальную разницу в пределах 255 и менять. Должен быть простой алгоритм.
KL
 
Да о нейтральных серых я и не подумал изначально :cry: хотя вариант предложенный Андреем самая настоящая инверсия получается.
 
Коллеги, а нельзя ли использовать .Interior.Colorindex=xlcolorindexAutomatic?
Я с телефона, попробовать не могу.
 
Алексей, так мы тогда саму ячейку перекрасим.
 
Или можно использовать только черный либо только белый цвет шрифта, очень хорошо видно.
Можно было бы только проверить именно яркость ячейки, и в зависимости от яркости назначать или черный или белый.
 
Такой вариант (см. вложение)
KL
 
Очень круто! все видно, спасибо большое! :D
Страницы: 1
Наверх