Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Daten sortieren verhindern





Frage

Hallo, ein gutes neues Jahr allen. Ich habe folgenden Frage an die Experten dieses tollen forums: Kann man in einer Tabelle das Sortieren von Daten verhindern z. B. mit einem Makro ? Oder anders gefragt, kann man vrehindern, das nach dem Sortieren von Daten, diese sortierte Tabelle gespeichert werden kann ? Gruß derneue

Antwort 1 von coros

Hallo derneue,

das kann man z.B. mit nachfolgendem Code realisieren. Kopiere ihn in das VBA Projekt "DieseArbeitsmappe"

Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
With Application
.CommandBars.FindControl(ID:=210).Enabled = True
.CommandBars.FindControl(ID:=211).Enabled = True
.CommandBars("Toolbar List").Enabled = True
.CommandBars("Worksheet Menu Bar").Controls("Daten").Controls("Sortieren...").Enabled = True
.EnableCancelKey = xlInterrupt
.CommandBars.DisableCustomize = False
End With
End Sub

Private Sub Workbook_Open()
With Application
.CommandBars.FindControl(ID:=210).Enabled = False
.CommandBars.FindControl(ID:=211).Enabled = False
.CommandBars("Toolbar List").Enabled = False
.CommandBars("Worksheet Menu Bar").Controls("Daten").Controls("Sortieren...").Enabled = False
.EnableCancelKey = xlDisabled
.CommandBars.DisableCustomize = True
End With
End Sub


Mit dem Code werden beim Öffnen der Datei die Funktionen für das sortieren, sowohl in der Menüleiste als auch in der Symbolleiste, deaktiviert. Außerdem werden alle Funktionen, mit denen z.B. eine neue Symbolleiste erstellen könnte, die dann wieder die Sortierbuttons enthalten könnten, deaktiviert.

Ich hoffe, Du hast das so gemeint. Bei Fragen oder Problemen melde Dich.

Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 1 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 2 von derneue

Hallo Oliver,
vielen Dank für Deine Antwort. Ich habe es nicht für möglich gehalten, das man das Sortieren sperren kann. Leider bringt Dein Makro eine Fehlermeldung beim Kompilieren in der Zeile:
.CommandBars.DisableCustomize = False
Habe leider keine Ahnung, was die einzelnen Befehle bedeuten, deshalb bitte ich Dich um Hilfe, da das Makro auch nicht das Sortieren verhindert.
Gruß
derneue

Antwort 3 von Event

Hallo

Vermutlich hast Du kein Excel2003, bei mir geht´s unter Excel2000(9) auch nicht.

Gruß

Antwort 4 von coros

Moin derneue,

sorry, da ich hier mit Excel2003 arbeite, ist das so drinnen. Lösche die Zeile, die Dir als Fehler gemeldet wird einfach aus beiden Codes heraus. Dieser ist dazu gewesen, da in Excel2003 am rechten Symbolleistenrand eine Schaltfläche integriert ist, mit der man die Symbolleiste anpassen kann, diese Schaltfläche inaktiv zu machen. Vor Excel 2002 gibt es diese Schaltfläche nicht und somit kennt Excel diesen Befehl dann auch nicht. Es kann u. U. auch sein, dass es mit dem Befehl

.EnableCancelKey = xlDisabled


ebenfalls Probleme gibt. Dann diesen auch heraus löschen. Ich kann das, wie schon geschrieben, hier im Moment nicht testen. Ansonsten muss ich Dich auf heute Abend vertrösten, da ich zu Hause alle Excelversionen am laufen habe.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 5 von derneue

Hi oliver,
leider klappt es immer noch nicht. Außerdem bekomme ich jetzt eine Fehlermeldung in dieser Zeile:
.CommandBars.FindControl(ID:=211).Enabled = True
Grüße von
derneue

Antwort 6 von coros

Nabend derneue,

mit welcher Excelversion arbeitest Du?

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 7 von derneue

Hallo Oliver,
mit Excel 2000 ( Windows NT ).
Mfg
derneue

Antwort 8 von coros

Morgen derneue,

komisch, also ich habe das jetzt mal in den Versionen Excel97, 2000, 2002 und natürlich auch unter 2003 getestet. Bei allen Varianten funktionierte das Makro. Das einzige was nicht funktionierte war eben der Befehl

.CommandBars.DisableCustomize

Warum der bei Dir nicht funktioniert hatte ich ja schon erklärt. Da dieser Befehl die Funktion "Anpassen" bei Excel2002 und 2003 deaktiviert, muss bei Excel2000 der Befehl folgendermaßen lauten

.CommandBars("Worksheet Menu Bar").Controls("Extras").Controls("Anpassen...").Enabled

Somit lautet der Code dann:

Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
With Application
.CommandBars.FindControl(ID:=210).Enabled = True
.CommandBars.FindControl(ID:=211).Enabled = True
.CommandBars("Toolbar List").Enabled = True
.CommandBars("Worksheet Menu Bar").Controls("Daten").Controls("Sortieren...").Enabled = True
.EnableCancelKey = xlInterrupt
.CommandBars("Worksheet Menu Bar").Controls("Extras").Controls("Anpassen...").Enabled = True
End With
End Sub

Private Sub Workbook_Open()
With Application
.CommandBars.FindControl(ID:=210).Enabled = False
.CommandBars.FindControl(ID:=211).Enabled = False
.CommandBars("Toolbar List").Enabled = False
.CommandBars("Worksheet Menu Bar").Controls("Daten").Controls("Sortieren...").Enabled = False
.EnableCancelKey = xlDisabled
.CommandBars("Worksheet Menu Bar").Controls("Extras").Controls("Anpassen...").Enabled = False
End With
End Sub


Der Rest funktioniert unter den oben genannten Versionen ohne Probleme.

Sollten weiterhin Fehler bei Dir auftreten, dann setze den Cursor mal ganz an den Zeilenanfang der Zeile, die als fehlerhaft gelb markiert wird und kommentiere diese aus. Das erreichst Du, indem Du die die Tastenkombination Shift und Raute (#) betätigst. Der auskommentierte text ändert dann seine Farbe und wird grün.

Warum diese Fehler dann bei Dir auftreten, kann ich von hier leider so einfach nicht beurteilen.

Ich hoffe, es klappt. Wenn nicht, dann bitte melden.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 9 von derneue

Hallo Oliver,
habe deine Lösung nochmal getestet. Funzt einwandfrei. Vielen Dank nochmal und schönes Wochenende noch.
Mfg
derneue