2017-06-29 7 views
6

Ich habe dieses Blatt, wo ich Advanced Filter verwenden, um Informationen in einem anderen Blatt in meiner Arbeitsmappe zu suchen.Excel: erweiterte Filter mit geschütztem Blatt

Darüber hinaus möchte ich Blatt zu schützen, weil ich einige Formeln auf Zellen haben, die Menschen nicht ändern können, aber ich habe auch Zellen, die der Benutzer mit einigen Informationen kommen sollte, dann habe ich diese Zellen bereits als gesperrt

enter image description here

Das Problem ist, wenn ich versuche, meine Advanced Filter laufen zu lassen, wenn ich meine „Filter“ klicken: Sie unten sehen können. Ich erhalte eine Fehlermeldung, die besagt:

Erweiterter Filter kann nicht im geschützten Blatt ausgeführt werden.

So assoziiert ich diesen Code auf meine Schaltfläche "Filter":

Private Sub Filtrar_Click() 

Dim wks As Worksheet 

For Each wks In ActiveWorkbook.Worksheets 
    wks.Unprotect "Password" 
    Call LimparAntes 
    wks.Protect "Password", UserInterfaceOnly:=True 
Next 

End Sub 

Die LimparAntes Unter ist die Routine, die Advanced Filter ruft, aber ich habe immer noch den gleichen Fehler, so bin ich in Zweifel. Der Code ist unten:

Sub LimparAntes() 
' 
' LimparAntes Macro 
' 

' 
Dim Lastrow As Long 
Lastrow = Sheets("AUX").Range("A" & rows.Count).End(xlUp).Row 

    Sheets("AUX").Range("A1:K" & Lastrow).AdvancedFilter Action:=xlFilterCopy, _ 
     CriteriaRange:=Sheets("CONSULTA").Range("D34:I35"), CopyToRange:=Sheets("CONSULTA").Range("B40:K40"), Unique:= _ 
     False 
    Sheets("CONSULTA").Range("F37").Select 

End Sub 

Ist das der richtige Weg, das zu tun? Ich habe viele Nachforschungen angestellt, aber ich konnte niemanden mit dem gleichen Problem mit Advanced Filter finden, da ich nicht einmal weiß, ob es möglich ist, das zu erreichen, was ich möchte.

+0

Entsperrt Zellen sind, na ja, * entsperrt *, wenn das Blatt geschützt ist. Wenn der Benutzer NICHT in der Lage sein soll, die Formeln zu manipulieren, müssen diese Zellen gesperrt sein. Was macht 'LimparAntes'? –

+0

@ Mat'sMug Entschuldigung, das habe ich schon korrigiert. Ich habe Zellen, die für den Benutzer entsperrt werden müssen, kann den Wert dort ändern. 'LimparAntes' ist der Name des Subs, der meinen erweiterten Filter aufruft, um nach meinen Kriterien zu suchen. Ich habe die Frage auch mit seinem Code bearbeitet. – paulinhax

+1

Ist das * Arbeitsbuch * ebenfalls geschützt? –

Antwort

5

Ist das alles der Code?

gerade von Blick auf den Code, ohne diese auszuführen, sollten die ersten Schritte sein, alle Blätter zu entsperren/Aufheben des Schutzes, indem Sie:

Dim wks As Worksheet 

For Each wks In ActiveWorkbook.Worksheets 
    wks.Unprotect "Password" 
Next 

Dann nach Abschluss sollten Sie LimparAntes laufen(). Dadurch werden die von Ihnen benötigten Daten kopiert/gefiltert. Und dann solltest du endlich die Laken verschließen.

Private Sub Filtrar_Click() 

Dim wks As Worksheet 

For Each wks In ActiveWorkbook.Worksheets 
    wks.Unprotect "Password" 'Unprotect all sheets first 
Next 

Call LimparAntes  'Call filter sub 

For Each wks In ActiveWorkbook.Worksheets 
    wks.Protect "Password", UserInterfaceOnly:=True  'Re-Protect all sheets 
Next 

End Sub 

Versuchen Sie dies und sehen Sie, ob es den Fehler entfernt. Wenn nicht, habe ich gelesen, dass das Festlegen der Autofilter-Eigenschaft auf True vor dem Sperren des Blattes von Vorteil sein kann.

+0

Entschuldigen Sie, dass Sie sich lange Zeit genommen haben, aber es hat funktioniert! Vielen Dank, ich habe nicht bemerkt, dass ich den kompletten Code nochmal wiederholen soll, das waren meine Zweifel. – paulinhax

Verwandte Themen