|
Tipp 0493
|
Zellgruppierungen mit Tabellenschutz
|
|
|
Autor/Einsender: Datum: |
|
Alexander Fross 09.05.2006 |
|
Entwicklungsumgebung: |
|
Excel 2000 |
|
|
Excel bietet keine Standard-Eigenschaft an, mit der man beim Aktivieren des Tabellenschutzes dem Anwender die Möglichkeit bieten kann,
die Zeilen- und Spaltengruppierungen (Gliederung) weiterhin zu benutzen. Dies kann nur mit VBA realisiert werden, indem man bei jedem Öffnen der
Arbeitsmappe die Eigenschaft EnableOutlining der Tabelle auf True setzt. Des Weiteren muss beim Aktivieren des
Tabellenschutzes der Parameter UserInterfaceOnly ebenfalls auf True gesetzt werden. Nur wenn diese Kriterien
erfüllt sind, kann der Anwender bei aktivem Tabellenschutz die Gruppierungen ein- und ausblenden.
|
Da die Eigenschaft EnableOutlining beim Schließen der Arbeitsmappe automatisch auf False zurückgesetzt wird, muss dieses
Prozedere bei jedem Öffnen der Arbeitsmappe wiederholt werden.
|
Um dem Anwender bezüglich der Gruppierungen ein besseres Handling zu verschaffen, kann in diesem Beispiel die Zeilengruppierungen mit
einem Doppelklick der Maus ein- bzw. ausgeblendet werden. Das gleiche funktioniert bei den Spaltengruppierungen mit einem Rechtsklick
der Maustaste. Aufgrund dieser Funktionalität eignet sich dieser Code unter Umständen nur für Tabellen, die einzig für die Ansicht jedoch
nicht für die Eingabe bestimmt sind, da Rechtsklick und Doppelklick nur noch beschränkt funktionieren.
|
|
Code im Codebereich von DieseArbeitsmappe bzw. ThisWorkbook |
|
|
Option Explicit
Private Const sPASSWORD As String = "Passwort"
Private bCellDragAndDrop As Boolean
Private Sub Workbook_Open()
Dim objWks As Worksheet
On Error GoTo ErrPassword
For Each objWks In ThisWorkbook.Worksheets
With objWks
.Unprotect Password:=sPASSWORD
.EnableOutlining = True
.Protect Password:=sPASSWORD, UserInterfaceOnly:=True
End With
Next objWks
ThisWorkbook.Saved = True
Exit Sub
ErrPassword:
MsgBox "Ein unbekannter Fehler ist aufgetreten!" & _
String(2, vbCr) & "Quelle" & vbTab & Err.Source & vbCr & _
"Fehler" & vbTab & Err.Description, vbCritical, _
"Fehler-Nr. " & Err.Number
End Sub
Private Sub Workbook_Activate()
bCellDragAndDrop = Application.CellDragAndDrop
Application.CellDragAndDrop = False
End Sub
Private Sub Workbook_Deactivate()
Application.CellDragAndDrop = bCellDragAndDrop
End Sub
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, _
ByVal Target As Range, Cancel As Boolean)
Change_Group Sh, Target.EntireColumn, Cancel
End Sub
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, _
ByVal Target As Range, Cancel As Boolean)
Change_Group Sh, Target.EntireRow, Cancel
End Sub
Private Sub Change_Group(ByRef rSh As Object, _
ByRef rRng As Range, ByRef rbCancel As Boolean)
If TypeOf rSh Is Worksheet Then
On Error GoTo ErrWrongPassword
rSh.Unprotect Password:=sPASSWORD
On Error Resume Next
rRng.ShowDetail = Not rRng.ShowDetail
If Err.Number = 0 Then
rbCancel = True
End If
rSh.Protect Password:=sPASSWORD, UserInterfaceOnly:=True
End If
ErrWrongPassword:
End Sub
|
|
|
Windows-Version |
95 |
|
|
98 |
|
|
ME |
|
|
NT |
|
|
2000 |
|
|
XP |
|
|
Vista |
|
|
Win
7 |
|
|
|
Excel-Version |
95 |
|
|
97 |
|
|
2000 |
|
|
2002
(XP) |
|
|
2003 |
|
|
2007 |
|
|
2010 |
|
|
|
|
Download (41,1
kB)
|
Downloads bisher: [ 416 ]
|
|
|