Clever-Excel-Forum

Normale Version: Blattschutz
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo, ich habe zwei kleine Probleme. 
In dem Code moechte ich den Filter auf alle 12 Tabellen (Monate) anwenden, wenn auf A19 doppelklick durchgefuehrt wird, leider oeffnet er zwar das zweite Blatt, bleibt dann aber beim Blattschutz haengen. 
Die Arbeitsmappe ist auch freigegeben.
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
       
  Application.DisplayAlerts = False
  ActiveWorkbook.ExclusiveAccess
  Application.DisplayAlerts = True

   ActiveSheet.Unprotect ""
   Dim iX As Integer, iXF As Integer
   Dim arrFilter()
     If Target.Address <> "$A$19" Then Exit Sub
   Cancel = True

   If ActiveSheet.AutoFilterMode = False Then Exit Sub
   Application.EnableEvents = False
   With ActiveSheet.AutoFilter
       With .Filters
       ReDim arrFilter(1 To .Count, 1 To 3)
       For iXF = 1 To .Count
           With .Item(iXF)
               If .On Then
                   arrFilter(iXF, 1) = .Criteria1
                   If .Operator Then
                       arrFilter(iXF, 2) = .Operator
                       arrFilter(iXF, 3) = .Criteria2
                   End If
               End If
           End With
       Next
       End With
   End With

   For i = 1 To 12
       With Worksheets(i)
Application.DisplayAlerts = True

               ActiveSheet.Unprotect ""
         On Error Resume Next
           .ShowAllData
           On Error GoTo 0
     Application.DisplayAlerts = True

               ActiveSheet.Unprotect ""
       For iXF = 1 To UBound(arrFilter(), 1)
                  If Not IsEmpty(arrFilter(iXF, 1)) Then
             
                   If arrFilter(iXF, 2) Then
                       .Cells.AutoFilter field:=iXF, Criteria1:=arrFilter(iXF, 1), _
                        Operator:=arrFilter(iXF, 2), Criteria2:=arrFilter(iXF, 3)
                   Else
                       .Cells.AutoFilter field:=iXF, Criteria1:=arrFilter(iXF, 1)
                   End If
               End If
           Next iXF
           End With
     ActiveSheet.Protect Contents:=True, Scenarios:=True _
         , AllowFormattingCells:=True, AllowFiltering:=True, AllowSorting:=True, Password:="", DrawingObjects:=False
       ActiveSheet.Range("i9").Select
       Application.DisplayAlerts = False
   
Next i
   MsgBox " Autofilter auf allen Blättern" & vbCrLf & _
          "gemäss Blatt " & ActiveSheet.Name & " gesetzt!", _
          vbOKOnly + vbInformation, "Auto-Autofilter"
   Application.EnableEvents = True
End Sub


mein zweites Anliegen ist, ich muss das Blatt ja immer wieder schuetzen, den code dafuer habe ich schon in einem Modul 1 hinterlegt.

kann mir jemand sagen, wie ich dem Makro sagen kann das es zum schuetzen auf das modul zugreifen soll.


Vielen Dank, wenn mir jemand helfen kann.
Hallo

Sheet Unprotect bitte so schreiben, ohne "" !! - ActiveSheet.Unprotect
Das Blatt wird auch -ohne Passwort- geschützt, der Schutz kann aber manuell aufgehoben werden.
Sonst muss das PW als Text oder als Variable angegeben sein, z.B. in einer Public Const Anweisung

ActiveSheet.Unprotect "4711" oder ActiveSheet.Unprotect Pwort

mfg Gast 123