Страницы: 1
RSS
Как подстветить часть текущей строки с помощью условного форматирования?
 
Добрый день!
Вопрос такой: можно ли с помощью условного форматирования подсветить часть текущей строки?
Например, необходимо выделять ячейки в столбцах с D по J в текущей строке. То есть, если курсор (текущая ячейка) стоит в строке 3, то выделяется диапазон
D3:J3, если в 10-й строке то, соответственно D10:J10 и т.д.
Есть ощущение, что это сделать реально, но как ни бьюсь не могу придумать, прошу помочь! :-)
 
Есть ощущение, что это сделать не реально... Что затратно по ресурсам - это точно.
 
Цитата
Zhukov_K пишет: но как ни бьюсь не могу придумать
Вариант - искать координатное выделение (крест, строка, столбец)... ;)
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
 
если ограничиться областью, например, 1000 строк, по идее, не должно быть очень затратно
 
вот файлик, это один из файлов-примеров к книге уокенбаха про диаграммы
там сделано так, что в диаграмме отображаются данные текущей строки таблицы
почему то кажется, то основываясь на этой же идее можно получить и то, что хочется в вопросе этой темы
 
Цитата
Zhukov_K пишет: почему то кажется...
Так попробуйте - за чем дело?!
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
 
Мы ведь говорим о УФ, а не о том, чтоб сделать выделение? :)
 
да это, конечно, не одно и то же (к тому же в файле уокенбаха нет необходимости делать выделение всей строки для получения нужного результата), но че-то казалось, что это близкие темы и этот же прием можно использовать.,
Z, я ж уже попробовал - не получилось, посему и пришел спросить у знающих людей
Изменено: Zhukov_K - 11.03.2014 15:50:29
 
Пока могу предложить только просмотреть реализацию:
Координатное выделение строки и столбца
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
посмотрел, насколько я понял, это надстройка, ее нужно отдельно ставить, не совсем то, т.к. файл будет передаваться лицам у которых точно не будет установлена эта надстройка (
Изменено: Zhukov_K - 11.03.2014 23:58:56
 
Поигрался. :oops:
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Application.ScreenUpdating = False
    With Range("D:J")
        .FormatConditions.Delete
        .FormatConditions.Add Type:=xlExpression, Formula1:= _
        "=СТРОКА()=" & ActiveCell.Row
        With .FormatConditions(1).Interior
            .PatternColorIndex = xlAutomatic
            .Color = 65535
            .TintAndShade = 0
        End With
        .FormatConditions(1).StopIfTrue = True
    End With
    Application.ScreenUpdating = True
End Sub 
[CODE][/CODE]Не сильно критикуйте, потому что ради интереса сделал. Не совсем оптимально, думаю. Но работает. :)
Да, макрос вставить в целевую книгу. Как, я думаю, разберётесь. :)
Изменено: JayBhagavan - 11.03.2014 16:06:02

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Вариант. Для записи адреса ранее выделенного диапазона используется ячейка A100
Согласие есть продукт при полном непротивлении сторон
 
за решение спасибо, но виделось так, что это должно быть без макросов, к тому же в последнем файле "Подстветка.xls" заливкой выделяются ячеки только тогда, когда текущая ячейка в пределах D - J, а подразумевалось, что она может быть где угодно от A до AZ и т.д. (до конца листа вправо по столбцам)
 
В общем я бы так сделал.
В стандартный модуль:
Код
Public KS_On As Boolean
Sub Set_KoordSel()
    Const lKS_FC_Color As Long = 10921638    'цвет выделения
    With Range("D:J")
        .FormatConditions.Delete
        KS_On = False
        If MsgBox("Включить выделение?" & vbNewLine & _
                  "(Да - включить; Нет - выключить)", vbYesNo, "Запрос") = vbYes Then
            .FormatConditions.Add Type:=xlExpression, Formula1:="=ЯЧЕЙКА(""row"")=СТРОКА()"
            .FormatConditions(.FormatConditions.Count).Interior.Color = lKS_FC_Color
            KS_On = True
        End If
    End With
End Sub

В модуль листа(или книги, если во всей книге отслеживать требуется):
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If KS_On Then Application.ScreenUpdating = True
End Sub
Далее можно основной код и на кнопку повесить для удобства включения/выключения.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Zhukov_K пишет: но виделось так, что это должно быть без макросов
:) , мы все облажались
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Zhukov_K пишет: но виделось так, что это должно быть без макросов
Я так старался...  :cry:  Имхо, без макроса никак. Могу ошибаться, но пока знатоки не разубедили в этом. :)

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Можно почти без макроса. Т.е. установить-то Вы установите через УФ. Но обновляться это все не будет, видимо. Только через Application.ScreenUpdating
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Zhukov_K пишет: один из файлов-примеров к книге уокенбаха про диаграммы
в файле вообще то используется макрос. Без макроса по моему никак.
 
да, реально, облом, там действительно есть макрос, плохо
вероятно, что без макроса, действительно никак ((
 
Цитата
Zhukov_K пишет: у которых точно не будет установлена эта надстройка (
Как и не заставите их установить один из древних XL, в которых когда-то даже можно было выбрать цвет для "стандартного" выделения (крестом) активной ячейки, строки, столба... В прошлом все было, и вода... мокрее была. ;)
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
 
Но если сильно хочется :)  :?:
Просто выделением ячейки не получится, а после нажатия F9 можно.
 
после нажатия F9 как-то....совсем уж перебор, на мой взгляд. Что, выделили ячейку и нажали F9? По сути, такие варианты выше уже есть - это тупо установка самих условий УФ. Но подождем что скажет автор...
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Nic70y, браво! :)

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Цитата
Nic70y пишет: Но если сильно хочется
Офф. У меня, например, на ноутбуке функциональные клавиши уже вторичны, т.е. нажимаются совместно с кнопкой fn, но если сильно хочется, тогда да!  :)
Согласие есть продукт при полном непротивлении сторон
 
Цитата
мы все облажались
:D:D:D +500
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
очень оригинальное решение! )
кстати, я вот хотел проверить, а как насчет далекостоящих столбцов, ну то есть если где-нть в BN стать в ячейку..
в общем, при таком способе проверки даже F9 жать не надо, т.к. когда возвращаешься (например, через Alt PageUp) к диапазону, где применено УФ, то там уже нужная строка становится правильно отформатированной )
 
на самом деле не совсем удобно, но если вместо F9 например, использовать тот же ввод данных, то, в принципе, решение очень хорошее
при вводе данных, например, правее соответственно, строка корректно подсвечивается желтым :-)

только, дабы совсем уж было кошерно, необходимо выставить параметр после ввода данных не перемещение на ячейку вниз (так сделано по умолчанию), а перемещение на ячейку правее :)
Изменено: Zhukov_K - 11.03.2014 19:24:38
 
Цитата
Nic70y написал: Просто выделением ячейки не получится, а после нажатия F9 можно.
Можно и просто Shift+Пробел без заморочек
Страницы: 1
Наверх