Code for detail drill down / drill up article
This code is provided to simplify copying and pasting of the
annotated code from
my article on
drilling up and down in an Excel report.To use, set up the
Summary and Detail sheets using the download file as an example.
Copy this code into the sheet module of your summary sheet
(right-click the sheet tab, View Code, and paste)
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Cells(2, Target.Column) = "Summary" Then If Cells(3, Target.Column) = "Not expanded" Then Insert_Block ElseIf Cells(3, Target.Column) = "Expanded" Then Delete_Block End If End If End Sub
Copy this code into a new module in your workbook (press Alt+F11
to go to the code window, then Insert > Module and paste. To close
the code window press Alt+Q)
Option Explicit Const SUMMARY_COLOR = 48 Const DETAIL_COLOR = 36 Sub Insert_Block() Dim i As Integer Dim CurCol As Long Dim FirstDetailCol As Long CurCol = ActiveCell.Column Cells(1, CurCol).EntireColumn.Copy Cells(1, CurCol).Resize(1, 6).Insert shift:=xlToRight Cells(4, CurCol).Select FirstDetailCol = WorksheetFunction.Match(ActiveCell.Value, _ Sheets("Forecast Detail").Range("1:1"), 0) Sheets("Forecast Detail").Cells(2, FirstDetailCol).Resize(1, 6).Copy ActiveCell.PasteSpecial Paste:=xlPasteValuesAndNumberFormats Selection.Offset(-2, 0).Value = "Detail" Selection.Offset(-1, 0).ClearContents Selection.Interior.ColorIndex = DETAIL_COLOR ActiveCell.Offset(-1, 6).Value = "Expanded" End Sub Sub Delete_Block() Dim i As Integer Dim CurCol As Long Dim FirstDetailCol As Long CurCol = ActiveCell.Column Cells(1, CurCol - 6).Resize(1, 6).EntireColumn.Delete shift:=xlToLeft CurCol = CurCol - 6 Cells(4, CurCol).Select Selection.Interior.ColorIndex = SUMMARY_COLOR ActiveCell.Offset(-1, 0).Value = "Not expanded" End Sub
To drill up or down, double-click any cell in a summary column.