Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Макрос скрытых строк, требуется доработка. - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос скрытых строк, требуется доработка. (Макросы/Sub)
Макрос скрытых строк, требуется доработка.
Neznaika22 Дата: Пятница, 29.12.2017, 15:40 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Добрый день и с наступающим Вас Новым Годом! Я плохо разбираюсь в коде. Помогите пожалуйста подсказать и доработать.

Есть код скрытых строк по цветам для листа 1.

Проблема: При двойном щелчке на синюю ячейку, список раскрывается полностью, вместе с содержимим зеленых ячеек.
Задача: При двойном щелчке на синюю ячейку, должен открываться список только с двумя зелеными ячейками, не расскрывая самих зеленых ячеек.
[vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Application.ScreenUpdating = False

If Target.Column = 7 And Target.MergeCells And _
Target.Interior.Color = 13995347 Or _
Target.Interior.Color = 5287936 Or _
Target.Interior.Color = 5296274 Or _
Target.Interior.Color = 10213316 Then
RowHidden = Not (Rows(Target.Row + 1).EntireRow.Hidden)

For Each myCell In Intersect(Range(Target.Offset(1), Cells(Rows.Count, Target.Column)), Me.UsedRange)
If myCell.Interior.Color = Target.Interior.Color Then Exit For
Rows(myCell.Row).EntireRow.Hidden = RowHidden
Next myCell
Cancel = True
End If
End Sub
[/vba]
Так же хотелось бы для себя разобраться в логике кода. Правильно ли я понял?
1) Работать все это будет от двойного щелчка;
2) У нас отключено обновление экрана, чтобы все работало быстрее;
3) Цель условия 7 столбик и цель объедененная ячейка, так же цели: цвет синий или зеленый или салатовый или светло-салатовый;
4) А после цветов я понимаю всё очень смутно, тут у нас само выполение и проблема как раз-таки здесь, цикл и условие выхода из цикла.
Объясните пожалуйста более подробно 4 пункт.
К сообщению приложен файл: Data.xls (100.0 Kb)


Сообщение отредактировал Manyasha - Четверг, 04.01.2018, 19:54
 
Ответить
СообщениеДобрый день и с наступающим Вас Новым Годом! Я плохо разбираюсь в коде. Помогите пожалуйста подсказать и доработать.

Есть код скрытых строк по цветам для листа 1.

Проблема: При двойном щелчке на синюю ячейку, список раскрывается полностью, вместе с содержимим зеленых ячеек.
Задача: При двойном щелчке на синюю ячейку, должен открываться список только с двумя зелеными ячейками, не расскрывая самих зеленых ячеек.
[vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Application.ScreenUpdating = False

If Target.Column = 7 And Target.MergeCells And _
Target.Interior.Color = 13995347 Or _
Target.Interior.Color = 5287936 Or _
Target.Interior.Color = 5296274 Or _
Target.Interior.Color = 10213316 Then
RowHidden = Not (Rows(Target.Row + 1).EntireRow.Hidden)

For Each myCell In Intersect(Range(Target.Offset(1), Cells(Rows.Count, Target.Column)), Me.UsedRange)
If myCell.Interior.Color = Target.Interior.Color Then Exit For
Rows(myCell.Row).EntireRow.Hidden = RowHidden
Next myCell
Cancel = True
End If
End Sub
[/vba]
Так же хотелось бы для себя разобраться в логике кода. Правильно ли я понял?
1) Работать все это будет от двойного щелчка;
2) У нас отключено обновление экрана, чтобы все работало быстрее;
3) Цель условия 7 столбик и цель объедененная ячейка, так же цели: цвет синий или зеленый или салатовый или светло-салатовый;
4) А после цветов я понимаю всё очень смутно, тут у нас само выполение и проблема как раз-таки здесь, цикл и условие выхода из цикла.
Объясните пожалуйста более подробно 4 пункт.

Автор - Neznaika22
Дата добавления - 29.12.2017 в 15:40
bmv98rus Дата: Пятница, 29.12.2017, 15:58 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4106
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
Neznaika22, А что в той теме у автора не спросили? :-)

Я там к стати совсем убрал контроль по цвету из условия первичного и добавил исключение первой строки.

Принцип был прост , от ячейки что объединена, до аналогичной(или до конца) нужно скрыть или открыть строки. то есть если дошли до равенства myCell.Interior.Color = Target.Interior.Color , то более не требуется обрабатывать и выходим из цикла.

если нужно обеспечить вложенность групп, то надо менять алгоритм, так как весьма непросто пояснить где конец конкретной группы. хотя можно подумать, но без промежуточного хранения не обеспечить открытие нижнего уровня если он был открыт ранее при закрытии и повторном открытии верхнего.

Доработал, скрывает все, открывает последовательно по уровням.

К сообщению приложен файл: Copy_of_Data_Ne.xlsm (38.7 Kb)


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Пятница, 29.12.2017, 17:58
 
Ответить
СообщениеNeznaika22, А что в той теме у автора не спросили? :-)

Я там к стати совсем убрал контроль по цвету из условия первичного и добавил исключение первой строки.

Принцип был прост , от ячейки что объединена, до аналогичной(или до конца) нужно скрыть или открыть строки. то есть если дошли до равенства myCell.Interior.Color = Target.Interior.Color , то более не требуется обрабатывать и выходим из цикла.

если нужно обеспечить вложенность групп, то надо менять алгоритм, так как весьма непросто пояснить где конец конкретной группы. хотя можно подумать, но без промежуточного хранения не обеспечить открытие нижнего уровня если он был открыт ранее при закрытии и повторном открытии верхнего.

Доработал, скрывает все, открывает последовательно по уровням.


Автор - bmv98rus
Дата добавления - 29.12.2017 в 15:58
Manyasha Дата: Пятница, 29.12.2017, 16:54 | Сообщение № 3
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
Neznaika22, оформите код тегами для vba.
В режиме редактирования выделить весь код, нажать на кнопку #.


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеNeznaika22, оформите код тегами для vba.
В режиме редактирования выделить весь код, нажать на кнопку #.

Автор - Manyasha
Дата добавления - 29.12.2017 в 16:54
Mikael Дата: Пятница, 29.12.2017, 17:33 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 80
Репутация: 31 ±
Замечаний: 0% ±

Excel 2010
Всем доброго времени.
Нужно поправить Item - > Items
[vba]
Код
If myCell.Interior.Color = Target.Interior.Color Or (Item And myCell.MergeCells) Then Exit For
[/vba]

bmv98rus, крутой код, спасибо, было интересно respect
 
Ответить
СообщениеВсем доброго времени.
Нужно поправить Item - > Items
[vba]
Код
If myCell.Interior.Color = Target.Interior.Color Or (Item And myCell.MergeCells) Then Exit For
[/vba]

bmv98rus, крутой код, спасибо, было интересно respect

Автор - Mikael
Дата добавления - 29.12.2017 в 17:33
bmv98rus Дата: Пятница, 29.12.2017, 18:12 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4106
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
Mikael, спасибо и за респект и за замечание,

там это ваще ненужно


Совершенно невозможно на работе кодить :-)
К сообщению приложен файл: 5653228.xlsm (38.5 Kb)


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
СообщениеMikael, спасибо и за респект и за замечание,

там это ваще ненужно


Совершенно невозможно на работе кодить :-)

Автор - bmv98rus
Дата добавления - 29.12.2017 в 18:12
Pelena Дата: Пятница, 29.12.2017, 18:40 | Сообщение № 6
Группа: Админы
Ранг: Местный житель
Сообщений: 19177
Репутация: 4417 ±
Замечаний: ±

Excel 365 & Mac Excel
Neznaika22, ещё раз: код надо не под спойлер класть, а в спецтеги
В режиме редактирования выделить весь код, нажать на кнопку #

Исправьте


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеNeznaika22, ещё раз: код надо не под спойлер класть, а в спецтеги
В режиме редактирования выделить весь код, нажать на кнопку #

Исправьте

Автор - Pelena
Дата добавления - 29.12.2017 в 18:40
Neznaika22 Дата: Воскресенье, 31.12.2017, 14:35 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Прошу прощения, новогодние приготовления, совсем не было времени. Всем спасибо за разъяснение, bmv98rus отдельное спасибо за весь макрос! Pelena, впредь буду знать, как выставлять макрос на форум, через кнопку #. Сейчас уже не могу этого сделать, редактирование запрещено.

Вех с наступающим Новым Годом, всех благ, пусть 2018 год принесёт больше радости, чем 2017!
 
Ответить
СообщениеПрошу прощения, новогодние приготовления, совсем не было времени. Всем спасибо за разъяснение, bmv98rus отдельное спасибо за весь макрос! Pelena, впредь буду знать, как выставлять макрос на форум, через кнопку #. Сейчас уже не могу этого сделать, редактирование запрещено.

Вех с наступающим Новым Годом, всех благ, пусть 2018 год принесёт больше радости, чем 2017!

Автор - Neznaika22
Дата добавления - 31.12.2017 в 14:35
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос скрытых строк, требуется доработка. (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!