Если есть группировка vba excel

 

Подскажите, как в рамках VBA определить существуют ли на Листе сгруппированные строки или нет??? (т.е. прменялся ли на Листе метод Group для каких-либо строк ???).

 

неужели никто не сталкивался с такой необходимостью

 

ytk5kyky

Пользователь

Сообщений: 2410
Регистрация: 01.01.1970

{quote}{login=Евгений}{date=31.10.2008 05:01}{thema=}{post}неужели никто не сталкивался с такой необходимостью{/post}{/quote}Значит не сталкивался.  
Может расскажете зачем нужна такая информация, а мы тут подумаем над альтернативой.

 

New

Пользователь

Сообщений: 4581
Регистрация: 06.01.2013

Вот 2 макроса. 1-й проверяет, есть ли группировка строк, а 2-й проверяет, есть ли группировка столбцов на активном листе  

  Sub CheckRowsForGroup()  
Dim iRow As Range  
   For Each iRow In ActiveSheet.UsedRange.Rows  
       If iRow.OutlineLevel > 1 Then  
           MsgBox «На активном листе есть группировка строк!», 64, «Группировка строк»  
           Exit Sub  
       End If  
   Next  
   MsgBox «На активном листе нет группировки строк!», 64, «Группировка строк»  
End Sub  

    Sub CheckColumnsForGroup()  
Dim iCol As Range  
   For Each iCol In ActiveSheet.UsedRange.Columns  
       If iCol.OutlineLevel > 1 Then  
           MsgBox «На активном листе есть группировка столбцов!», 64, «Группировка столбцов»  
           Exit Sub  
       End If  
   Next  
   MsgBox «На активном листе нет группировки столбцов!», 64, «Группировка столбцов»  
End Sub  

  P.S. Основано на основе макросов из этой темы с соседнего форума    

http://forum.sql.ru/forum/actualthread.aspx?tid=357196

 

Огромное спасибо Pavel55! О свойстве OutlineLevel — действительно знать надо!  
По поводу вопроса Лузера «Зачем это надо?».    
Когда выполнение программы осуществляет ту или иную перегруппировку строк, то действие метода Ungroup для случая когда на листе не оказалось сгруппированных строк приводит к ошибке (мол, ничего не могу разгрупировать). В этом случае требуется проверка наличия или отсутствия таких группировок.

 

Pavel55 а может ты знаешь ответ на еще один подобный вопрос!  
Как определить факт наличия или отсуствия выделенных ячеек (например, после действия SpecialCells). В этом случае также программа будет ругаться если производить действия с отсутствием выделенных ячеек.  
Заранее благодарю!!

 

всегда есть хотя бы одна выделенная ячейка

 

{quote}{login=Артем}{date=31.10.2008 02:04}{thema=}{post}всегда есть хотя бы одна выделенная ячейка{/post}{/quote}  

  Тогда уточняю….  
одна или более одной выделенной ячейки

 

New

Пользователь

Сообщений: 4581
Регистрация: 06.01.2013

эм, не очень понял вопрос, но попробуйте так  

    Sub Макрос1()  
   If Selection.Cells.Count > 1 Then  
       MsgBox «Выделено более одной ячейки! А именно: » & Selection.Cells.Count, 64, «»  
   Else  
       MsgBox «Выделена одна ячейка!», 64, «»  
   End If  
End Sub

 

{quote}{login=}{date=31.10.2008 09:58}{thema=Re: }{post}{quote}{login=Артем}{date=31.10.2008 02:04}{thema=}{post}всегда есть хотя бы одна выделенная ячейка{/post}{/quote}  

  Тогда уточняю….  
одна или более одной выделенной ячейки{/post}{/quote}  
Ну и уточнение. Одна ведь ВСЕГДА есть. Значит проверка по ТАКОМУ «уточненному» условию всегда даст истину. Правильно вам Павел пишет: БОЛЬШЕ одной.

 

Уточняю задачу.  
1). Создается объект Selection с выделением всех формул на листе с помощью  
SpecialCells(xlCellTypeFormulas, 23)  
2). Если на листе есть хоть одна формула, то с Объектом Selection можно производить дальнейшие какие-либо действия. Однако есть формул нет, то VBA выдаст ошибку, что понятно и разумно.    
Однако встает задача, как заранее выявлять такие ситуации, чтобы не производить действий с несуществующим объектом.    

  Теперь задача понятна?

 

Юрий М

Модератор

Сообщений: 60578
Регистрация: 14.09.2012

Контакты см. в профиле

Евгений, думаю, что если бы сразу повели разговор о проверке наличия на листе формул, ответ давно бы получили. Вот посмотрите обсуждение:  

http://www.planetaexcel.ru/forum.php?thread_id=3405  

Может что полезное для Вас найдётся.

 

Юрий М

Модератор

Сообщений: 60578
Регистрация: 14.09.2012

Контакты см. в профиле

Ещё вот что: следующий макрос выделит на листе все ячейки с формулам:  
— — —  
Sub Макрос1()  
Selection.SpecialCells(xlCellTypeFormulas, 23).Select  
End Sub  
— — —  
Вставляем проверку Павла:    
If Selection.Cells.Count > 1 Then  
легко посчитает их количество. Вроде задача решена?

 

New

Пользователь

Сообщений: 4581
Регистрация: 06.01.2013

Не знаю, правильно или нет  (в плане, может как-то короче можно или нет)  

  Sub Макрос1()  
Dim FormulasRng As Range  

     On Error Resume Next  
   Set FormulasRng = Selection.SpecialCells(xlCellTypeFormulas, 23)  
   If Not FormulasRng Is Nothing Then  
       FormulasRng.Select  
       MsgBox «Формулы на листе выделены!», 64, «»  
   Else  
       MsgBox «Формул на листе нет!», 48, «»  
   End If  
   On Error GoTo 0  
End Sub

 

Юрий М

Модератор

Сообщений: 60578
Регистрация: 14.09.2012

Контакты см. в профиле

Павел, я думаю, что если достаточно проверить наличие, то можно так:  
Sub Макрос2()  
Selection.SpecialCells(xlCellTypeFormulas, 23).Select  
If Selection.Cells.Count > 1 Then  
  MsgBox «Больше одной»  
End If  
Или проверка больше нуля. Ведь, вроде в этом основная задача.

 

New

Пользователь

Сообщений: 4581
Регистрация: 06.01.2013

Юрий, а вы пробовали запустить свой макрос в Excel?

 

Юрий М

Модератор

Сообщений: 60578
Регистрация: 14.09.2012

Контакты см. в профиле

Конечно! Вот он. А что-то не так?

 

Юрий М

Модератор

Сообщений: 60578
Регистрация: 14.09.2012

Контакты см. в профиле

Павел, ну сколько можно томить неизвестностью? Я уже (кроме синтаксиса) проверил: орфографию, стилистику, рифму… Чта Вас смутило?

 

Юрий М

Модератор

Сообщений: 60578
Регистрация: 14.09.2012

Контакты см. в профиле

Кажется понял что — отсутствие строчки  
On Error Resume Next?

 

New

Пользователь

Сообщений: 4581
Регистрация: 06.01.2013

Угу, если на листе не будет ни одной формулы, то выскочит ошибка 1004.

 

Спасибо Вам Юрий М и Вам Pavel55 за обсуждение проблемы.  
Я ранее пытался через свойство Count осуществлять проверку и обходить возможную ошибку-ничего не получалось (Exel ругался). Однако, я не делал через свойство Cells.Count (как Вы предлагаете).    
Попытаюсь проверить теперь таким образом.  
Предложение от Pavel55 с помощью On Error сейчас так рассматриваю.

 

Вы правильно поняли мою проблему (именно выскакивание ошибки 1004)

 

Юрий М

Модератор

Сообщений: 60578
Регистрация: 14.09.2012

Контакты см. в профиле

Как требуют старшие товарищи, и правила хорошего поведения в Excel добавил проклятую строчку. Теперь при отсутствии формул на листе орать не будет, зараза…

 

ZVI

Пользователь

Сообщений: 4328
Регистрация: 23.12.2012

Юрий, немного не так — проверьте. У Павла — коректнее.  
Можно еще немного упростить:  
Sub Макрос()  
 On Error Resume Next  
 With Selection.SpecialCells(xlCellTypeFormulas, 23): End With  
 If Err = 0 Then  
   MsgBox «Есть формулы»  
 Else  
   MsgBox «Нет формул»  
 End If  
End Sub  

  Но методу SpecialCells() доверять можно не всегда.  
Попробуйте, например, в ячейку A1 ввести любую формулу, например =1+1, а ячейку A2 оставьте пустой.  
Затем скопируйте эту парочку ячеек A1:A2 в диапазон, например, A3:A17000  
Выделите всю колонку A:A и попробуйте теперь выделить только формулы с помощью:  
Sub НеВсегдаДоверяйтеSpecialCells()  
 Selection.SpecialCells(xlCellTypeFormulas, 23).Select  
End Sub  
Выделенной останется вся колонка A:A  
;-)

 

New

Пользователь

Сообщений: 4581
Регистрация: 06.01.2013

ZVI, а если в Вашем примере не выделять столбец А и запустить макрос, то вообще ничего не происходит (ничего не выделяется). Я думаю, что это связано с ограничением количества несмежных ячеек. Сейчас не вспомню, но, вроде, количество несмежных ячеек не должно превышать какое-то количество.

 

ZVI

Пользователь

Сообщений: 4328
Регистрация: 23.12.2012

Павел, все верно.  
Для .SpecialCells() существует ограничение — не более 8192 областей (Areas).  
В моём примере каждая пара смежных ячеек — это область, так как одна из ячеек пустая.  
Если выделить 8192 таких пар ячеек A1:A16384, то все сработает нормально.    
Но стоит выделить на одну ячейку больше A1:A16385 и лимит будет превышен, и метод .SpecialCells() соврет.  
Особое коварство этого метода заключается в том, что при превышении лимита областей в обрабатываемом диапазоне .SpecialCells() возвращает не особые (формулы и т.п.), а все ячейки.

 

New

Пользователь

Сообщений: 4581
Регистрация: 06.01.2013

Вот, сейчас проверил. Если ввести формулу =1+1 в ячейку А1, выделить А1 и А2 и скопировать их до ячейки 16383, т.е. количество ячеек с формулами будет равняться 8192, то ячейки с формулами нормально выделяются.  
Вывод: Если несмежных ячеек с формулами больше, чем 8192, то метод SpecialCells работает неправильно. А если несмежных ячеек меньше, чем 8192, то всё прекрасно работает.

 

New

Пользователь

Сообщений: 4581
Регистрация: 06.01.2013

угу) Пока писал, вы уже ответили )

 

ZVI

Пользователь

Сообщений: 4328
Регистрация: 23.12.2012

Павел, это тот случай, когда лучше мы с Вами вдвоем напишен, чем понадеемся друг на друга на ночь глядя и заснем :-)  

  На всякий случай — вот еще и ссылка:  

http://support.microsoft.com/default.aspx?scid=kb;en-us;832293  

  Там однозначно написано, что при попытке выделить вручную будет выведено сообщение об ошибке, а если с помощью VBA — то ничто и не вякнет об ошибке.    
Зачем такая запядня — не знаю, скорее всего это атавизм.  
Некоторые успокаивают, что этот лимит случается редко, другие рекомендуют сначала проверять .Areas.Count <= 8192.  
Но если лимит превышен, то потребуется писать код для иного метода, например, дробить диапазон пополам, пока превышен лимит, а затем разбираться с каждым таким фрагментом.

 

New

Пользователь

Сообщений: 4581
Регистрация: 06.01.2013

#30

04.11.2008 02:18:11

По поводу .Areas.Count — у меня не считается, если их больше 8192, т.е. если меньше то пишет, например, 8190, а если больше, то просто 1. А у Вас? Меня это удивило, как же определить, что диапазонов больше?

Содержание

  1. Метод Range.Group (Excel)
  2. Синтаксис
  3. Параметры
  4. Возвращаемое значение
  5. Примечания
  6. Поддержка и обратная связь
  7. VBA Group Rows & Columns
  8. Group Rows or Columns
  9. Ungroup Rows or Columns
  10. Expand All “Grouped” Outline Levels
  11. VBA Coding Made Easy
  12. VBA Code Examples Add-in
  13. VBA Code Generator
  14. AutoMacro: VBA Add-in with Hundreds of Ready-To-Use VBA Code Examples & much more!
  15. What is AutoMacro?
  16. Группировка строк с одинаковым значением в VBA
  17. Если есть группировка vba excel
  18. Если есть группировка vba excel

Метод Range.Group (Excel)

Когда объект Range представляет одну ячейку в диапазоне данных поля сводной таблицы, метод Group выполняет числовую или датовую группировку в этом поле.

Синтаксис

expression. Группа (начало, конец, по, точки)

выражение: переменная, представляющая объект Range.

Параметры

Имя Обязательный или необязательный Тип данных Описание
Start Необязательный Variant Первое сгруппированное значение. Если этот аргумент опущен или True, используется первое значение в поле.
End Необязательный Variant Последнее сгруппированное значение. Если этот аргумент опущен или True, используется последнее значение в поле.
By Необязательный Variant Если поле числовое, этот аргумент указывает размер каждой группы. Если поле является датой, этот аргумент указывает количество дней в каждой группе, если элемент 4 в массиве Periods имеет значение True , а все остальные элементы — False. В противном случае этот аргумент игнорируется. Если этот аргумент опущен, Microsoft Excel автоматически выбирает размер группы по умолчанию.
Periods Необязательный Variant Массив логических значений, указывающих период для группы, описанный в разделе Примечания. Если элемент в массиве имеет значение True, группа создается для соответствующего времени; Если элемент имеет значение False, группа не создается. Если поле не является полем даты, этот аргумент игнорируется.

Возвращаемое значение

Примечания

Логический массив для параметра Periods содержит следующие элементы:

Элемент Array Period
1 Секунды
2 Минуты
3 Часы
4 Дни
5 Месяцы
6 Четверти
7 Годы

Так как группа фигур обрабатывается как одна фигура, группирование и разгруппирование фигур изменяет количество элементов в коллекции Фигуры и изменяет число индексов элементов, которые поступают после затронутых элементов в коллекции.

Объект Range должен быть одной ячейкой в диапазоне данных поля сводной таблицы. При попытке применить этот метод к нескольким ячейкам произойдет сбой (без отображения сообщения об ошибке).

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Источник

VBA Group Rows & Columns

In this Article

This tutorial will demonstrate how to group and ungroup rows and columns in VBA.

Group Rows or Columns

To group rows or columns apply the Group Method to the rows or columns:

Ungroup Rows or Columns

To ungroup the rows or columns, simply use the Ungroup Method:

Expand All “Grouped” Outline Levels

To expand all grouped outline levels, use this line of code:

To collapse all outline levels, use this line of code:

VBA Coding Made Easy

Stop searching for VBA code online. Learn more about AutoMacro — A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!

VBA Code Examples Add-in

Easily access all of the code examples found on our site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(No installation required!)

VBA Code Generator

AutoMacro: VBA Add-in with Hundreds of Ready-To-Use VBA Code Examples & much more!

What is AutoMacro?

AutoMacro is an add-in for VBA that installs directly into the Visual Basic Editor. It comes loaded with code generators, an extensive code library, the ability to create your own code library, and many other time-saving tools and utilities that add much needed functionality to the outdated VBA Editor.

Источник

Группировка строк с одинаковым значением в VBA

У меня есть таблица в Excel, и я хочу создать макрос в VBA для группировать строки с одинаковым значением в столбце F и выделить группу заголовков жирным шрифтом.

Другими словами, все строки с одинаковым значением в столбце F должны быть сгруппированы в одну строку с полужирным шрифтом. Это возможно?

Вот что у меня: Фактические данные

Вот чего я хочу:

Большое спасибо, я буду очень признателен

@Javi — Даже если этот сайт был «бесплатной службой кодирования», группировка строк с одинаковым значением не требует VBA и выполняется несколькими щелчками мыши путем создания Сводная таблица.

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

@Ashleedawg Я хочу сгруппировать со значком плюса, поэтому сводная таблица мне не подходит. Большое спасибо 🙂

@Javi ты имеешь в виду такая группа?

@ProfoundlyOblivious да, это правильно !! 🙂

Хорошо, я разобрался с вашим кодом. Вам не хватает жирного и яркого. Это все, что вам нужно, или есть что-то, что не работает должным образом?

Думаю, это все, что мне нужно. Не знаю, лучшее ли решение, как я это сделал.

Взгляните на этот выход — это то, что вы ищете? Я думаю, может быть, вы хотели отформатировать только одну строку . это то, что я хотел, но мне было весело и я увлекся.

@ProfoundlyOblivious вывод пустой 🙁

Понятия не имею, что вы имеете в виду. Я начинаю с электронной таблицы, в которой нет групп или выделения. В столбце F есть повторяющиеся значения. Я запускаю код, и лист группируется по столбцу F, все строки в этой группе форматируются, и группа сворачивается. Выходные данные показывают, что группа развернута и свернута. Кроме того, группировка выполняется вашим кодом без изменений функциональности группировки. Я только форматирование добавил.

Ссылаюсь на вашу ссылку пуста imgur.com/a/tFBAB2f 🙂 а теперь появляется! 🙂

Мне кажется более визуально привлекательным выделить только самую верхнюю строку, но вы запросили все строки, поэтому здесь будет объяснено, как сделать это в обоих направлениях. Я на 100% уверен, что это крайне неэффективно, но при этом вносит минимальные изменения в существующий код и обеспечивает желаемый результат.

Для обеих версий вам понадобится еще одна переменная диапазона. Технически в этом нет необходимости, но мне не хотелось делать мысленную гимнастику с i и j.

И почти в самом низу вставить условную проверку и форматирование.

Чтобы отформатировать только самую верхнюю строку в группе, добавьте else и форматируйте — НЕ ИСПОЛЬЗУЙТЕ ЭТОТ СЕГМЕНТ, ЕСЛИ ВЫ ХОТИТЕ ВЫДЕЛИТЬ ВСЕ СТРОКИ

Чтобы отформатировать каждую строку в группе, объявите еще одну итеративную переменную и используйте вместо нее этот сегмент.

Один из этих двух вариантов должен доставить вас туда, куда вы хотите.

Подсвечивает только самый верхний ряд, это нормально для меня! 🙂 Большое спасибо @ProfoundlyOblivious

Источник

Если есть группировка vba excel

Добрый день.
Очень нужна ваша помощь. Нужно сгруппировать свод, чтобы можно было нажать на плюс — столбец развернулся — еще плюс — второй столбец развернулся.
Пример во вложении. Нужно сгруппировать первый столбец до итогов, и второй столбец до итогов.
Примерно так:
-Кластер 1 Итог
-Кластер 2 Итог
Нажимаем на плюс (внутри кластера):
-БП итог
-Б.П+Макароны Итог
-Бум.пр. Итог
и т.д.
Нажимаем еще на плюс:
номера и заводы видно

Как-то так. Помогите написать макрос для этого.
По факту строк будет около 150000 (если это важно для макроса) Кол-во столбцов как в примере

Добрый день.
Очень нужна ваша помощь. Нужно сгруппировать свод, чтобы можно было нажать на плюс — столбец развернулся — еще плюс — второй столбец развернулся.
Пример во вложении. Нужно сгруппировать первый столбец до итогов, и второй столбец до итогов.
Примерно так:
-Кластер 1 Итог
-Кластер 2 Итог
Нажимаем на плюс (внутри кластера):
-БП итог
-Б.П+Макароны Итог
-Бум.пр. Итог
и т.д.
Нажимаем еще на плюс:
номера и заводы видно

Как-то так. Помогите написать макрос для этого.
По факту строк будет около 150000 (если это важно для макроса) Кол-во столбцов как в примере Nikonka89

Сообщение Добрый день.
Очень нужна ваша помощь. Нужно сгруппировать свод, чтобы можно было нажать на плюс — столбец развернулся — еще плюс — второй столбец развернулся.
Пример во вложении. Нужно сгруппировать первый столбец до итогов, и второй столбец до итогов.
Примерно так:
-Кластер 1 Итог
-Кластер 2 Итог
Нажимаем на плюс (внутри кластера):
-БП итог
-Б.П+Макароны Итог
-Бум.пр. Итог
и т.д.
Нажимаем еще на плюс:
номера и заводы видно

Как-то так. Помогите написать макрос для этого.
По факту строк будет около 150000 (если это важно для макроса) Кол-во столбцов как в примере Автор — Nikonka89
Дата добавления — 23.07.2020 в 16:13

Источник

Если есть группировка vba excel

Прошу помочь с написанием макроса, который бы работал следующим образом:

0. На листе создается кнопка «Группировка», которая активирует макрос, при нажатии на нее; кнопка «Сгруппировать», которая группирует все существующие связи; «Разгруппировать», которая разгруппирует их, соответственно.

При нажатии на кнопку «Группировка», происходят следующие процессы:
1. Сбрасываются (удаляются) все действующие группировки на листе;
2. Определяется диапазон работы макроса — со строки № 6 листа (включительно), до строки, в столбце В которой значение «Общий итог» (номер строки не определен!!);
3. Группируются строки, в столбце А которых стоит значение «-«, разумеется каждый набор последовательно идущих строк, удовлетворяющих условие, группируется отдельно, «не задевая» те строки, которые условие не удовлетворяют.

ПС. Если есть вариант решения задачи не макросом, а иным способом — то будет вообще супер!

Пример прилагаю. Благодарю за уделенное время!

Прошу помочь с написанием макроса, который бы работал следующим образом:

0. На листе создается кнопка «Группировка», которая активирует макрос, при нажатии на нее; кнопка «Сгруппировать», которая группирует все существующие связи; «Разгруппировать», которая разгруппирует их, соответственно.

При нажатии на кнопку «Группировка», происходят следующие процессы:
1. Сбрасываются (удаляются) все действующие группировки на листе;
2. Определяется диапазон работы макроса — со строки № 6 листа (включительно), до строки, в столбце В которой значение «Общий итог» (номер строки не определен!!);
3. Группируются строки, в столбце А которых стоит значение «-«, разумеется каждый набор последовательно идущих строк, удовлетворяющих условие, группируется отдельно, «не задевая» те строки, которые условие не удовлетворяют.

ПС. Если есть вариант решения задачи не макросом, а иным способом — то будет вообще супер!

Пример прилагаю. Благодарю за уделенное время! Sl1mka

Сообщение Добрый день!

Прошу помочь с написанием макроса, который бы работал следующим образом:

0. На листе создается кнопка «Группировка», которая активирует макрос, при нажатии на нее; кнопка «Сгруппировать», которая группирует все существующие связи; «Разгруппировать», которая разгруппирует их, соответственно.

При нажатии на кнопку «Группировка», происходят следующие процессы:
1. Сбрасываются (удаляются) все действующие группировки на листе;
2. Определяется диапазон работы макроса — со строки № 6 листа (включительно), до строки, в столбце В которой значение «Общий итог» (номер строки не определен!!);
3. Группируются строки, в столбце А которых стоит значение «-«, разумеется каждый набор последовательно идущих строк, удовлетворяющих условие, группируется отдельно, «не задевая» те строки, которые условие не удовлетворяют.

ПС. Если есть вариант решения задачи не макросом, а иным способом — то будет вообще супер!

Пример прилагаю. Благодарю за уделенное время! Автор — Sl1mka
Дата добавления — 10.07.2015 в 13:17

Источник

viper-x

65 / 22 / 7

Регистрация: 28.02.2018

Сообщений: 211

1

Excel

Статус группировки (структуры)

31.05.2021, 11:02. Показов 1206. Ответов 1

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Здравствуйте!
Пытаюсь выполнить разгруппировать 3-ю строку,
сгруппированную способом
ДанныеГруппировать

Visual Basic
1
ThisWorkbook.ActiveSheet.Rows(3).Ungroup

и получаю ошибку, в случае, если строка уже разгруппирована.
Как заранее определить статус группировки строки?
Спасибо!
P.S.: Про группировку спрашивали тут: Группировка строк в Excel (макрос)
(на правах доп.информации)



0



Rosgard

50 / 24 / 8

Регистрация: 11.08.2020

Сообщений: 98

31.05.2021, 11:59

2

Первая же ссылка в поисковике по запросу «проверка сгруппированы ли ячейки excel vba»:

Visual Basic
1
2
3
4
5
6
7
8
9
10
Sub CheckRowsForGroup()  
Dim iRow As Range  
   For Each iRow In ActiveSheet.UsedRange.Rows  
       If iRow.OutlineLevel > 1 Then  
           MsgBox "На активном листе есть группировка строк!", 64, "Группировка строк"  
           Exit Sub  
       End If  
   Next  
   MsgBox "На активном листе нет группировки строк!", 64, "Группировка строк"  
End Sub

Добавлено через 1 минуту
Интересующая вас проверка:

Visual Basic
1
If iRow.OutlineLevel > 1 Then



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

31.05.2021, 11:59

Помогаю со студенческими работами здесь

Группировки элементов
Вообще задача для N элементов и M групп, но пусть условно 9 элементов и 3 группы для простоты.

Группировки в отчете
Здравствуйте, помогите пожалуйста!
я никак не могу сделать группировку по заказам в отчете, я…

представление группировки
только начинаю осваивать — создаю inerbase представление, хочу сгруппировать по дате из одной…

Группировки в отчете
Имеется отчет с несколькими уровнями группировки

Можно ли в аксес-отчете сделать так, что если в…

Группировки в QuantumGrid
Мне необходимо:
1. Расскрасить групировки в QuatumGrid (Как я понял событие OnCustomDrawGroupCell,…

Группировки в отчете
Всем доброго времени суток! У меня отчет,состоящий из флажков и текстовых данных после которых идут…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

2

I’m working on a macro to create some order in a very large excel doc. After a few operations on a specific selection, I would like to check if there are rows in that selected range that are grouped, and if so, they need to be ungrouped. After ungrouping all the rows (could be some seperate groups in the range, could be one big group or not even grouped at all), they need to be grouped all together. The part of the code below starts with selecting the specific range, I think the solution is looping through the range and checking all the rows if they are part of a group, and if so, they would be needed to be ungrouped. But Don’t know how to translate this concept into a working code :)
Also, an example of a range before the ungrouping/grouping operation is included below.

Range(Cells(Rstart, "H"), Cells(Rend, "H")).Select
Selection.Rows.Ungroup
Selection.Rows.Group

enter image description here

deepslam
Бывалый
Бывалый
Аватара пользователя

 
Сообщения: 286
Зарегистрирован: 19.08.2002 (Пн) 2:25
Откуда: Russia

Подскажите как узнать сгруппированы ли строки в Excel?

Добрый день!

Как узнать сгруппированы ли строки в Excel файле и , если да, то узнать с на каком диапазоне. Заранее спасибо!


$€rg
Обычный пользователь
Обычный пользователь
 
Сообщения: 99
Зарегистрирован: 11.01.2006 (Ср) 10:15
Откуда: Санкт-Петербург

Сообщение $€rg » 18.04.2006 (Вт) 11:11

процесс печатания программного кода укрепляет моральные устои С. Каммингс VBA4Dummies
:study:


alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 18.04.2006 (Вт) 11:17

$€rg, причем тут объединение?

Именно группировка.

deepslam, посмотри в справке VBA Excel пример к Group.

Lasciate ogni speranza, voi ch’entrate.


deepslam
Бывалый
Бывалый
Аватара пользователя

 
Сообщения: 286
Зарегистрирован: 19.08.2002 (Пн) 2:25
Откуда: Russia

Сообщение deepslam » 18.04.2006 (Вт) 13:22

Спасибо всем, кто отклинулся, то что меня интересовало, я нашел!

Вот код:

Код: Выделить всё
'для 10-й строчки
Worksheets(1).Rows(10).OutlineLevel

[/code]



Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

Понравилась статья? Поделить с друзьями:
  • Если епусто excel на английском
  • Если енд в excel примеры
  • Если долго загружается word
  • Если документ word сохранен в формате docx
  • Если для нескольких условий одновременно в excel