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

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

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

Проверяете ячейку, если там 0, скрываете диапазон, если там 1 - показываете диапазон. Что именно вызывает трудность?
Проверка - оператор If
Скрыть-показать диапазон - к нужному Range применить .EntireRow.Hidden = True или False
...
Рейтинг: 0 / 0
18.10.2010, 14:49
    #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
18.10.2010, 14:59
    #36905299
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрыть диапазон строк по признаку
Tatirusно макрос не работает.

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

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

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

именно так
...
Рейтинг: 0 / 0
18.10.2010, 15:07
    #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
18.10.2010, 15:10
    #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
18.10.2010, 15:22
    #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
18.10.2010, 15:28
    #36905403
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрыть диапазон строк по признаку
TatirusНу просто мистика какая-то... Посмотрите, пожалуйста, файл во вложении. Исправленный макрос - в Module1.

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

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

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

Ага, Application.ScreenUpdating = 1.

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

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

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

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

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

Private Sub Worksheet1_Calculate()
Call Hidden
End Sub

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

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

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

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

Private Sub Worksheet1_Calculate()
Call Hidden
End Sub


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

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

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

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

Private Sub Worksheet1_Calculate()
Call Hidden
End Sub

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

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

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


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

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

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

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

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

Я так понимаю, что на этом форуме с моими вопросами у меня и без фотки узнаваемость будет неплохая.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Скрыть диапазон строк по признаку / 25 сообщений из 45, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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