Visa enskilda grupperingars detaljer i skyddat arbetsblad
Här demonstreras ett relativt enkelt förfarande för att visa detaljer i en disposition där vi endast vill tillåta användaren kan välja månad. Noterbart är att ett XL4-makro används för att visa en månads underliggande data.
Exemplet har sin utgångspunkt i följande disposition:
Proceduren nedan stänger eventuella öppnade grupperingar, inhämtar önskad månad från användaren och visar den valda månadens detaljer.
Option Explicit
Sub Visa_Delgrupp()
'© 2003 Alla rättigheter XL-Dennis
Dim stManad As String, stRad As String
Dim vaManader As Variant
Dim i As Long, lnCheck As Long
Dim bFlag As Boolean
Dim wsBlad As Worksheet
Dim rnManader As Range, rnHitta As Range
Set wsBlad = ActiveSheet
With wsBlad
Set rnManader = .Range(.Range("A2"), .Range("A65536").End(xlUp))
End With
vaManader = Array("Jan", "Feb", "Mar", "Apr")
Application.ScreenUpdating = False
With wsBlad
.Unprotect Password:=""
'Ser till att eventuella öppna grupperingar stängs.
.Outline.ShowLevels RowLevels:=1
End With
'Tilldelar den logiska variabeln ett startvärde samt den
'andra nödvändiga variabeln.bFlag = False
lnCheck = 0
'Här använder vi två loopar för kontroll av inmatat värde.
Do While bFlag <> True
Do While stManad = "" Or lnCheck <> 1
stManad = Application.InputBox("Ange önskad månad", "Månadsdetaljer", Type:=2)
'Kontroll om användaren avbröt dialogrutan eller inte.
If stManad = "Falskt" Then
ActiveSheet.Protect Password:=""
Exit Sub
End If
'Kontroll av det inmatade månadsvärdet.
For i = LBound(vaManader) To UBound(vaManader)
If stManad = vaManader(i) Then
'Variabeln tilldelas värdet 1 för att avsluta den innersta loopen.
lnCheck = 1
'Om det inmatade värdet återfinns i matrisen tilldelas den logiska
'variabeln värdet Sant.bFlag = True
End If
Next i
Loop
Loop
'Identifiera vilken grupp som ska expanderas.
'Här vet vi redan att det inmatade värdet finns i cellområdet genom kontrollen ovan.With rnManader
Set rnHitta = .Find(What:=stManad, LookIn:=xlWhole)
If Not rnHitta Is Nothing Then
stRad = rnHitta.Row
End If
End With
'Här används ett XL4-makro för att expandera den önskade månadsgruppen.
ExecuteExcel4Macro "SHOW.DETAIL(1," & stRad & ")"
wsBlad.Protect Password:=""
Application.ScreenUpdating = True
End Sub
Så här uppställning ut efter det att ovanstående procedur har exekverats och där månaden mars angavs som önskad månad: