Добрый день уважаемые форумчане! Прошу помощи в решении вопроса: Есть таблица, в которую постоянно добавляются данные. Это делается по средствам макроса и для более простого поиска несоответствий было применено условное форматирование о цвету, с заранее большим количеством обрабатываемых ячеек. Т.е. если последние данные находятся в ячейке A200, то условное форматирование применено к ячейкам А1:А300, что бы добавляемые данные автоматически обрабатывались условным форматированием. Однако через какое-то время в списке диспетчера правил условного форматирования появляются дубликаты ранее созданных условий, при этом они могут быть применены к абсолютно разным ячейкам в столбце.
Как можно заблокировать изменение / удаление / добавление ранее созданных условий, при этом не ограничивая ввода данных в таблицу? Спасибо.
П.с. Поиск я прошуршал, но ответа так и не нашел.
Добрый день уважаемые форумчане! Прошу помощи в решении вопроса: Есть таблица, в которую постоянно добавляются данные. Это делается по средствам макроса и для более простого поиска несоответствий было применено условное форматирование о цвету, с заранее большим количеством обрабатываемых ячеек. Т.е. если последние данные находятся в ячейке A200, то условное форматирование применено к ячейкам А1:А300, что бы добавляемые данные автоматически обрабатывались условным форматированием. Однако через какое-то время в списке диспетчера правил условного форматирования появляются дубликаты ранее созданных условий, при этом они могут быть применены к абсолютно разным ячейкам в столбце.
Как можно заблокировать изменение / удаление / добавление ранее созданных условий, при этом не ограничивая ввода данных в таблицу? Спасибо.
П.с. Поиск я прошуршал, но ответа так и не нашел.alex_07
1. Привыкнуть все данные вставлять только через Спецвставка - Значение (можно вывести кнопку на панель быстрого доступа) 2. Написать макрос, который следил бы за УФ-ом. Но для этого нужен Ваш файл (кусочек) и пояснялку к нему 3. Вообще убрать УФ и поиск несоответствий делать макросом. Но для этого нужен Ваш файл (кусочек) и пояснялку к нему
1. Привыкнуть все данные вставлять только через Спецвставка - Значение (можно вывести кнопку на панель быстрого доступа) 2. Написать макрос, который следил бы за УФ-ом. Но для этого нужен Ваш файл (кусочек) и пояснялку к нему 3. Вообще убрать УФ и поиск несоответствий делать макросом. Но для этого нужен Ваш файл (кусочек) и пояснялку к нему_Boroda_
Как я понимаю, условие Paste:=xlPasteValues - как раз и является спецвставкой - только значения.
В файлик вставил кусок таблицы с правильно заданными условиями. Вставить "плохой" кусок (с кучей повторяющихся УФ) не получилось из за большого размера файла.
Как я понимаю, условие Paste:=xlPasteValues - как раз и является спецвставкой - только значения.
В файлик вставил кусок таблицы с правильно заданными условиями. Вставить "плохой" кусок (с кучей повторяющихся УФ) не получилось из за большого размера файла.alex_07
условие Paste:=xlPasteValues - как раз и является спецвставкой - только значения
Совершенно верно, но могу предположить, что ниже есть еще строки с копированием формата из ячеек выше. Приложите весь код. Если большой, то можно в файле
условие Paste:=xlPasteValues - как раз и является спецвставкой - только значения
Совершенно верно, но могу предположить, что ниже есть еще строки с копированием формата из ячеек выше. Приложите весь код. Если большой, то можно в файле
Dim EndRow& With ActiveSheet .Cells.FormatConditions.Delete 'очистит старые форматы EndRow = .Cells(.Rows.Count, 1).End(xlUp).Row 'найдет последнюю строку в 1-й колонке
'ваше усл.форматирование записанное макрорекодером и с моей не болшой правкой
With .Range("Q4:Q" & EndRow).FormatConditions.Add(Type:=xlCellValue, Operator:=xlLess, Formula1:="=8880*0,95") .StopIfTrue = False With .Interior .PatternColorIndex = xlAutomatic .Color = 26367 .TintAndShade = 0 End With End With
With .Range("E4:E" & EndRow).FormatConditions.AddUniqueValues .DupeUnique = xlDuplicate .StopIfTrue = False With .Font .Color = -16383844 .TintAndShade = 0 .ThemeFont = xlThemeFontNone End With With .Interior .PatternColorIndex = xlAutomatic .Color = 13551615 .TintAndShade = 0 End With End With
With .Range("G4:G" & EndRow).FormatConditions.Add(Type:=xlCellValue, Operator:=xlLess, Formula1:="=7,7+0,9") .StopIfTrue = False With .Interior .PatternColorIndex = xlAutomatic .Color = 8420607 .TintAndShade = 0 End With End With
With .Range("R4:S" & EndRow).FormatConditions.Add(Type:=xlExpression, Formula1:="=LEN(TRIM(RC))=0") .StopIfTrue = False With .Interior .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorAccent2 .TintAndShade = -0.249946592608417 End With End With
End With End Sub
[/vba]
выполните данный код после вставки значений
[vba]
Код
Option Explicit
Sub macros1()
Dim EndRow& With ActiveSheet .Cells.FormatConditions.Delete 'очистит старые форматы EndRow = .Cells(.Rows.Count, 1).End(xlUp).Row 'найдет последнюю строку в 1-й колонке
'ваше усл.форматирование записанное макрорекодером и с моей не болшой правкой
With .Range("Q4:Q" & EndRow).FormatConditions.Add(Type:=xlCellValue, Operator:=xlLess, Formula1:="=8880*0,95") .StopIfTrue = False With .Interior .PatternColorIndex = xlAutomatic .Color = 26367 .TintAndShade = 0 End With End With
With .Range("E4:E" & EndRow).FormatConditions.AddUniqueValues .DupeUnique = xlDuplicate .StopIfTrue = False With .Font .Color = -16383844 .TintAndShade = 0 .ThemeFont = xlThemeFontNone End With With .Interior .PatternColorIndex = xlAutomatic .Color = 13551615 .TintAndShade = 0 End With End With
With .Range("G4:G" & EndRow).FormatConditions.Add(Type:=xlCellValue, Operator:=xlLess, Formula1:="=7,7+0,9") .StopIfTrue = False With .Interior .PatternColorIndex = xlAutomatic .Color = 8420607 .TintAndShade = 0 End With End With
With .Range("R4:S" & EndRow).FormatConditions.Add(Type:=xlExpression, Formula1:="=LEN(TRIM(RC))=0") .StopIfTrue = False With .Interior .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorAccent2 .TintAndShade = -0.249946592608417 End With End With
StoTisteg, Не самая лучшая идея вешать УФ на событие листа попробуйте поиграться с УФ на дубликаты в столбце на 100 тыс. значений(добавить/удалить, а для полноты ощущений еще и отфильтровать). Excel будет постоянно висеть, стоит вам в какой-то ячейке правку сделать :). выполнять данный код нужно разово, после вставки значений и не перегружать Ехсе1 не нужными действиями. или повесить на кнопку типа "Обновить форматирование"
StoTisteg, Не самая лучшая идея вешать УФ на событие листа попробуйте поиграться с УФ на дубликаты в столбце на 100 тыс. значений(добавить/удалить, а для полноты ощущений еще и отфильтровать). Excel будет постоянно висеть, стоит вам в какой-то ячейке правку сделать :). выполнять данный код нужно разово, после вставки значений и не перегружать Ехсе1 не нужными действиями. или повесить на кнопку типа "Обновить форматирование"boa
Спасибо большое за ответы. Ниже прикладываю весь код импорта Прошу сильно не бить, писал по учебнику для чайников и гугля.
[vba]
Код
Sub Export_Well_Dr_Log()
Dim Lastrow As String Dim EmptyRow As String
'Имя файла журналов Workbooks("Data Analysis File.rev3.4.xlsm").Activate Name_log = Worksheets("import").Cells(10, "E").Value 'Скопировать нужный диапазон в открывшейся книге на листе 1 Worksheets("Output_Well-drill & inj").Activate Worksheets("Output_Well-drill & inj").Range("B7:Y199").Copy
'Активируем нужную нам книгу Workbooks(Name_log).Activate Worksheets("Well_Dr_Log").Activate 'Worksheets("LB of well-dril and inject").Activate
' Расчет количества строк импортируемого файла '---------------------------------------------------------
Lastrow = Worksheets("Well_Dr_Log").Cells(Rows.Count, 2).End(xlUp).Row 'Lastrow = Worksheets("LB of well-dril and inject").Cells(Rows.Count, 2).End(xlUp).Row
' Определить первую пустую строку для которого будут записаны данные '---------------------------------------------------------
EmptyRow = Worksheets("Well_Dr_Log").Cells(Rows.Count, 2).End(xlUp).Row + 1 'EmptyRow = Worksheets("LB of well-dril and inject").Cells(Rows.Count, 2).End(xlUp).Row + 1
'Выделяем и вставляем скопированные данные в последнюю ячейку Worksheets("Well_Dr_Log").Cells(EmptyRow, "B").Select 'Worksheets("LB of well-dril and inject").Cells(EmptyRow, "B").Select
Спасибо большое за ответы. Ниже прикладываю весь код импорта Прошу сильно не бить, писал по учебнику для чайников и гугля.
[vba]
Код
Sub Export_Well_Dr_Log()
Dim Lastrow As String Dim EmptyRow As String
'Имя файла журналов Workbooks("Data Analysis File.rev3.4.xlsm").Activate Name_log = Worksheets("import").Cells(10, "E").Value 'Скопировать нужный диапазон в открывшейся книге на листе 1 Worksheets("Output_Well-drill & inj").Activate Worksheets("Output_Well-drill & inj").Range("B7:Y199").Copy
'Активируем нужную нам книгу Workbooks(Name_log).Activate Worksheets("Well_Dr_Log").Activate 'Worksheets("LB of well-dril and inject").Activate
' Расчет количества строк импортируемого файла '---------------------------------------------------------
Lastrow = Worksheets("Well_Dr_Log").Cells(Rows.Count, 2).End(xlUp).Row 'Lastrow = Worksheets("LB of well-dril and inject").Cells(Rows.Count, 2).End(xlUp).Row
' Определить первую пустую строку для которого будут записаны данные '---------------------------------------------------------
EmptyRow = Worksheets("Well_Dr_Log").Cells(Rows.Count, 2).End(xlUp).Row + 1 'EmptyRow = Worksheets("LB of well-dril and inject").Cells(Rows.Count, 2).End(xlUp).Row + 1
'Выделяем и вставляем скопированные данные в последнюю ячейку Worksheets("Well_Dr_Log").Cells(EmptyRow, "B").Select 'Worksheets("LB of well-dril and inject").Cells(EmptyRow, "B").Select
С этим кодом относительно несанкционированного размножения УФ все в порядке. Значит или есть еще какой-то код (копирование строк или что-то еще) или Вы вручную копируете/вставляете какие-то ячейки (или строки) на этом листе. Тогда код boa, засунутый в этот макрос, не поможет. И
тоже не поможет. Макрос boa все поправит, а Вы потом снова испортите. Тогда нужно или вешать макрос на кнопку, или на сохранение книги, или на активацию листа, или ..., или смотреть все макросы, которые есть у Вас в книге. Или, если макросов больше нет, то сознавайтесь, что ручками делаете
С этим кодом относительно несанкционированного размножения УФ все в порядке. Значит или есть еще какой-то код (копирование строк или что-то еще) или Вы вручную копируете/вставляете какие-то ячейки (или строки) на этом листе. Тогда код boa, засунутый в этот макрос, не поможет. И
тоже не поможет. Макрос boa все поправит, а Вы потом снова испортите. Тогда нужно или вешать макрос на кнопку, или на сохранение книги, или на активацию листа, или ..., или смотреть все макросы, которые есть у Вас в книге. Или, если макросов больше нет, то сознавайтесь, что ручками делаете_Boroda_