Добрый день! Очень интересный и для меня вопрос (использую УФ в общей книге, но иногда пользователям надо вставлять строки). Все-таки есть решение, что бы при вставке строк диапазон условного форматирования просто расширялся, а не создавались дополнительные правила?
{quote}{login=KukLP}{date=28.07.2011 07:22}{thema=}{post}Убрать фильтр, скопировать столбец, поставить фильтр.{/post}{/quote} Подскажите, пожалуйста, тогда следующие моменты: 1. Если фильтр не был установлен, то Worksheets("Лист1").ShowAllData ругается. Как проверить был ли установлен фильтр до применения ShowAllData? 2. Можно ли как то запомнить какой фильтр был применен до его снятия и потом восстановить?
{quote}{login=Юрий М}{date=26.07.2011 08:12}{thema=}{post}Нет - неправильно. Я бы циклом скопировал.{/post}{/quote} Типа перебором каждой строки? Как мне кажется, не особо быстрое будет решение, но завтра попробую.
Подскажите, пожалуйста, можно ли скопировать значение всех ячеек из одной колонки в другую при включенном фильтре? Если делать просто: Worksheets("Лист1").Columns("M:M").Copy Worksheets("Лист1").Columns("N:N").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False то получается что строки скрытые фильтром не копируются.
P.S. Делается это все при уходе с листа, т.е. в конструкции: Private Sub Worksheet_Deactivate() Application.EnableEvents = False ... Application.EnableEvents = True End Sub
{quote}{login=Hugo}{date=25.07.2011 11:39}{thema=}{post}Private Sub Worksheet_Deactivate() Application.EnableEvents = False
Application.EnableEvents = True End Sub{/post}{/quote} Спасибо. Именно это мне и нужно было.
Но теперь возникла другая проблема, уже с копированием. Все это затеяно ради того что бы скопировать значения расчета пользовательской функции (в столбце M) в столбец N, а эти значения уже использовать на других листах. Так вот когда это копирование делается, в колонке с пользовательской функцией все результаты меняются на #ЗНАЧ! и соответственно эти значение и копируются.
Private Sub Worksheet_Deactivate() Application.EnableEvents = False Application.ScreenUpdating = False Worksheets("Календарный план").Calculate Worksheets("Календарный план").Columns("M:M").Copy Worksheets("Календарный план").Columns("N:N").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.ScreenUpdating = True Application.EnableEvents = True End Sub
Подскажите, пожалуйста, как выполнить действие на листе с которого уходим? Private Sub Worksheet_Deactivate() Worksheets("Лист1").Columns("M:M").Copy (Лист1 это тот с которого уходим) End Sub Если прописать таким образом, то уходим в бесконечный цикл. Типа "Лист1" покинули (сработал Deactivate), потом для выполнения действия на этом листе мы опять его активируем, и все начинается по новой...