0 / 0 / 0
Регистрация: 11.10.2018
Сообщений: 6
|
|
1 | |
Excel Скрыть несколько строк11.10.2018, 09:16. Показов 11623. Ответов 20
Метки нет (Все метки)
Добрый день!
Уважаемые форумчане, помогите неразумному. Вроде все подобные темы просмотрел, но так сделать и не получилось, ввиду своей далекости от данной темы. Задача тривиальная, необходимо скрыть строки Excel, при помощи макроса: При условии что в ячейке "А1" значение =1, то необходимо скрыть строки 2:10 , 12:20, 30:40 на листе 1; При условии что в ячейке "А1" значение =2, то необходимо скрыть строки 5:8 на листе 1; При условии что в ячейке "А1" значение =3, то необходимо скрыть строки 2:10 и столбцы 2:10 на листе 2. Трудности возникают при скрытии одинаковых строк при разных условиях (строки 5:8 по условию 2, входят в 2:10 по условию 1)
0
|
11.10.2018, 09:16 | |
Ответы с готовыми решениями:
20
Скрыть несколько полей Записать в файл несколько строк, а затем записать несколько строк из этого файла в другой Скрыть несколько TextBox Скрыть несколько столбцов |
6930 / 2838 / 545
Регистрация: 19.10.2012
Сообщений: 8,670
|
|
11.10.2018, 11:09 | 2 |
Добрый день.
Какие могут быть трудности, когда условия не пересекаются? Отображаете всё, затем скрываете ненужное.
0
|
0 / 0 / 0
Регистрация: 11.10.2018
Сообщений: 6
|
||||||
11.10.2018, 11:54 [ТС] | 3 | |||||
Когда значение "2" - скрываются строки 5:8
Когда же значение "1" скрываются 12:20, 30:40, а из диапазона 2:10, скрываются строки 2:4, 9:10. А строки 5:8 Остаются раскрытыми. Меня хватило только вот на это:
0
|
6930 / 2838 / 545
Регистрация: 19.10.2012
Сообщений: 8,670
|
|
11.10.2018, 12:05 | 4 |
Так сперва открываете всё, затем скрываете по условию, удобнее использовать select case.
0
|
0 / 0 / 0
Регистрация: 11.10.2018
Сообщений: 6
|
|
11.10.2018, 12:16 [ТС] | 5 |
Если все сперва открыто, а потом в А1 выставить значение "1" строки 5:8 при этом по неведомой мне причине не скрываются.
0
|
1846 / 1161 / 354
Регистрация: 11.07.2014
Сообщений: 4,102
|
|
11.10.2018, 14:15 | 6 |
Georgiy11,
да причина то ведома, смотрите внимательно, что вы написали во втором If - будет скрытие при А1=2, а вам хочется при А1=1, тогда так и пишите.
Но, конечно с интерсектами перемудрено, во-первых вполне достаточно одного на все три блока, во-вторых можно в начале Sub просто поставить If Target.Address(0,0) <> "A1" then exit Sub и выкинуть все интерсекты
0
|
0 / 0 / 0
Регистрация: 11.10.2018
Сообщений: 6
|
|
11.10.2018, 14:45 [ТС] | 7 |
Перемудрено от незнания, нахватал из похожих тем. А хочется чтоб при А1 значении «1» скрывались строки 2:10, а при значении «2» только строки 5:8. Так вот, при значении «1» строки 5:8 из диапазона 2:10 не скрываются(т.е. строки 2,3,4,9,10 скрылись, а 5:8 нет), а при значении «2» работает правильно. Попробую к Вы сказали оптимизировать, может поможет, спасибо
0
|
1846 / 1161 / 354
Регистрация: 11.07.2014
Сообщений: 4,102
|
||||||
11.10.2018, 15:48 | 8 | |||||
Georgiy11, ну я же писал. почему так происходит, смотрите свой код внимательнее. В первом блоке 5:8 прячутся т.к. входят в диапазон 2:10, но затем во втором блоке 5:8 снова открываются.
Может вам лучше подойдет структура If .... Then.... Elseif ,,, Endif Чтобы при выполнении А1=1 следующие ветки не рассматривались? Добавлено через 29 минут например, для условий первого листа это можно записать так
0
|
0 / 0 / 0
Регистрация: 11.10.2018
Сообщений: 6
|
||||||
11.10.2018, 15:55 [ТС] | 9 | |||||
Теперь я понял Вас, спасибо. Действительно, необходимо просто убрать строку которая открывает строки 5:8 при значении 2
0
|
1846 / 1161 / 354
Регистрация: 11.07.2014
Сообщений: 4,102
|
||||||
11.10.2018, 16:05 | 10 | |||||
Сообщение было отмечено Georgiy11 как решение
Решение
А можно ещё компактнее
1
|
0 / 0 / 0
Регистрация: 11.10.2018
Сообщений: 6
|
|
11.10.2018, 16:59 [ТС] | 11 |
Буду экспериментировать, спасибо за ответ!
0
|
2 / 2 / 0
Регистрация: 29.04.2015
Сообщений: 278
|
|||||||||||
12.03.2019, 10:25 | 12 | ||||||||||
Burk, Hugo121, Добрый день.
Я искала решение своей проблемы, увидела, что вы в макросах вроде разбираетесь, хотела бы спросить, если можно. Я вообще в макросах не разбираюсь, но появилась необходимость использовать. Нужно было в очень большой таблице скрывать нужные месяцы. Вручную это занимает очень много времени так как повторение месяцев идет больше 100 раз. Нашла в интернете макрос, что скрывал бы отмеченные столбцы :
Подскажите, пожалуйста, что я сделала не так? Заранее спасибо!
0
|
6930 / 2838 / 545
Регистрация: 19.10.2012
Сообщений: 8,670
|
|
12.03.2019, 10:28 | 13 |
Думаю что cell.Value <> "Январь"
Попробуйте cell.Text = "Январь"
1
|
95 / 38 / 15
Регистрация: 02.04.2015
Сообщений: 235
|
|
12.03.2019, 10:28 | 14 |
Veronka, Файл прикрепите
0
|
2 / 2 / 0
Регистрация: 29.04.2015
Сообщений: 278
|
|
12.03.2019, 10:34 | 15 |
Петр Аркадьевич, не могу, слишком большой размер файла
--- попробовала заменить - не помогло. В чём ещё может быть дело?
0
|
2 / 2 / 0
Регистрация: 29.04.2015
Сообщений: 278
|
|
12.03.2019, 10:41 | 16 |
Петр Аркадьевич, Вот почти всё удалила, но смысл будет понятен, я думаю.
0
|
3911 / 2311 / 782
Регистрация: 02.11.2012
Сообщений: 6,147
|
|
12.03.2019, 10:44 | 17 |
в xlsx макросы не живут.
0
|
2 / 2 / 0
Регистрация: 29.04.2015
Сообщений: 278
|
|
12.03.2019, 10:48 | 18 |
Vlad999, сохранила с поддержкой макросов. не даёт прикрепить. пишет не корректный файл.
0
|
3911 / 2311 / 782
Регистрация: 02.11.2012
Сообщений: 6,147
|
||||||
12.03.2019, 10:48 | 19 | |||||
1
|
2 / 2 / 0
Регистрация: 29.04.2015
Сообщений: 278
|
|
12.03.2019, 10:51 | 20 |
Vlad999, точно, заработало. Сменила 1 на 4 и всё скрылось)
Спасибо огромное!
0
|
12.03.2019, 10:51 | |
12.03.2019, 10:51 | |
Помогаю со студенческими работами здесь
20
скрыть несколько объектов на странице Скрыть и отобразить несколько DataGridView Скрыть сразу несколько блоков (javascript) Как скрыть несколько элементов кнопками Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |