Excel-Berechtigungen im Makro mit einbauen?

Hallo zusammen,

ich habe ein Excel-Sheet gefertigt in die fortlaufend Daten erfasst werden sollen (= Bücherliste). Dass dabei keine bereits erfassten Daten überschrieben werden, habe ich folgendes Makro gebastelt und einem Button zugeordnet:

Sub sperren()
On Error Resume Next
Dim zelle As Range
ActiveSheet.Unprotect Password:=„test“
For Each zelle In ActiveSheet.UsedRange.Cells
zelle.Locked = (zelle.Value „“)
Next
ActiveSheet.Protect Password:=„test“
End Sub

So kann immer in den leeren, ungeschützten Zellen eingetragen und ergänzt werden. (Hat mich viel Schweiß gekostet…)

Nun ist es aber so, dass in den geschützten Bereichen nicht gefiltert oder gesucht werden kann, da beim Schutz nicht eingestellt werden kann, dass man Sortieren und den Autofilter verwenden kann etc.

Und da komme ich jetzt irgendwie nicht mehr weiter und hoffe, dass mir vielleicht hier jemand helfen kann…

Wie kann ich in dem obigen Makro noch einfügen, dass man die Berechtigung zum Filtern und Sortieren etc. hat?

Würde mich sehr über eine Lösung freuen, da ich irgendwie bisher nichts gefunden habe, was mir weiter hilft.

Vielen Dank schonmal!

Viele Grüße
Chipy

XL Version?
Hallo,

welche Version von Excel hast du? Ab XL2003 kannst du die Filterfunktion freigeben.

 ActiveSheet.Protect contents:=True AllowFiltering:=True

Sortieren funktioniert allerdings auf diese Weise leider nicht.

Dafür mußt du zunächst den Blattschutz aufheben, die Sortierung durchführen und dann den Schutz wieder aktivieren.

Für solche Sachen schreibe ich mir immer eine Funktion, die das für mich übernimmt:

private function SheetProtect(bProt as Boolean)
 ActiveSheet.Protect AllowFiltering:=bProt 'Weitere Anweisungen nicht True/False sondern bProt)
end function

Aufruf erfolgt dann über

 SheetProtect True 'zum Sperren
 SheetProtect False 'zum Entsperren

Sortieren kannst du über die Sort Anweisung.

Range("A1:C6").Sort key1:="erste Zelle in der Spalte nach der sortiert wird", order1:=xlAscending bzw. xlDescending (Aufsteigend/Absteigend)

Wenn der Sortierbereich gleich ist, kannst du das vereinfachen zu:

Private Function MySort(col As String)
 SheetProtect False
 Range("A1:C6").Sort key1:=Range(col & "1"), Order1:=xlAscending
 SheetProtect True
End Function

Aufruf dann über:

 MySort ("A") 'sortiert automatisch nach SPalte A

LG

Hallo Chipy,

…habe ich folgendes Makro gebastelt und einem Button zugeordnet: …

erscheint mir unlogisch. So 'was würde ich eher in eine UserForm tun und eine Schaltfläche den Datensatz übernehmen lassen.

So kann immer in den leeren, ungeschützten Zellen eingetragen und ergänzt werden. (Hat mich viel Schweiß gekostet…)

Und was passiert bei Fehleingaben? Die zu korrigieren scheint mir großen Aufwand zu machen.

Und da komme ich jetzt irgendwie nicht mehr weiter… Wie kann ich in dem obigen Makro noch einfügen, dass man die Berechtigung zum Filtern und Sortieren etc. hat?

Die Antwort darauf hast Du schon erhalten.

Ich würde allerdings komplett anders vorgehen. In Excel gibt es ein wenig bekanntes Feature, die Datenmaske. Die funktioniert so:

Wenn in einem Sheet eine Tabelle mit dem reservierten Namen Datenbank (oder Database) existiert, zeigt der Befehl Daten > Maske einen Eingabedialog an. Dieser Dialog nimmt die Zellen der ersten Zeile von Datenbank als Feldnamen und die Zellen der weiteren Zeilen als Feldwerte. Innerhalb der Datenmaske kann man sortieren, suchen und löschen (sogar mit Rückfrage). Besonders genial finde ich, daß jeder Datensatz sofort in das Sheet geschrieben wird. Und noch genialer ist, daß die Formatierung des letzten Datensatzes auf den neuerfaßten übertragen wird.
Und noch viel genialer: die Datenmaske bezieht sich auf das Sheet, in einer Arbeitsmappe kann somit auf jedem Sheet eine andere Datenbank bearbeitet werden.

Der einzige Wermutstropfen ist, daß die Datenbank nicht mehr als 32 Spalten enthalten darf (was bei Deiner Bücherliste kein Problem sein dürfte).

Aufgerufen wird die Datenmaske mit ActiveSheet.ShowDataForm. Packt man das in eine Entsperr-/Sperr-Funktion (und die Lösung mit dem Filtern wie vorgeschlagen in einen zweiten), sollten alle Deine Wünsche erfüllt sein.

Arbeitest Du mit Formatvorlagen, mußt Du ein bißchen experimentieren. Aber nur ein bißchen, dann kannst Du mit der Datenmaske auch gleich druckreife Bücherlisten erzeugen.

HTH.

Markus
_______________
Und Sterne sammel’ ich noch immer…

Hallo zusammen!

Ganz lieben Dank für die schnellen Antworten!!! Das ist aber echt super nett!

Ich glaube, das hilft mir echt ein riesen Stück weiter - DANKE!

Also ich habe Excel 2003. Und eigentlich erst seit einiger Zeit begonnen, mich damit auch mal näher auseinander zu setzen. Insofern werde ich mich da später gleich mal dransetzen und ausprobieren… Finde es inzwischen ein echt interessantes Programm mit unglaublichen Möglichkeiten.

Das mit der UserForm probiere ich dann auch gleich mal. Klingt gut - und soweit hatte ich noch gar nicht gedacht…

Viele Grüße
Chipy2011