Страницы: 1
RSS
Определить, есть ли группировка столбцов / строк
 
Всем доброго вечера,

пишу тест на проверку знаний Excel для пользователей. Один из вопросов предусматривал, что пользователь должен применить функцию "Группировать" -> "Создать структуру" и таким образом там в 2-х местах месячные продажи сгруппируются и будут видны только квартальные тоталы (формулы введены, поэтому Excel это сам уверенно находит). Так вот проблема в том, что я не нашёл способа программно никак проверить, сделал юзер группировку или нет. Объект outline весьма странный, зацепиться не за что.
Я пытался пойти 2 вариантами:
1. Думал обратиться к объекту outline, когда группировки нет на листе и надеялся, что возникнет ненулевая err.number - нифига, ничего не возникает.
2. Думал через SendKey "{RIGHT}" смотреть на чём я стою (при однократном перемещении был бы разрыв по адрессации), но sendkey куда-то видимо не туда отправлял нажатие, вобщем тоже не сработало.
Нет ли у кого ещё идей?
с уважением,
Батьянов Денис
 
Добрый вечер.
Попробуйте так

Код
Public Sub InfoLevel()
    Dim pItem As Range
    For Each pItem In ActiveSheet.UsedRange.Columns
        If pItem.OutlineLevel > 1 Then
            MsgBox "Есть группировка по столбцам"
            Exit For
        End If
    Next
    For Each pItem In ActiveSheet.UsedRange.Rows
        If pItem.OutlineLevel > 1 Then
            MsgBox "Есть группировка по строкам"
            Exit For
        End If
    Next
End Sub
 
 
пока - тупо в лоб (увы, не шибко быстрый вариант)
Код
Function fHasOutline(w As Worksheet) As Boolean
  For Each r In w.UsedRange.Rows
    If r.OutlineLevel > 1 Then fHasOutline = True: Exit Function
  Next
End Function
для столбцов аналогично. можно и общую функцию написать.
Изменено: ктулху - 10.06.2014 18:53:52
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
51 секунда!!! йа тормоз  :cry:
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Огромное спасибо! Работает!  :)
с уважением,
Батьянов Денис
Страницы: 1
Наверх