?
Solved

Want to expand and collapse Excel groupings using VBA code

Posted on 2007-12-06
11
Medium Priority
?
7,267 Views
Last Modified: 2012-06-27
Does anyone know how to expand and collapse Excel groupings using VBA?
0
Comment
Question by:taduh
  • 4
  • 3
  • 3
  • +1
11 Comments
 
LVL 59

Expert Comment

by:Saurabh Singh Teotia
ID: 20423780
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
 

Author Comment

by:taduh
ID: 20423865
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
 
LVL 59

Expert Comment

by:Saurabh Singh Teotia
ID: 20423885
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
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 13

Expert Comment

by:rettiseert
ID: 20423917
0
 
LVL 59

Expert Comment

by:Saurabh Singh Teotia
ID: 20423935
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
 

Author Comment

by:taduh
ID: 20427136
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
 
LVL 38

Expert Comment

by:jeverist
ID: 20427380
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
 

Author Comment

by:taduh
ID: 20427535
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
 
LVL 38

Accepted Solution

by:
jeverist earned 2000 total points
ID: 20427712
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
 

Author Comment

by:taduh
ID: 20427957
Jim,

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

taduh
0
 
LVL 38

Expert Comment

by:jeverist
ID: 20428340
taduh,

You're welcome and thanks for the grade!

Jim
0

Featured Post

Hire Technology Freelancers with Gigs

Work with freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely, and get projects done right.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article describes how you can use Custom Document Properties to store settings and other information in your workbook so that they will be available the next time you open the workbook.
After seeing numerous questions for Dynamic Data Validation I notice that most have used Visual Basic to solve the problem. This suggestion is purely formula based and can be used in multiple rows.
This Micro Tutorial will demonstrate in Microsoft Excel how to add style and sexy appeal to horizontal bar charts.
Many functions in Excel can make decisions. The most simple of these is the IF function: it returns a value depending on whether a condition you describe is true or false. Once you get the hang of using the IF function, you will find it easier to us…

807 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question