powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Скрыть диапазон строк по признаку
45 сообщений из 45, показаны все 2 страниц
Скрыть диапазон строк по признаку
    #36905068
Tatirus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте! Помогите, пожалуйста, с задачей: скрыть диапазон строк на одном листе, если в конкретной ячейке на другом листе стоит 0. Если в ячейке задана 1, то диапазон либо должен отобразиться, либо не скрываться. См. пример.
...
Рейтинг: 0 / 0
Скрыть диапазон строк по признаку
    #36905086
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tatirus,

Проблема в чем?
Как скрыть диапазон или как посмотреть значение ячейки?
Или знать ничего не хочу, сделайте все за меня?
...
Рейтинг: 0 / 0
Скрыть диапазон строк по признаку
    #36905128
Tatirus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

Проблема такая, как она описана. Если значение в вычисляемой ячейке C7 = 0, то диапазон на Листе2 должен быть скрыт. Если значение в вычисляемой ячейке C7 = 1, то диапазон на Листе2 должен быть отображен. )))
...
Рейтинг: 0 / 0
Скрыть диапазон строк по признаку
    #36905222
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TatirusПроблема такая, как она описана. Если значение в вычисляемой ячейке C7 = 0, то диапазон на Листе2 должен быть скрыт. Если значение в вычисляемой ячейке C7 = 1, то диапазон на Листе2 должен быть отображен. )))

Проверяете ячейку, если там 0, скрываете диапазон, если там 1 - показываете диапазон. Что именно вызывает трудность?
Проверка - оператор If
Скрыть-показать диапазон - к нужному Range применить .EntireRow.Hidden = True или False
...
Рейтинг: 0 / 0
Скрыть диапазон строк по признаку
    #36905263
Tatirus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,
я так и проверяю, но макрос не работает.

Макрос в модуле:

Sub Hidden()
Application.ScreenUpdating = 0
Sheets("Лист1").Select
If Range("признак2") = 0 Then
Sheets("Лист2").Select
Range("диапазон2").EntireRow.Hidden = True
Range("Row3").EntireRow.Hidden = True
Range("Row4").EntireRow.Hidden = True
Sheets("Лист1").Select
ElseIf Range("признак2") = 1 Then
Sheets("Лист2").Select
Range("диапазон2").EntireRow.Hidden = False
Range("Row3").EntireRow.Hidden = True
Range("Row4").EntireRow.Hidden = True
End If
Sheets("Лист1").Select
Application.ScreenUpdating = 1
End Sub
...
Рейтинг: 0 / 0
Скрыть диапазон строк по признаку
    #36905299
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tatirusно макрос не работает.

у меня работает на вашем примере
...
Рейтинг: 0 / 0
Скрыть диапазон строк по признаку
    #36905318
Tatirus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
у меня работает на вашем примере[/quot]

????? Если на листе1 признак2=0, то на листе2 скрывается диапазон2??

Очень странно... У меня макрос не работает. Макрос расположен в модуле. (((
...
Рейтинг: 0 / 0
Скрыть диапазон строк по признаку
    #36905321
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tatirus????? Если на листе1 признак2=0, то на листе2 скрывается диапазон2??

именно так
...
Рейтинг: 0 / 0
Скрыть диапазон строк по признаку
    #36905339
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Немножко упрощу, выкинув лишние команды за бессмысленностью.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Sub Hidden()

If Sheets("Лист1").Range("признак2") =  0  Then
  Sheets("Лист2").Range("диапазон2").EntireRow.Hidden = True
ElseIf Sheets("Лист1").Range("признак2") =  1  Then
  Sheets("Лист2").Range("диапазон2").EntireRow.Hidden = False
End If

End Sub
...
Рейтинг: 0 / 0
Скрыть диапазон строк по признаку
    #36905353
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Даже еще проще, так как именованные диапазоны распространяются на книгу, а не на лист:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Sub Hidden()

If Range("признак2") =  0  Then
  Range("диапазон2").EntireRow.Hidden = True
ElseIf Range("признак2") =  1  Then
  Range("диапазон2").EntireRow.Hidden = False
End If

End Sub
...
Рейтинг: 0 / 0
Скрыть диапазон строк по признаку
    #36905389
Tatirus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProДаже еще проще, так как именованные диапазоны распространяются на книгу, а не на лист:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Sub Hidden()

If Range("признак2") =  0  Then
  Range("диапазон2").EntireRow.Hidden = True
ElseIf Range("признак2") =  1  Then
  Range("диапазон2").EntireRow.Hidden = False
End If

End Sub



Ну просто мистика какая-то... Посмотрите, пожалуйста, файл во вложении. Исправленный макрос - в Module1.

И, если на Листе1 в ячейку C7 ввожу, например, -100, то признак2 (ячейка C9) = 0. Иду на Лист2, а там диапазон2 (строки 4:20) отображен. Не работает!!!
...
Рейтинг: 0 / 0
Скрыть диапазон строк по признаку
    #36905403
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TatirusНу просто мистика какая-то... Посмотрите, пожалуйста, файл во вложении. Исправленный макрос - в Module1.

И, если на Листе1 в ячейку C7 ввожу, например, -100, то признак2 (ячейка C9) = 0. Иду на Лист2, а там диапазон2 (строки 4:20) отображен. Не работает!!!

Посмотрел, работает
только ScreenUpdating надо либо убрать, либо поставить в True в конце

В перечне ваших действий нет "запустить макрос"
Если макрос не запускать, он не работает, но мне казалось это очевидным.
...
Рейтинг: 0 / 0
Скрыть диапазон строк по признаку
    #36905422
Tatirus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

Ага, Application.ScreenUpdating = 1.

Я пока еще с VB "на Вы". Поэтому простите за глупый, наверное, вопрос: а как запустить макрос, когда ячейка "признак2" примет значение 0 или 1? )))
...
Рейтинг: 0 / 0
Скрыть диапазон строк по признаку
    #36905448
Tatirus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

да, действительно работает, если вызвать макрос через меню Excel "Сервис-Макрос-Макросы-Выполнить".

Но мне бы хотелось, чтобы макрос сам запускался при изменении значения в ячейке признак2.
...
Рейтинг: 0 / 0
Скрыть диапазон строк по признаку
    #36905459
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TatirusНо мне бы хотелось, чтобы макрос сам запускался при изменении значения в ячейке признак2.

повесить вызов макроса Hidden на событие Calculate для первого листа.
...
Рейтинг: 0 / 0
Скрыть диапазон строк по признаку
    #36905479
Tatirus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro
повесить вызов макроса Hidden на событие Calculate для первого листа.

Да.... Вы сказали мне "акваланг"... повесить вызов макроса на событие Calculate для первого листа - это значит на Лист1 записать:

Private Sub Worksheet1_Calculate()
Call Hidden
End Sub

С таким "вызовом" не работает...
...
Рейтинг: 0 / 0
Скрыть диапазон строк по признаку
    #36905497
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TatirusShocker.Pro
повесить вызов макроса Hidden на событие Calculate для первого листа.

Да.... Вы сказали мне "акваланг"

А что вы хотели.... тренируйтесь девушка, чтоб в следующий раз не спрашивать

Tatirus... повесить вызов макроса на событие Calculate для первого листа - это значит на Лист1 записать:

Private Sub Worksheet1_Calculate()
Call Hidden
End Sub


только его надо расположить в модуле листа, а не в обычном модуле.
...
Рейтинг: 0 / 0
Скрыть диапазон строк по признаку
    #36905529
Tatirus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro

тренируйтесь девушка

я и тренируюсь...только глупо тренироватсья, если ничего не получается... я коплю макросы, потом из разных примеров беру нужное - и так учусь... :-)

в модуль Листа1 поместила

Private Sub Worksheet1_Calculate()
Call Hidden
End Sub

Меняю в ячейке C7 положительное число на отризательное и..... тишина...
...
Рейтинг: 0 / 0
Скрыть диапазон строк по признаку
    #36905540
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
научитесь отлаживать свои программы(макросы). для этого есть специальное средство - красная жирная точка слева на полосе в модуле напротив своей строки в содом ставите и вся строка выделяется красным, потом запускает на выполнение и отладчик остановится на этом месте , затем вы можете проверить все значения своих переменных и тд и тп
...
Рейтинг: 0 / 0
Скрыть диапазон строк по признаку
    #36905542
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneнаучитесь отлаживать свои программы(макросы). для этого есть специальное средство - красная жирная точка слева на полосе в модуле напротив своей строки с кодом ставите и вся строка выделяется красным, потом запускает на выполнение и отладчик остановится на этом месте , затем вы можете проверить все значения своих переменных и тд и тп

исправил опечатку
...
Рейтинг: 0 / 0
Скрыть диапазон строк по признаку
    #36905547
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tatirus,

единичкку не увидел
Worksheet_Calculate должно быть


а лучше так: заходите в модуль листа, выбираете в левом выпадающем списке Worksheet, а в правом Calculate. Тогда синтаксис события точно будет правильным. Поэтому я не сказал вам сразу, как назвать процедуру, а предложил засунуть в событие, полагая, что вы и выберете его из выпадающего списка
...
Рейтинг: 0 / 0
Скрыть диапазон строк по признаку
    #36905551
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneнаучитесь отлаживать свои программы(макросы). для этого есть специальное средство - красная жирная точка слева на полосе в модуле напротив своей строки в содом ставите и вся строка выделяется красным, потом запускает на выполнение и отладчик остановится на этом месте , затем вы можете проверить все значения своих переменных и тд и тп
не помогает, я ей уже советовал
...
Рейтинг: 0 / 0
Скрыть диапазон строк по признаку
    #36905580
Tatirus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProKonst_Oneнаучитесь отлаживать свои программы(макросы). для этого есть специальное средство - красная жирная точка слева на полосе в модуле напротив своей строки в содом ставите и вся строка выделяется красным, потом запускает на выполнение и отладчик остановится на этом месте , затем вы можете проверить все значения своих переменных и тд и тп
не помогает, я ей уже советовал

Смейтесь-смейтесь, асы. Все мне помогает и все получилось.

Всем участвующим спасибо. Я не бестолочь. Надо идти на курсы.
...
Рейтинг: 0 / 0
Скрыть диапазон строк по признаку
    #36905592
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TatirusСмейтесь-смейтесь, асы. Все мне помогает и все получилось.
Всем участвующим спасибо. Я не бестолочь. Надо идти на курсы.

А мы и не смеемся, беззлобно подкалываем
Если б была бестолочь - никто б и не помогал

Тока фотку в профиль закиньте, чтоб узнаваемость повысить
...
Рейтинг: 0 / 0
Скрыть диапазон строк по признаку
    #36905601
Tatirus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тока фотку в профиль закиньте, чтоб узнаваемость повысить [/quot]

Я так понимаю, что на этом форуме с моими вопросами у меня и без фотки узнаваемость будет неплохая.
...
Рейтинг: 0 / 0
Скрыть диапазон строк по признаку
    #36905729
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tatirus, чтобы повысить узнаваемость надо ник создать из двух слов и желательно русских, проверено работает
...
Рейтинг: 0 / 0
Скрыть диапазон строк по признаку
    #36905741
Tatirus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ципихович Эндрю,

А зачем мне узнаваемость? Я несколько раз обращалась на этот форум, нормальное общение, очень помогают! Причем у многих форумчан ник ну никак не из двух русских слов! А я их уже запомнила!
...
Рейтинг: 0 / 0
Скрыть диапазон строк по признаку
    #36905918
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TatirusА зачем мне узнаваемость?
затем, что по первому посту в этом топике захотелось послать нерадивого студента на..... лекции, куда он не ходил весь семестр, а потом просит, чтобы за него все сделали - пост выглядит именно так.
И только увидев, что мы с вами уже успешно общались, решил пообщаться еще... а мог бы и полоснуть (с).... не пообщаться
...
Рейтинг: 0 / 0
Скрыть диапазон строк по признаку
    #36906144
Tatirus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro[quot Tatirus] нерадивого студента на..... лекции, куда он не ходил весь семестр, а потом просит, чтобы за него все сделали

Спасибо всем, кто помог нерадивому студенту! На самом деле помогли. Хотя, видимо, задачка была для первой группы детского сада ))
...
Рейтинг: 0 / 0
Скрыть диапазон строк по признаку
    #36906621
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TatirusShocker.Pro[quot Tatirus] нерадивого студента на..... лекции, куда он не ходил весь семестр, а потом просит, чтобы за него все сделали

Спасибо всем, кто помог нерадивому студенту! На самом деле помогли. Хотя, видимо, задачка была для первой группы детского сада ))

Да вы не переживайте так, все учились понемногу.
Чтобы Вам не было так обидно, скажу что вашим учителям есть еще чему поучиться :)
Например ваш код скорее всего можно свести к одной строке:
Код: plaintext
  Range("диапазон2").EntireRow.Hidden = (Range("признак2") =  0 )
И если критерий меняется не по формуле а ручками, то макрос нужно вешать не на событие Calculate, а на Change
Код: plaintext
1.
2.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Range("признак2").Address Then Call Hidden
End Sub
...
Рейтинг: 0 / 0
Скрыть диапазон строк по признаку
    #36909146
Tatirus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Столкнулась с такой проблемой. Макрос, который скрывает диапазоны на двух листах - Sub Hidden(), написанный в отдельном файле Excel, работате прекрасно, без задумчивости.

Когда я вставляю данный макрос в модель Excel (файл с расчетами, другими макросами), он начинает тормозить: минут 10 думает и необходимых действий не выполняет.

При этом, если убрать вызов макроса Hidden - Private Sub Worksheet_Calculate(), и запустить макрос Hidden вручную (через Сервис - Макрос - Макросы - Выполнить), то Hidden прекрасно работает!

С чем это может быть связано? Если я понятно объяснила :))
...
Рейтинг: 0 / 0
Скрыть диапазон строк по признаку
    #36909168
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вам же посоветовали перевесить это на Change с небольшой добавкой. Вы это сделали?
...
Рейтинг: 0 / 0
Скрыть диапазон строк по признаку
    #36909175
Tatirus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProВам же посоветовали перевесить это на Change с небольшой добавкой. Вы это сделали?

У меня критерий меняется по формуле, а не ручками
...
Рейтинг: 0 / 0
Скрыть диапазон строк по признаку
    #36909310
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TatirusShocker.ProВам же посоветовали перевесить это на Change с небольшой добавкой. Вы это сделали?

У меня критерий меняется по формуле, а не ручками

Но что-то же меняется ручками?
...
Рейтинг: 0 / 0
Скрыть диапазон строк по признаку
    #36909313
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
:) пример в студию
...
Рейтинг: 0 / 0
Скрыть диапазон строк по признаку
    #36909381
Tatirus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Deggasad:) пример в студию

Не получается, почему-то, приложить файл :((
Без примера, наверное, сложно обсуждать проблему. Попробую попозже выложить пример.
...
Рейтинг: 0 / 0
Скрыть диапазон строк по признаку
    #36909405
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tatirus,

Почему - написано наверху страницы.
Положите на любой хостинг и дайте ссылку
...
Рейтинг: 0 / 0
Скрыть диапазон строк по признаку
    #36909409
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tatirus,

Почему - написано наверху страницы.
Положите на любой хостинг и дайте ссылку
...
Рейтинг: 0 / 0
Скрыть диапазон строк по признаку
    #36909443
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если так?

Код: plaintext
1.
2.
3.
4.
5.
6.
Private Sub Worksheet_Calculate()
Static x
If IsEmpty(x) Or x <> Range("признак2") Then
 Call Hidden
 x = Range("признак2")
End If
End Sub
...
Рейтинг: 0 / 0
Скрыть диапазон строк по признаку
    #36909445
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
Private Sub Worksheet_Calculate()
Static x
If IsEmpty(x) Or x <> Range("признак2") Then
 Call Hidden
 x = Range("признак2")
End If
End Sub
Так тупит?
...
Рейтинг: 0 / 0
Скрыть диапазон строк по признаку
    #36909500
Tatirus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Deggasad
Код: plaintext
1.
2.
3.
4.
5.
6.
Private Sub Worksheet_Calculate()
Static x
If IsEmpty(x) Or x <> Range("признак2") Then
 Call Hidden
 x = Range("признак2")
End If
End Sub
Так тупит?

Да
...
Рейтинг: 0 / 0
Скрыть диапазон строк по признаку
    #36909506
Tatirus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProTatirus,

Почему - написано наверху страницы.
Положите на любой хостинг и дайте ссылку

Скрыть диапазон 4.xls
...
Рейтинг: 0 / 0
Скрыть диапазон строк по признаку
    #36909951
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не понятно так, нужен пример, в котором тупит.
...
Рейтинг: 0 / 0
Скрыть диапазон строк по признаку
    #36910060
Tatirus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще обратила внимание на то, что макрос Hidden вызывается, если выполняется макрос, который ссылается на лист, в модуле которого прописан вызов макрос Hidden...
...
Рейтинг: 0 / 0
Скрыть диапазон строк по признаку
    #36910745
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TatirusЕще обратила внимание на то, что макрос Hidden вызывается, если выполняется макрос, который ссылается на лист, в модуле которого прописан вызов макрос Hidden...
пример со всем описанным прикладывайте.
...
Рейтинг: 0 / 0
45 сообщений из 45, показаны все 2 страниц
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Скрыть диапазон строк по признаку
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]