Excel vba свернуть сгруппированные строки
Подскажите, пожалуйста, как в Excel 2007 запустить макрос при группировке столбцов при нажатии на "+" (отобразить сгруппированные столбцы) или "-" (скрыть сгруппированные столбцы)? Заранее спасибо!
Подскажите, пожалуйста, как в Excel 2007 запустить макрос при группировке столбцов при нажатии на "+" (отобразить сгруппированные столбцы) или "-" (скрыть сгруппированные столбцы)? Заранее спасибо! Dmitriymifns
Dmitriymifns, Скорее всего, нет предусмотренных событий на это дело. Поэтому придётся делать "костыли".
Опишите задачу полностью, что вы пытаетесь сделать?
Dmitriymifns, Скорее всего, нет предусмотренных событий на это дело. Поэтому придётся делать "костыли".
Опишите задачу полностью, что вы пытаетесь сделать? Roman777
Ну да, отдельного события пожалуй что и нет. Можно так. Предыдущее состояние хранить где-то в книге, найти событие, которое группировка столбцов вызывает (обыкновенное Change подойдёт скорее всего), проверять текущее состояние, если оно изменилось — запустить макрос и запомнить состояние.
Ну да, отдельного события пожалуй что и нет. Можно так. Предыдущее состояние хранить где-то в книге, найти событие, которое группировка столбцов вызывает (обыкновенное Change подойдёт скорее всего), проверять текущее состояние, если оно изменилось — запустить макрос и запомнить состояние. StoTisteg
Тогда надо события перебирать. И хотелось бы в этом случае от ТС хотя бы минималистский примерчик, а самому ваять лень.
Тогда надо события перебирать. И хотелось бы в этом случае от ТС хотя бы минималистский примерчик, а самому ваять лень. StoTisteg
Здравствуйте! Задача состоит в том, чтобы при раскрытии сгруппированных столбцов в каждой такой группе не отображалось по одному определенному столбцу на двух листах книги. Причем если открыть книгу и сначала свернуть сгруппированные столбцы, а затем раскрыть, то по одному столбцу в каждой такой группе не должны отображаться.
Например, есть Книга1, в ней есть 2 листа ("2018" и "2019"), в которых сгруппированы по 3 группы одних и тех же столбцов ("C:H", "J:O" и "Q:V"). Нужно, чтобы на каждом из этих листов ("2018" и "2019") постоянно были свернутыми столбцы F, M и T, независимо оттого, сколько раз нажимать на "+" (отобразить сгруппированные столбцы) или "-" (скрыть сгруппированные столбцы).
На данный момент макрос сворачивает столбцы F, M и T на листах "2018" и "2019" только при открытии книги. А нужно, чтобы столбцы были вообще всегда свернутыми, независимо от действий на листах, даже если это будет просто нажатие на "+" (отобразить сгруппированные столбцы) или "-" (скрыть сгруппированные столбцы).
См. файл во вложении
Здравствуйте! Задача состоит в том, чтобы при раскрытии сгруппированных столбцов в каждой такой группе не отображалось по одному определенному столбцу на двух листах книги. Причем если открыть книгу и сначала свернуть сгруппированные столбцы, а затем раскрыть, то по одному столбцу в каждой такой группе не должны отображаться.
Например, есть Книга1, в ней есть 2 листа ("2018" и "2019"), в которых сгруппированы по 3 группы одних и тех же столбцов ("C:H", "J:O" и "Q:V"). Нужно, чтобы на каждом из этих листов ("2018" и "2019") постоянно были свернутыми столбцы F, M и T, независимо оттого, сколько раз нажимать на "+" (отобразить сгруппированные столбцы) или "-" (скрыть сгруппированные столбцы).
На данный момент макрос сворачивает столбцы F, M и T на листах "2018" и "2019" только при открытии книги. А нужно, чтобы столбцы были вообще всегда свернутыми, независимо от действий на листах, даже если это будет просто нажатие на "+" (отобразить сгруппированные столбцы) или "-" (скрыть сгруппированные столбцы).
См. файл во вложении Dmitriymifns
Например, есть Книга1, в ней есть 2 листа ("2018" и "2019"), в которых сгруппированы по 3 группы одних и тех же столбцов ("C:H", "J:O" и "Q:V"). Нужно, чтобы на каждом из этих листов ("2018" и "2019") постоянно были свернутыми столбцы F, M и T, независимо оттого, сколько раз нажимать на "+" (отобразить сгруппированные столбцы) или "-" (скрыть сгруппированные столбцы).
На данный момент макрос сворачивает столбцы F, M и T на листах "2018" и "2019" только при открытии книги. А нужно, чтобы столбцы были вообще всегда свернутыми, независимо от действий на листах, даже если это будет просто нажатие на "+" (отобразить сгруппированные столбцы) или "-" (скрыть сгруппированные столбцы).
См. файл во вложении Автор - Dmitriymifns
Дата добавления - 30.10.2018 в 06:16
Здравствуйте! Подскажите, пожалуйста, как макросом свернуть и развернуть сгруппированные столбцы(как бы нажать +-)?
Макрорекордером пробовала-ничего не записывает.
Вот есть кнопочки: свернуть, развернуть, закрыть. Как скрыть кнопку развернуть?
Вот есть кнопочки: свернуть, развернуть, закрыть. Как скрыть кнопку развернуть? Что кнопки свирнуть.
Развернуть/свернуть
Доброго времени суток, проблема такая , не работает JS код в браузерах, то есть нажимаешь кнопку.
Развернуть свернуть форму
Наверняка этот вопрос здесь обсуждался. Но я пока на него не нашел ответа. Есть некая программа. .
А если нужно конкретные столбцы только открыть? Выполнить действия с ними и закрыть.
Добавлено через 1 минуту
Простите,увидела! Спасибо!
А вот для "выполнить действия" совершенно не обязательно раскрывать. Предположу, что обращаетесь к Selection. Но в VBA можно вполне без него обращаться к ячейкам. Какие действия производите?
The_Prist, не завершите, пожалуйста, тему.
нужно чтобы раскрывалась одна группировка когда ячейка находится в ней
Здравствуйте!
А если нужно развернуть только конкретную группу?
При попытке использовать предлагаемый
Rows(xx). ShowDetail = True
Возникает ошибка времени выполнения 1004 Unable to set the ShowDetail property of the Range Class.
Кто подскажет, как решать задачу?
Свернуть развернуть JFrame
Доброго времени суток. Есть ли у java возможность сворачивать и разворачивать JFrame горячими.
Свернуть\развернуть по ссылке
Вот хочу научиться работать с jQ, но что-то не получается. Хочу чтобы див сворачивался и.
Развернуть\свернуть текст
Доброго времени суток! Подскажите пожалуйста, как сделать: есть текст вытащин с БД, нужно на.
Программно Развернуть/свернуть окна
Возможно - ли из программы maximize и обратно window (с формой или отчетом) - внутри окна с.
Есть ли способ программно группировать / разгруппировать столбцы или строки в Excel 2010?
- команда "вручную" находится в Data> Outline> Group / Ungroup
- в Excel 2003 это работало: someSheet.columns(i).ShowDetail = True / False , но больше не работает в 2010 для групп (только для сводных таблиц и групп промежуточных итогов)
- запись макроса не дает никакого кода, который я мог бы использовать
Точнее, вызов myRange.ShowDetail = True в Excel 2010 действительно расширяет свернутую группу, но вызывает ошибку, если группа уже развернута. А свойство ShowDetail возвращает True независимо от того, развернута группа или нет.
3 ответа
В Excel 2010 свойство ShowDetail всегда возвращает значение true для группы, независимо от того, свернута она или развернута. Вместо этого можно использовать свойство Hidden :
Что касается строк не в сводных таблицах . По моему опыту в Excel 2010 ShowDetail ВСЕГДА оценивается как True. Я думал, что это так, но не понимал, что мне нужно быть в итоговой строке, чтобы это свойство работало должным образом. Во-вторых, я не осознавал, что итоговая строка по умолчанию находится ПОД сгруппированными строками. Тестирование на свертывание / развертывание стало намного понятнее, когда я изменил этот параметр, чтобы строка сводки отображалась над сгруппированными строками (на ленте: Данные> Структура, Показать поле Outline Dlg).
Если выбранная мной ячейка находится в итоговой строке, ShowDetail получает значение True, если сгруппированные записи отображаются, и False, если это не так. Ключевым моментом для меня было нахождение в итоговой строке, чтобы увидеть, как это поведение работает таким образом. Наличие дочерних / сгруппированных строк выше по умолчанию действительно бросило меня.
Вот мой макрос, который динамически разворачивает и сворачивает сгруппированные записи, привязанные к итоговой строке, когда я выбираю ячейку в итоговой строке. И это делает мою ячейку в столбце A жирным шрифтом, если раздел расширен. Этот макрос не запускается, если я выбрал более одной ячейки.
Обратите внимание, что защита рабочего листа предотвращает разворачивание и сворачивание групп ячеек. Мой рабочий лист защищен, поэтому я снимаю защиту листов, чтобы развернуть / свернуть, а затем повторно защищаю их. (Возможным улучшением для меня было бы просто снять / защитить только текущий лист, а не все.)
Помните, я установил свою итоговую строку над сгруппированными записями. Если ваша итоговая строка находится ниже сгруппированных записей (по умолчанию), тогда ссылку на строку смещения необходимо изменить на -1, например:
Лучше всего просто изменить ширину столбца ячейки в скрытом диапазоне. Это автоматически разгруппирует выбор.
Доброго времени суток!
Делаю сводную с огромной структурой отчета и разворачивать мышкой на каждом уровне каждого заголовка очень неудобно.
В отчете уровней более 10-ти и значения уровней не такие юзер френдли, как в примере, поэтому переключаться на нужный уровень, это как сальто с тройным пируэтом в воздухе после каждой фильтрации в отчете.
Очень нужен макрос на кнопку развернуть/свернуть по уровням структуры. Вижу три варианта решения.
1) Выбор уровня из раскрывающего списка
2) Две кнопки (одна раскрывает на 1 уровень, другая сворачивает на 1 уровень)
3) Через счетчик аналогично 2-ому варианту. Не представляю правда как, но это было бы супер мощным решением.
Ниже загрузил файл-пример, там собственно пример таблицы и там же реализован 1 вариант, который работает очень криво.
Также в файле добавил кнопки для других вариантов, чтобы было нагляднее.
Если у вас есть возможность, помочь с решением, буду невероятно признателен.
По решению приоритетнее 2 или 3 вариант. Хотя если реализовать их сложно, то правке кода 1-ого варианта, тоже буду очень рад.
Очень надеюсь на Вашу помощь.
Ниже привожу пример структуры отчета и кода на раскрыть/свернуть через выпадающий список, который представлен в файле.
[vba]
For i = 1 To Number
CurrNextLevel = ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields(CurrLevel).PivotItems(i)
ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields(CurrLevel).PivotItems(CurrNextLevel).ShowDetail = True
Доброго времени суток!
Делаю сводную с огромной структурой отчета и разворачивать мышкой на каждом уровне каждого заголовка очень неудобно.
В отчете уровней более 10-ти и значения уровней не такие юзер френдли, как в примере, поэтому переключаться на нужный уровень, это как сальто с тройным пируэтом в воздухе после каждой фильтрации в отчете.
Очень нужен макрос на кнопку развернуть/свернуть по уровням структуры. Вижу три варианта решения.
1) Выбор уровня из раскрывающего списка
2) Две кнопки (одна раскрывает на 1 уровень, другая сворачивает на 1 уровень)
3) Через счетчик аналогично 2-ому варианту. Не представляю правда как, но это было бы супер мощным решением.
Ниже загрузил файл-пример, там собственно пример таблицы и там же реализован 1 вариант, который работает очень криво.
Также в файле добавил кнопки для других вариантов, чтобы было нагляднее.
Если у вас есть возможность, помочь с решением, буду невероятно признателен.
По решению приоритетнее 2 или 3 вариант. Хотя если реализовать их сложно, то правке кода 1-ого варианта, тоже буду очень рад.
Очень надеюсь на Вашу помощь.
Ниже привожу пример структуры отчета и кода на раскрыть/свернуть через выпадающий список, который представлен в файле.
[vba]
For i = 1 To Number
CurrNextLevel = ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields(CurrLevel).PivotItems(i)
ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields(CurrLevel).PivotItems(CurrNextLevel).ShowDetail = True
Dmitry_spb
Делаю сводную с огромной структурой отчета и разворачивать мышкой на каждом уровне каждого заголовка очень неудобно.
В отчете уровней более 10-ти и значения уровней не такие юзер френдли, как в примере, поэтому переключаться на нужный уровень, это как сальто с тройным пируэтом в воздухе после каждой фильтрации в отчете.
Очень нужен макрос на кнопку развернуть/свернуть по уровням структуры. Вижу три варианта решения.
1) Выбор уровня из раскрывающего списка
2) Две кнопки (одна раскрывает на 1 уровень, другая сворачивает на 1 уровень)
3) Через счетчик аналогично 2-ому варианту. Не представляю правда как, но это было бы супер мощным решением.
Ниже загрузил файл-пример, там собственно пример таблицы и там же реализован 1 вариант, который работает очень криво.
Также в файле добавил кнопки для других вариантов, чтобы было нагляднее.
Если у вас есть возможность, помочь с решением, буду невероятно признателен.
По решению приоритетнее 2 или 3 вариант. Хотя если реализовать их сложно, то правке кода 1-ого варианта, тоже буду очень рад.
Очень надеюсь на Вашу помощь.
Ниже привожу пример структуры отчета и кода на раскрыть/свернуть через выпадающий список, который представлен в файле.
[vba]
For i = 1 To Number
CurrNextLevel = ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields(CurrLevel).PivotItems(i)
ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields(CurrLevel).PivotItems(CurrNextLevel).ShowDetail = True
Автор - Dmitry_spb
Дата добавления - 06.08.2015 в 06:55
Dmitry_spb, А чем Вас стандартный вариант не устраивает
Правая кнопка мыши
Dmitry_spb, А чем Вас стандартный вариант не устраивает
Правая кнопка мыши
miver
Miver, исходные данные находятся в модели данных pover pivot, поэтому контекстное меню выглядит иначе.
Как Вы можете заметить в контекстном меню отсутствует уровень структуры при Развернуть/Свернуть, аналогично отсутствующей возможности группировки.
При возможности я бы с самого начала загрузил файл аналогичный оригиналу. Но это невозможно, т.к. при использовании модели данных PoverPivot, независимо от кол-ва строк и столбцов внутри, файл будет превышать допустимый размер в 100кб.
В общем, обходными путями честно не получится. В данном случае нужен именно макрос.
Привожу пример контекстного меню в моем случае.
Miver, исходные данные находятся в модели данных pover pivot, поэтому контекстное меню выглядит иначе.
Как Вы можете заметить в контекстном меню отсутствует уровень структуры при Развернуть/Свернуть, аналогично отсутствующей возможности группировки.
При возможности я бы с самого начала загрузил файл аналогичный оригиналу. Но это невозможно, т.к. при использовании модели данных PoverPivot, независимо от кол-ва строк и столбцов внутри, файл будет превышать допустимый размер в 100кб.
В общем, обходными путями честно не получится. В данном случае нужен именно макрос.
Привожу пример контекстного меню в моем случае.
Dmitry_spb
Как Вы можете заметить в контекстном меню отсутствует уровень структуры при Развернуть/Свернуть, аналогично отсутствующей возможности группировки.
При возможности я бы с самого начала загрузил файл аналогичный оригиналу. Но это невозможно, т.к. при использовании модели данных PoverPivot, независимо от кол-ва строк и столбцов внутри, файл будет превышать допустимый размер в 100кб.
В общем, обходными путями честно не получится. В данном случае нужен именно макрос.
Привожу пример контекстного меню в моем случае.
Автор - Dmitry_spb
Дата добавления - 06.08.2015 в 12:57
Народ,
помогите, пожалуйста, "затык настиг"
Попросили меня написать макрос, который переберёт по очереди все сгруппированные ячейки в выделенном диапазоне и про каждую из них спросить юзверга: "Разргуппировать или нет?"
Написал я с ходу такую фигню:[vba]
Sub FindMergeCells() ' перебрать все сгруппированные ячейки в выделенном диапазоне и предложить пользователю их разгруппировать
If TypeName(Selection) <> "Range" Then Exit Sub
If Selection.Cells.Count Dim rCell As Range
For Each rCell In Intersect(Selection, ActiveSheet.UsedRange)
If rCell.MergeCells Then
rCell.Select
If MsgBox("Разгруппировать ячейку?", vbYesNo) = vbYes Then rCell.UnMerge
End If
Next rCell
End Sub
[/vba]
Когда пользователь соглашается разгруппировать указанную ему сгруппированную ячейку, то всё отлично.
А вот если он откажется, то по очереди перебираются все скрытые под группировкой ячейки и про них задаётся вопрос.
Это, конечно, как борьба со злом с методологической точки зрения правильно: может быть, всё-таки устанет отказываться и согласится разгруппировать. Но по отношению к юзеру как-то не хорошо получается
Народ,
помогите, пожалуйста, "затык настиг"
Попросили меня написать макрос, который переберёт по очереди все сгруппированные ячейки в выделенном диапазоне и про каждую из них спросить юзверга: "Разргуппировать или нет?"
Написал я с ходу такую фигню:[vba]
Sub FindMergeCells() ' перебрать все сгруппированные ячейки в выделенном диапазоне и предложить пользователю их разгруппировать
If TypeName(Selection) <> "Range" Then Exit Sub
If Selection.Cells.Count Dim rCell As Range
For Each rCell In Intersect(Selection, ActiveSheet.UsedRange)
If rCell.MergeCells Then
rCell.Select
If MsgBox("Разгруппировать ячейку?", vbYesNo) = vbYes Then rCell.UnMerge
End If
Next rCell
End Sub
[/vba]
Когда пользователь соглашается разгруппировать указанную ему сгруппированную ячейку, то всё отлично.
А вот если он откажется, то по очереди перебираются все скрытые под группировкой ячейки и про них задаётся вопрос.
Это, конечно, как борьба со злом с методологической точки зрения правильно: может быть, всё-таки устанет отказываться и согласится разгруппировать. Но по отношению к юзеру как-то не хорошо получается Alex_ST
С уважением,
Алексей
MS Excel 2003 - the best.
Sub FindMergeCells() ' перебрать все сгруппированные ячейки в выделенном диапазоне и предложить пользователю их разгруппировать
If TypeName(Selection) <> "Range" Then Exit Sub
If Selection.Cells.Count Dim rCell As Range
For Each rCell In Intersect(Selection, ActiveSheet.UsedRange)
If rCell.MergeCells Then
rCell.Select
If MsgBox("Разгруппировать ячейку?", vbYesNo) = vbYes Then rCell.UnMerge
End If
Next rCell
End Sub
[/vba]
Когда пользователь соглашается разгруппировать указанную ему сгруппированную ячейку, то всё отлично.
А вот если он откажется, то по очереди перебираются все скрытые под группировкой ячейки и про них задаётся вопрос.
Это, конечно, как борьба со злом с методологической точки зрения правильно: может быть, всё-таки устанет отказываться и согласится разгруппировать. Но по отношению к юзеру как-то не хорошо получается Автор - Alex_ST
Дата добавления - 30.10.2012 в 15:42
Читайте также: