Страницы: 1
RSS
Убрать условное форматирование в выбранной ячейке
 
Есть отчет - табель работы сотрудников, который формируется макросами из разных файлов, есть ячейки, в которых есть текст(тип работы), а есть пустые. Так вот, пустые ячейки я могу заливать другим цветом и вставлять примечание макросом, а заполненные ячейки я не могу заливать никак, но макросом примечание добавляется.
HELP!!!
 
Выяснил, что условное форматирование все срубает, как его убрать с выбранной ячейки.
 
Цитата
Владимир Л написал: ...условное форматирование... убрать с выбранной ячейки.
Код
Range("A1").FormatConditions.Delete
Selection.FormatConditions.Delete
Изменено: U_M0KRH - 09.11.2017 13:00:54
 
Делаю так:
но повисает макрос жестоко и надолго.
Код
Application.ThisWorkbook.Sheets("ИмяЛиста").Cells(i, n).FormatConditions.Delete
 
Цитата
Владимир Л написал:
но повисает макрос жестоко и надолго
Так Вы не для каждой ячейки в цикле отдельно его убирайте, а одним махом(без цикла). Выделите все ячейки -Главная -Условное форматирование -Удалить правила -С выделенных ячеек.
Или кодом:
Код
Selection.FormatConditions.Delete

со всех ячеек листа:
Код
ActiveSheet.UsedRange.FormatConditions.Delete
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
The_Prist написал:
Так Вы не для каждой ячейки в цикле отдельно его убирайте, а одним махом(без цикла).
вот в этом -то и затык - нужно по конкретным только.
 
Тогда цикл по ним, через Union объединяйте в один Range и потом махом со всех удаляйте форматирование.
Хотя в любом случае какой-то порочный путь. Условное форматирование нехорошо раскидывать по разных ячейкам - оно хорошо работает в непрерывном диапазоне, но если одно и тоже условие раскидать по разным ячейкам, то можно в файле получить в итоге некислые тормоза.
Да и вообще - если ячейку надо красить руками, а не через УФ - может просто УФ настроить иначе, чтобы срабатывало по иному условию и не мешало красить руками?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
The_Prist написал:
Тогда цикл по ним, через Union объединяйте в один Range и потом махом со всех удаляйте форматирование.
я весь список ячеек могу получить только после выполнения цикла, т.е. типа создать массив динамический и пополнять его адресами ячеек, но потом его же опять циклом проходит...
можно пример, может какая функция есть добавления адреса в Range.?
 
я не знаю по каким условиям Вы отбираете ячейки. Допустим, это наличие в ячейке цифры 1:
Код
dim rr as range,rc as range
for each rc in selection.cells
    if rc.value = 1 then
        if rr is nothing then
            set rr = rc
        else
            set rr = union(rc,rr)
        end if
    end if
next
if not rr is nothing then
    rr.formatconditions.delete
end if

Поэтому цикл только ОДИН. А т.к. не надо в цикле каждый раз удалять УФ - то это будет работать быстрее.
Изменено: The_Prist - 09.11.2017 11:40:05
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
The_Prist написал:
я не знаю по каким условиям Вы отбираете ячейки.
простите, туплю...
...у меня поиск по ФИО происходит из одного списка в другом. но все же не пойму как мне это Application.ThisWorkbook.Sheets("List").Cells(i, n) заппихать в union(rc,rr)
ведь у меня получается так
Код
for i=1 to 100
if fio == "петров" then
for n=1 to 100
' к примеру
                                                    With Application.ThisWorkbook.Sheets("ÒÀÁÅËÜ").Cells(i, n)
                                                        '.FormatConditions.Delete
                                                        .Interior.Color = RGB(255, 0, 0)
                                                        .ClearComments
                                                        .AddComment
                                                        .Comment.Text TW_SAP
                                                        With .Comment.Shape.TextFrame.Characters.Font
                                                            .Name = "Times New Roman"
                                                            .Size = 14
                                                            .Bold = True
                                                        End With
                                                    End With
end for
end if
end for
тут мне union(Range.Range).FormatConditions.Delete нужно сделать
.
Изменено: Владимир Л - 09.11.2017 13:01:20
 
Изначально в какие-то кошки-мышки играем. Если учесть, что Вы еще и комментарии к каждой ячейке добавляете, то это все меняет. Именно создание примечаний может сильно тормозить работу. Хотя и здесь можно выползти - но надо знать, используется единый текст для всех примечаний или разный. Т.к. Вы скупы на пояснения и полный код - примем за факт, что текст один.
Видимо, последний раз играю в угадайку, дальше сами:
Код
    With Application.ThisWorkbook.Sheets("OAAAEU")
        For i = 1 To 100
            If fio = "петров" Then 'что есть такое fio - хрен его знает, может ячейка, может с неба свалилось. Будем считать, что это ячейка
                If rr Is Nothing Then
                    Set rr = .Cells(i, n).Resize(, 100) 'расширяем на 100 столбцов
                Else
                    Set rr = Union(.Cells(i, n).Resize(, 100), rr)
                End If
            End If
        Next
    End With
    
    If Not rr Is Nothing Then
        With rr
            .FormatConditions.Delete
            .Interior.Color = RGB(255, 0, 0)
            .ClearComments
            With .Cells(1, 1)
                .AddComment
                .Comment.Text TW_SAP
                With .Comment.Shape.TextFrame.Characters.Font
                    .Name = "Times New Roman"
                    .Size = 14
                    .Bold = True
                End With
                .Copy 'копируем ячейку с созданным комментарием
            End With
            'вставляем скопированный комментарий на все ячейки
            rr.PasteSpecial xlPasteComments
            Application.CutCopyMode = False
        End With
    End If
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Страницы: 1
Наверх