Home |
Search |
Today's Posts |
#9
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
This seems to work flawlessly! Thanks so much, Jacob, for seeing it through
to the end!!! Ryan-- -- Ryan--- If this information was helpful, please indicate this by clicking ''Yes''. "Jacob Skaria" wrote: Hi Ryan Revised solution for grouping. Insert a new module and copy the below code. Number of indent levels is not fixed however in the below code either you change the upper bound of the array OR as in the previous solution you can re-dimension it at run-time. But i assume it wont run to more than 10 indent levels..I have tested with few test cases. Try and feedback... Dim arrINT(10) As Long Sub GroupbyIndexLevels2() Dim lngRow As Long Dim intCIL As Integer Dim intPIL As Integer For lngRow = 1 To Cells(Rows.Count, "B").End(xlUp).Row intCIL = Range("B" & lngRow).IndentLevel If intCIL 0 Then If intCIL intPIL Then arrINT(intCIL) = lngRow ElseIf intCIL < intPIL Then GroupRows2 intCIL, lngRow End If intPIL = intCIL End If Next lngRow GroupRows2 1, lngRow ActiveSheet.Outline.ShowLevels RowLevels:=1 End Sub Sub GroupRows2(intIND As Integer, lngRow As Long) Dim intTemp As Integer For intTemp = intIND + 1 To UBound(arrINT) If arrINT(intTemp) < 0 Then Rows(arrINT(intTemp) & ":" & lngRow - 1).Group arrINT(intTemp) = 0 End If Next End Sub If this post helps click Yes --------------- Jacob Skaria "ryguy7272" wrote: I was working with the below code for a few weeks: Sub Grp() Dim lngRow As Long Sheets("Sheet1").Select For i = 10 To 0 Step -2 For lngRow = Cells(Rows.Count, "B").End(xlUp).Row To 9 Step -1 If Range("B" & lngRow) < "" And Left(Range("B" & lngRow), i) = Space(i) Then Range("B" & lngRow & ":B" & lngRow).Rows.Group End If Next lngRow Next i End Sub It works great for grouping cells based on spaces in front of the cells (0, 2, 4, 6, 8, or 10 spaces). What Im trying to do now is modify the code above to group cells based on the IndentLevel. I am trying to modify this now (to do grouping based on IndentLevel): Sub Grp() Dim lngRow As Long Sheets("Sheet1").Select For i = 6 To 0 Step -1 For lngRow = Cells(Rows.Count, "B").End(xlUp).Row To 2 Step -1 If Range("B" & lngRow).IndentLevel 0 And Range("B" & lngRow).IndentLevel = (i) Then Range("B" & lngRow & ":B" & lngRow).Rows.Group End If Next lngRow Next i End Sub All this code does though, is give me one giant grouping; no sub-groups. Jacob Skaria was kind enough to give me some code a few days ago. When I ran it, it seemed to work on a small sample, but on a larger sample it didnt group appropriately. Specifically, it always seems to miss the last grouping in any group. Ive spent a couple of hours on this, and havent been able to figure it out yet. Does anyone know how to do this grouping, and get the last group in a list, so that it rolls up into the whole list appropriately? Thanks, Ryan--- -- Ryan--- If this information was helpful, please indicate this by clicking ''Yes''. |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Indent based on character length | Excel Discussion (Misc queries) | |||
Indent based on Entry | Excel Discussion (Misc queries) | |||
Indent and format based on Col A | Excel Programming | |||
Macro to Outline based on Indent Level | Excel Programming | |||
Excel VBA - Best way to indent one column based on another | Excel Programming |