View Single Post
  #2   Report Post  
Posted to microsoft.public.excel.programming
Jim Cone Jim Cone is offline
external usenet poster
 
Posts: 3,290
Default Determine the number of outline levels using vba

Jamie,
There is probably a better way.
Please test this thoroughly before distributing the code to the entire company. <g
--
Jim Cone
San Francisco, USA
http://www.realezsites.com/bus/primitivesoftware

Sub HowManyLevels()
'Determines the number of outline levels (8 or less)
'Jim Cone - San Francisco, USA - October 2006
Dim lngNewCount As Long
Dim lngOldCount As Long
Dim N As Long
Dim rngArea As Excel.Range
Dim rngVisible As Excel.Range

N = 8 'Throws error on xl2002 if 8.
lngOldCount = ActiveSheet.UsedRange.Rows.Count

Do
ActiveSheet.Outline.ShowLevels rowlevels:=N
Set rngVisible = ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisib le)
For Each rngArea In rngVisible.Areas
lngNewCount = lngNewCount + rngArea.Rows.Count
Next

'The first instance where rows are hidden.
If lngNewCount < lngOldCount Then
MsgBox N + 1 & " Levels"
Exit Do
Else
'Reset counters
lngOldCount = lngNewCount
lngNewCount = 0
End If
'Set to the next level
N = N - 1
Loop

Set rngArea = Nothing
Set rngVisible = Nothing
End Sub
'-------------


"Jamie Richards"

wrote in message
Hi Folks,
Does anyone know if it possible to count the number of levels in an Excel
worksheet outline using code? For example in the same way you may count rows
using "ActiveSheet.UsedRange.Rows.Count".
I want to use this feature to assist with showing and hiding grouped rows in
a protected worksheet.
TIA!
Jamie