Solved

Want to expand and collapse Excel groupings using VBA code

Posted on 2007-12-06
11
6,708 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
Technology Partners: 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 500 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

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

Since upgrading to Office 2013 or higher installing the Smart Indenter addin will fail. This article will explain how to install it so it will work regardless of the Office version installed.
Some code to ensure data integrity when using macros within Excel. Also included code that helps secure your data within an Excel workbook.
Graphs within dashboards are meant to be dynamic, representing data from a period of time that will change each time the dashboard is updated with new data. Rather than update each graph to point to a different set within a static set of data, t…
This Micro Tutorial demonstrates using Microsoft Excel pivot tables, how to reverse engineer competitors' marketing strategies through backlinks.

749 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