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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 20.11.2008, 17:21   #1
berliozz
 
Регистрация: 20.11.2008
Сообщений: 9
По умолчанию Как в VBA скрыть неиспользуемые строки при условии

Помогите, пожалуйста. Не могу написать условие для скрытия строк. В файле при достижении определнных показателей, строки получаются пустыми. Мне вручную приходится скрывать их скрывать. Подскажите, как написать в ВБА макрос, чтобы при нажатии кнопки скрывал пустые строки?
berliozz вне форума
Старый 20.11.2008, 17:46   #2
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от berliozz Посмотреть сообщение
Подскажите, как написать в ВБА макрос, чтобы при нажатии кнопки скрывал пустые строки?
Макрорекодером это запросто делается
Код:
Sub Макрос1()
    Rows("10:10").Select
    Selection.EntireRow.Hidden = True
End Sub
Ну а кнопка
Здесь
valerij вне форума
Старый 20.11.2008, 18:00   #3
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Код:
Sub HideBlankRows()    ' скрывает все пустые строки
    Dim sh As Worksheet, ro1 As Range, ro2 As Range, ro As Range, rowss As Range
    Application.ScreenUpdating = False
    With ActiveSheet
        Set ro1 = .UsedRange.Cells(.UsedRange.Cells.Count).Offset(1): Set ro2 = ro1.End(xlDown)
        Range(ro1, ro2).EntireRow.Hidden = True
        For Each ro In .UsedRange.EntireRow
            If ro.Text = vbNullString Then If rowss Is Nothing Then Set rowss = ro Else Set rowss = Union(rowss, ro)
        Next
        If Not rowss Is Nothing Then rowss.EntireRow.Hidden = True
    End With
    Application.ScreenUpdating = True
End Sub


Sub ShowHiddenRows()    ' отображает все скрытые строки
    Application.ScreenUpdating = False: ActiveSheet.Rows.Hidden = False: Application.ScreenUpdating = True
End Sub
У макроса один недостаток - если на листе заполнена всего одна ячейка, то скрываются все строки листа. (сам не понял, почему...).
Если количество заполненных ячеек больше одной - всё работает нормально.

Макрос обрабатывает активный в данный момент лист.
Если в момент запуска макроса ни одна из книг Excel не открыта, вылетит ошибка.

Если в строке присутствуют ячейки с пробелами, строка считается заполненной.

Последний раз редактировалось EducatedFool; 20.11.2008 в 18:25.
EducatedFool вне форума
Старый 20.11.2008, 18:01   #4
Bu$ter
Пользователь
 
Аватар для Bu$ter
 
Регистрация: 16.05.2008
Сообщений: 73
По умолчанию

Цитата:
Сообщение от valerij Посмотреть сообщение
Макрорекодером это запросто делается
Код:
Sub Макрос1()
    Rows("10:10").Select
    Selection.EntireRow.Hidden = True
End Sub
Ну а кнопка
Здесь
Сначала необходимо задать условие поиска пустых строк.
А
Код:
Rows("10:10").Select
все навсего выделит только 10 строку
Bu$ter вне форума
Старый 21.11.2008, 07:37   #5
berliozz
 
Регистрация: 20.11.2008
Сообщений: 9
По умолчанию

Извините, может я не очень понятно объяснил: у меня есть итоговая таблица, которая которая формирует результаты из нескольких других. Итоговая таблица состоит из 25 строк. Но на самом деле в зависимости от введенных данных в другие таблицы количество заполненных строк может быть меньшим, даже одной. Остальные заполняются по условию "". При печати приходится пустые строки скрывать. Надоело. Хочу автоматизации. Должен же быть выход.
berliozz вне форума
Старый 21.11.2008, 07:39   #6
berliozz
 
Регистрация: 20.11.2008
Сообщений: 9
По умолчанию

Цитата:
Сообщение от valerij Посмотреть сообщение
Макрорекодером это запросто делается
Код:
Sub Макрос1()
    Rows("10:10").Select
    Selection.EntireRow.Hidden = True
End Sub
Ну а кнопка
Здесь

Валерий, то как скрыть 10 строку я уже знаю, надо задать условие при которой она будет скрыта, а вместе с ней еще несколько строк
berliozz вне форума
Старый 21.11.2008, 07:46   #7
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Извините, может я не очень понятно объяснил: у меня есть итоговая таблица, которая которая формирует результаты из нескольких других. Итоговая таблица состоит из 25 строк. Но на самом деле в зависимости от введенных данных в другие таблицы количество заполненных строк может быть меньшим, даже одной. Остальные заполняются по условию "". При печати приходится пустые строки скрывать. Надоело. Хочу автоматизации. Должен же быть выход.
Чем Вам не подходит решение, предложенное в посте #3?

Запустите макрос HideBlankRows, и все пустые строки будут скрыты.

Макрос ShowHiddenRows, наоборот, отображает все скрытые строки.
EducatedFool вне форума
Старый 21.11.2008, 08:51   #8
berliozz
 
Регистрация: 20.11.2008
Сообщений: 9
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Чем Вам не подходит решение, предложенное в посте #3?

Запустите макрос HideBlankRows, и все пустые строки будут скрыты.

Макрос ShowHiddenRows, наоборот, отображает все скрытые строки.
Если применить код, то строки в которых введена формула, которая при недостижении показателей которой ей присваивается "", не скрываются, так как они не пустые - в них введена формула.
berliozz вне форума
Старый 21.11.2008, 09:00   #9
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
строки в которых введена формула, которая при недостижении показателей которой ей присваивается "", не скрываются, так как они не пустые - в них введена формула
Согласен. Потребуется немного изменит код.

Было бы неплохо, если бы Вы прекрепили к сообщению Ваш файл - чтобы было на чём тестировать код. (возможно, что-то будет мешать скрывать строки помимо формул)

Можно, конечно, сделать универсальный код (который проверяет значение всех ячеек), но он, возможно, будет медленно работать при большом количестве строк для обработки.
EducatedFool вне форума
Старый 21.11.2008, 09:15   #10
berliozz
 
Регистрация: 20.11.2008
Сообщений: 9
По умолчанию

Размещаю, что-то подобное
Вложения
Тип файла: zip ERP DINING v.036-06-2.xls.zip (81.9 Кб, 192 просмотров)
berliozz вне форума
Закрытая тема


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Dblookupcombobox значение по дефолту при условии 1sal1 Общие вопросы Delphi 2 12.12.2009 14:16
Скрыть-Отобразить с помощью VBA ZORRO2005 Microsoft Office Excel 5 01.09.2008 09:11
Не дать сохранит файл при условии Диас Microsoft Office Excel 6 12.05.2008 18:59
DBGridEh+EditMask при условии. Jenya БД в Delphi 1 03.03.2008 13:58
Как частично скрыть строки таблицы... krupnoff PHP 11 21.08.2007 23:49