Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.08.2009, 21:10   #1
Garrison
Пользователь
 
Регистрация: 16.07.2009
Сообщений: 30
По умолчанию Удаление скрытых столбцов после фильтрации.

Всем привет.
При фильтрации столбца по определенным значением, строки, которые не подходят по значением скрываются, становятся невидимыми....Так вот, можно сделать так, чтобы эти скрытые строки автоматически удалялись.
Заранее благодарю за ответ.
Garrison вне форума Ответить с цитированием
Старый 31.08.2009, 22:38   #2
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Так попробуйте:

Код:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.EnableEvents = False


LastRow = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count - 1
For i = 1 To LastRow

 
    If (Rows(i).EntireRow.Hidden = True) Then

Rows(i).Delete
i = i - 1
End If


Next i



Application.EnableEvents = True

End Sub

Последний раз редактировалось motorway; 31.08.2009 в 22:42.
motorway вне форума Ответить с цитированием
Старый 31.08.2009, 22:44   #3
Garrison
Пользователь
 
Регистрация: 16.07.2009
Сообщений: 30
По умолчанию

motorway
Спасибо, то что надо.
Garrison вне форума Ответить с цитированием
Старый 02.09.2009, 08:41   #4
vv66
Пользователь
 
Регистрация: 29.08.2009
Сообщений: 22
По умолчанию

motorway
Подключил ваш макрос к своему, который формирует у меня отчёт, доволен, работает четко. Один минус есть: при большем количестве строк работа макроса затягивается. Вопрос: можно ли каким-то методом увеличить скорость переборки строк?
С уважением, Владимир.
vv66 вне форума Ответить с цитированием
Старый 02.09.2009, 09:12   #5
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

По-моему, если на листе есть хотя бы одна формула, то лучше использовать событие Worksheet_Calculate. Это позволит макросу запускаться сразу, а не по следующему выбору ячейки.
Код:
Private Sub Worksheet_Calculate()
    Dim i As Long: Application.ScreenUpdating = False
    For i = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count To 1 Step -1
        If Rows(i).Hidden Then Rows(i).Delete
    Next
End Sub
Пример использования во вложении.
Вложения
Тип файла: rar Книга1.rar (6.5 Кб, 20 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 02.09.2009, 11:06   #6
vv66
Пользователь
 
Регистрация: 29.08.2009
Сообщений: 22
По умолчанию

Пример что-то не скачивается...
Да, в моём файле формул хватает.
Но пробовал вставить ваш последний макрос, результат тот же, секуда в секунду.
С уважением, Владимир.
vv66 вне форума Ответить с цитированием
Старый 02.09.2009, 11:42   #7
vv66
Пользователь
 
Регистрация: 29.08.2009
Сообщений: 22
По умолчанию

Блин, лоханулся...
Прошу прощения, всё-таки быстрее.
Спасибо!
С уважением, Владимир.
vv66 вне форума Ответить с цитированием
Старый 02.09.2009, 16:27   #8
vv66
Пользователь
 
Регистрация: 29.08.2009
Сообщений: 22
Смущение

motorway

Прошу прощения за наглость,
а если тоже самое, но для столбцов (пока что в цыклах мало смыслю)...
С уважением, Владимир.
vv66 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан двухмерный массив из 20 столбцов. Вставить в него столбец из чисел 10 после всех четных столбцов. Дмитрий142 Помощь студентам 9 07.06.2012 19:32
Поиск и удаление столбцов mchip Microsoft Office Excel 4 17.05.2009 18:48
StringGrid - удаление строк и столбцов ReM Общие вопросы Delphi 4 22.12.2008 19:17
Удаление столбцов в DBGrid-e artemavd БД в Delphi 4 24.10.2008 14:30
Запрет на удаление строк и столбцов Shavminator Microsoft Office Excel 2 12.01.2008 13:36