11.10.2016, 10:30
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.
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.
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.