Отображение условного форматирования ячейки в лейбле на форме

Автор Олег*, 10.09.2011, 13:46

« назад - далее »

Олег*

Добрый день!
У меня в книге Экселя имеется "информационое табло" - форма, которая всегда плавает поверх всех окон и отображает в своих многочисленных лейблах информацию из разных ячеек на разных листах этой книги. Во всех отображаемых  ячейках применяется условное_форматирование. Хотелось бы, чтобы данные отображались в лейблах формы с тем же цветом фона, что и в своих ячейках. Подскажите, как это сделать. Меня интересует сам принцип, поэтому прилагаю максимально упрощенный пример.
Если Range("A1")=0, фон ячейки жёлтый, если Range("A1")>0, зелёный. Как сделать так, чтобы синхронно изменялся и фоновый цвет в лебле на форме?
Муж это единственный зарегенный юзер, а все остальные это хакеры :)

Олег*

На самом деле, я очень давно поступаю приблизительно вот так:
        Select Case .Range("A1")
          Case Is < -0.099
            frmТабло.lbl1.BackColor = RGB(255, 211, 201) ' Бл-розовый
          Case "", -0.099 To 0.099
            frmТабло.lbl1.BackColor = RGB(255, 255, 190) ' Бледно-жёлтый
          Case Is > 0.099
            frmТабло.lbl1.BackColor = RGB(188, 255, 146) ' Салатовый
        End Select


Короче говоря, это как бы условное_форматирование своими силами :) Но лейблов много и как-то это всё очень громоздко. Хотелось бы поизящнее как-нибудь всё это дело организовать.
Муж это единственный зарегенный юзер, а все остальные это хакеры :)

kuklp

Так и писать:
Private Sub Worksheet_Change(ByVal Target As Range)
    frm.lbl = Range("A1").Value
    frm.lbl.BackColor = IIf([a1] > 0, &HC000&, &HFFFF&)
    frm.Show
End Sub
Я, как всегда, чертовски адекватен... Email: pilipnikop@yandex.ua WM Z206653985942, R334086032478, U238399322728, E332314026771

Олег*

Цитата: KuklP от 10.09.2011, 15:13
Так и писать:
Private Sub Worksheet_Change(ByVal Target As Range)
    frm.lbl = Range("A1").Value
    frm.lbl.BackColor = IIf([a1] > 0, &HC000&, &HFFFF&)
    frm.Show
End Sub

Но это же мой собственный вариант из предыдущего поста. Условия везде разные и код получается очень громоздкий. Хотелось бы как нибудь поизящнее. Что-нибудь вроде
frm.lbl.BackColor =Range ("A1").BackColor
Но так не получается, потому что у объекта Range нет свойства BackColor. Но как-то ведь можно считывать цвет фона ячейки из макроса? Или это невозможно в принципе?
Муж это единственный зарегенный юзер, а все остальные это хакеры :)

Олег*

Вроде бы можно ещё использовать объект Selection и его свойство ColorIndex, но мне бы так делать не хотелось. На самом деле, не такая уж болшая необходимость делать лейблы разноцветными, да и делаю я это уже, хотя и достаточно неуклюже. А если использовать объект Selection, можно непреднамеренно изменять содержимое ячеек, а это уже катастрофа.
Муж это единственный зарегенный юзер, а все остальные это хакеры :)

kuklp

Если Вы имеете ввиду действительно условное_форматирование, то кроме как через формулу-условие УФ, никак не узнаете цвет заливки. И никакие селекты не помогут. И интересно - ну зачем Вам это? Мало того, что ячейки раскрашиваются во все мыслимые цвета, еще и из формы надо попугая сделать. Вам своих глаз не жалко(или глаз тех, кому прийдется пользоваться Вашим ваянием)? От этого очень сильно устают глаза. Не зря серьезные разработчики ПО избегают использования в интерфейсах ярких цветов, и вообще многоцветия. Делайте выводы, Олег.
Я, как всегда, чертовски адекватен... Email: pilipnikop@yandex.ua WM Z206653985942, R334086032478, U238399322728, E332314026771

Олег*

Цитата: KuklP от 10.09.2011, 16:22
Если Вы имеете ввиду действительно условное_форматирование, то кроме как через формулу-условие УФ, никак не узнаете цвет заливки. И никакие селекты не помогут. И интересно - ну зачем Вам это? Мало того, что ячейки раскрашиваются во все мыслимые цвета, еще и из формы надо попугая сделать. Вам своих глаз не жалко(или глаз тех, кому прийдется пользоваться Вашим ваянием)? От этого очень сильно устают глаза. Не зря серьезные разработчики ПО избегают использования в интерфейсах ярких цветов, и вообще многоцветия. Делайте выводы, Олег.

Кроме меня моих "ваяний" никто не видит :) а мне так удобнее
Муж это единственный зарегенный юзер, а все остальные это хакеры :)

kuklp

Как знаете. В первом предложении предыдущего поста я ответил на Ваш вопрос.
ЦитироватьЕсли Вы имеете ввиду действительно условное_форматирование, то кроме как через формулу-условие УФ, никак не узнаете цвет заливки. И никакие селекты не помогут.
Я, как всегда, чертовски адекватен... Email: pilipnikop@yandex.ua WM Z206653985942, R334086032478, U238399322728, E332314026771

Олег*

Цитата: KuklP от 10.09.2011, 16:46
Как знаете. В первом предложении предыдущего поста я ответил на Ваш вопрос.
ЦитироватьЕсли Вы имеете ввиду действительно условное_форматирование, то кроме как через формулу-условие УФ, никак не узнаете цвет заливки. И никакие селекты не помогут.

Подождём, может быть другие коллеги подскажут какое-нибудь решение. А если нет, тогда я хотя бы буду пребывать в уверенности, что тот путь, которым я решаю эту задачу, единственно возможный.
Муж это единственный зарегенный юзер, а все остальные это хакеры :)

Serge 007

Олег* , зря Вы KuklP не верите, Серёга знает что говорит.
Бесплатная помощь: www.excelworld.ru
Платная помощь: sergeyizotov@excelworld.ru
Ю-money: 41001419691823 | WMR:126292472390

Олег*

Цитата: Serge 007 от 10.09.2011, 22:05
Олег* , зря Вы KuklP не верите, Серёга знает что говорит.

А я разве не верю? Просто хотел выслушать ещё и другие мнения :)
Всем большое спасибо! Получается, что тот путь по которому я в своё время пошёл и есть единственно возможный. С одной стороны это радует, а с другой огорчает.
Муж это единственный зарегенный юзер, а все остальные это хакеры :)

Prist

не сказал бы, что единственный. Но определять УФ кодом дело непростое и код будет еще более громоздким. Халявный вариант надстройки, в которой можно подсмотреть некоторые способы определения УФ кодом, я выкладывал здесь. Но данная надстройка некорректно обрабатывает условия, задаваемые формулами в локализациях офиса, отличных от английской.
Я делал и другие надстройки, которые успешно обрабатывают формулы, но код в них закрыт и давать ссылки не вижу смысла.


Вот, в качестве альтернативы могу предложить вот такой вариант(см.вложение). Это избавит Вас от мучений определения формата.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
www.excel-vba.ru
Просто СПАСИБО [+оказать+]
Считаешь СПАСИБО мало? Яндекс.Деньги: 41001332272872; WM: R298726502453

Олег*

Цитата: Prist от 11.09.2011, 11:37
не сказал бы, что единственный. Но определять УФ кодом дело непростое и код будет еще более громоздким. Халявный вариант надстройки, в которой можно подсмотреть некоторые способы определения УФ кодом, я выкладывал здесь. Но данная надстройка некорректно обрабатывает условия, задаваемые формулами в локализациях офиса, отличных от английской.
Я делал и другие надстройки, которые успешно обрабатывают формулы, но код в них закрыт и давать ссылки не вижу смысла.

Спасибо, я всё понял. Целью этого топика было понять, есть ли какой-нибудь ПРОСТОЙ путь для решения этой задачи или нет. Может быть он есть, а я о нём просто не знаю. Ну а если это всё так сложно, тогда буду делать так, как делал раньше.

Цитата: Prist от 11.09.2011, 11:37
Вот, в качестве альтернативы могу предложить вот такой вариант(см.вложение). Это избавит Вас от мучений определения формата.

Посмотрел, работает хорошо. Ещё раз большое спасибо.
Муж это единственный зарегенный юзер, а все остальные это хакеры :)