Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Blattschutz
#1
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.
Antworten Top
#2
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
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste