Want to expand and collapse Excel groupings using VBA code

Does anyone know how to expand and collapse Excel groupings using VBA?
taduhFinancial Systems AnalystAsked:
Who is Participating?
 
jeveristConnect With a Mentor Commented:
taduh,

Sure!  Try your named range(s) with these two routines:

Sub TestHideOrShowDetail()
Dim ws As Worksheet, rng As Range

Set ws = ActiveSheet
Set rng = ws.[Detail1] ' "Detail1" is the named range on the sheet.  Change for the named range of interest

HideOrShowDetail DetailRange:=rng, ShowDetail:=True

End Sub

Sub HideOrShowDetail(ByRef DetailRange As Range, Optional ByVal ShowDetail As Boolean = False)
Dim rngrow As Range

For Each rngrow In DetailRange.Rows
    rngrow.ShowDetail = ShowDetail ' False to hide, True to show
Next rngrow

End Sub

Jim
0
 
Saurabh Singh TeotiaCommented:
Hi...Lets say i have group rows from row 1 to 13...Now here is the code which will do the trick..

Sub Hi()

    Rows("1:13").Select
    Selection.EntireRow.Hidden = True
    Rows("1:13").Select
    Selection.EntireRow.Hidden = False

End Sub

The first one will hide and second one will show as grouping is nothing else but hiding of rows or coloumns...now if u want to hide and unhide coloumns let me know...will tell u how to do tht...
0
 
taduhFinancial Systems AnalystAuthor Commented:
That might be a good alternate solution, but I've got groupings in place using the Excel groupings facility.  I click the plus sign indicator to manually expand the grouping and the minus sign indicator to manually collapse the grouping. I'm wondering if there is a way using VBA code to expand and collapse these groupings.
0
Introducing Cloud Class® training courses

Tech changes fast. You can learn faster. That’s why we’re bringing professional training courses to Experts Exchange. With a subscription, you can access all the Cloud Class® courses to expand your education, prep for certifications, and get top-notch instructions.

 
Saurabh Singh TeotiaCommented:
Well buddy thts not a alternate solution..thts the way how do u actually do this...coz see grouping cant be captured otherwise as its for hiding and unhiding the particular set of data selected..and by this way ur actually doing grouping in vb only..
0
 
Saurabh Singh TeotiaCommented:
Man no doubt Kevin is a Genius... or Guru or Master..but the only problem that i can see in that..it will group or ungroup all the groups which has been made in excel...
0
 
taduhFinancial Systems AnalystAuthor Commented:
rettisert,

Hi. I get an error running the following code:

   With Range("Group1")
      Me.Rows(.Row + .Rows.Count).ShowDetail = False
   End With

It says that the Me keyword can only be used in class modules. How do I make a module a class module?

Thanks.



0
 
jeveristCommented:
Hi taduh,

The 'Me' keyword is generally used in a Sheet module or a UserForm.  I think we should get rid of it and specify the worksheet and range directly.  BTW, the ShowDetail only works on one row or column at a time show we need to process each row seperately like this:

Dim ws As Worksheet, rngrow As Range

Set ws = ActiveSheet

For Each rngrow In ws.Rows("7:14") ' Change for the rows of interest
    rngrow.ShowDetail = False ' False to hide, True to show
Next rngrow

Jim
0
 
taduhFinancial Systems AnalystAuthor Commented:
Jim,

Hi. This will work, but let me ask about something that would make it better for me:

Is there any way to setup ws.rows("7:14") as a rangename and then do the same basic thing?  I'm trying to avoid maintaining specific row numbers in the code. If I could name rows 7 thru 14 as a range and then use the ShowDetail = false command to close the group, that would be perfect!

I tried but got an error. Let me know what you think.

Thanks!
0
 
taduhFinancial Systems AnalystAuthor Commented:
Jim,

Most excellent! Thank you very much! Works like a charm.

taduh
0
 
jeveristCommented:
taduh,

You're welcome and thanks for the grade!

Jim
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.