Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
792to796
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
792to796
792to796
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Autofilter / Blattschutz VBA

Autofilter / Blattschutz VBA
22.08.2006 09:56:55
Stephan
Hallo
ich habe schon einige Beitrage zum Thema Autofilter mit Blattschutz im Forum gelesen.
In den Lösungen wird immer der Vorschlag gemacht den Blattschutz vorher aufzuheben und wieder neu zu setzten. Ist ja auch O.K.
Ich arbeite mit Excel 2003. Was ich nicht verstehen ist, warum ich den Filter ohne Makro im geschützen Blatt benutzen kann aber nicht durch ein Markro. Ich habe beim Schutz den Haken bei AutoFilter verwenden gesetzt.
Beim Befehl "Selection.AutoFilter Field:=1, Criteria1:="1"" bleibt der Makro hängen
Ich möchte aber mein Blattschutzpasswort nicht im Marko verwenden, und ich möchte auch nicht das Makro ausblenden oder schützen.
Güße Stephan

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Autofilter / Blattschutz VBA
22.08.2006 10:25:49
Rene
Hallo!
Schau Dir hierzu mal das folgende Makro an, möglicherweise hilft Dir das weiter.

Sub BlattschutzSetzen()
Sheets("Tabelle3").Protect "Dein Passwort", userinterfaceonly:=True
Sheets("Tabelle3").EnableAutoFilter = True
End Sub

Eine andere Möglichkeit für die Lösung Deines Problems gibt es nicht.
Gruß, Rene
AW: Autofilter / Blattschutz VBA
22.08.2006 10:32:11
René
Hallo Stephan,
du kannst das über einen Umweg ganz einfach machen, in dem dieses MAkro nimmst und damit einen Autofilter simmulierst,
du blendest du Zeile die du nicht willst einfach aus.
Im Blattschutz stellst du ein, daß Zeilen formatiert werden können und los gehts.
Gruß
René
Code:

Sub filter()
Dim i As Integer
Dim a As Integer
Dim AktZelle As Range
Dim NextZelle As Range
i = ActiveSheet.UsedRange.Rows.Count
Set AktZelle = [A1]
For a = 1 To i
Set NextZelle = AktZelle.Offset(1, 0)
If AktZelle.Value <> "Fritz" Then
AktZelle.EntireRow.Hidden = True
End If
Set AktZelle = NextZelle
Next
End Sub

Anzeige
AW: Autofilter / Blattschutz VBA
22.08.2006 19:07:31
Stephan
Hallo Rene,
danke für den Tip mit dem programmierten Filter. Hat super geklappt.
Gruß Stephan
AW: Autofilter / Blattschutz VBA
23.08.2006 09:25:02
Rene
Hallo Stephan,
freut mich wenn ich helfen konnte! :-)
Und immer schön um die Ecke denken! ;-)
Gruß
René
AW: Autofilter / Blattschutz VBA
29.08.2006 11:38:20
Hendrik
Es geht auch eleganter:
Im Code zur zugehörigen Tabelle trägt man ein:

Private Sub Worksheet_Activate()
ActiveSheet.Protect UserInterfaceOnly:=True
End Sub

Das bewirkt, dass die Tabelle beim Aktivieren geschützt wird und nur die Aktionen vom Benutzer mit dem Schutz versehen sind, Makros können machen, was sie wollen.
Willst Du, dass auch die Benutzer den Filter verwenden dürfen, kannst Du:

Private Sub Worksheet_Activate()
ActiveSheet.Protect AllowFiltering:=True, UserInterfaceOnly:=True
End Sub

nehmen.
Um sicherzugehen, dass das Blatt auch aktiviert wird, kannst Du im Code der Arbeitsmappe

Private Sub Workbook_Open()
Sheets("Tabellenblatt").Activate
End Sub

Gruß
Hendrik
Anzeige
AW: Autofilter / Blattschutz VBA
29.08.2006 13:33:39
Stephan
Hallo Hendrik,
danke für Deinen Tipp. Ist eine super Lösung, klappt auch. Leider habe ich schon ca. 90 Blätter in der Excel-Datei und ich müsste die Prozedur ja für alle Blätter machen (oder).
Ich werde Deinen Vorschlag beim nächsten Mal berücksichtigen.
Ciao Stephan
AW: Autofilter / Blattschutz VBA
29.08.2006 17:48:09
Hendrik
Du kannst auch die Zeile
ActiveSheet.Protect UserInterfaceOnly:=True
in das entsprechende Makro einfügen, das müsste auch funktionieren.
Gruß
Hendrik
AW: Autofilter / Blattschutz VBA
29.08.2006 20:33:09
Stephan
Hallo Hendrik,
Du meinst ohne im Markro direkt das Tabellenblatt anzusprechen.
Habe ich gemacht. Klappt mit dem Filter aber nur mit diesem Befehl
ActiveSheet.Protect AllowFiltering:=True, UserInterfaceOnly:=True
Danke und Grüße Stephan
Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige