powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Скрыть диапазон строк по признаку
25 сообщений из 45, страница 1 из 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
25 сообщений из 45, страница 1 из 2
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Скрыть диапазон строк по признаку
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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