ich möchte eine Tabelle für unseren Sportverein erstellen. So etwas wie ein Kassenbuch. Ich möchte erreichen, dass die Zellen, in denen einmal ein Wert eingetragen wurde nicht mehr verändert werden können. Wenn man also bei einer "Buchung" versehentlich einen falschen Wert eingibt, soll man dies nicht wieder löschen können. Ich möchte fehlerhafte Buchungen nachvollziehen können.
Code erstellt und getestet in Office 12 - mit VBAHTML 12.6.0
Der Bereich A1 bis D10 des aktiven Blattes wird geschützt, so das keine Eingaben vorgenommen werden können. Ausserhalb dieses Bereiches sind Eingaben möglich.
Die Frage ist wast du genau absichern willst, es gibt 2 Möglichkeiten
1)Versehentliche Löschung/Änderung einer Zelle (oder Buchung) 2)Vorsätzlich Löschung/Änderung einer Zelle (oder Buchung)
Für 1) Sollte die Vorgestellte Lösung genügen Für 2) Sollte auf eine Datenbank (z.B. SQL Server) umgestellt werden ggf. mit Benutzerkontensteuerung und wenn du es richtig übertreiben willst mit nem WORM Laufwerk.
(09.09.2016, 10:29)Elkermito schrieb: Die Frage ist wast du genau absichern willst, es gibt 2 Möglichkeiten
1)Versehentliche Löschung/Änderung einer Zelle (oder Buchung) 2)Vorsätzlich Löschung/Änderung einer Zelle (oder Buchung)
Für 1) Sollte die Vorgestellte Lösung genügen Für 2) Sollte auf eine Datenbank (z.B. SQL Server) umgestellt werden ggf. mit Benutzerkontensteuerung und wenn du es richtig übertreiben willst mit nem WORM Laufwerk.
Schönen Dank erst einmal für eure schnellen Antworten!
Also ich möchte die Variante 2) vorsätzliche Löschung absichern.
Wenn ich das richtig verstehe, müßte ein Datenbankprogramm genutzt werden, denn Excel kann das auch durch Programmierung im VBA nicht. Mit solch einem Datenbankprogramm ist unser kleiner Club sicherlich überfordert.....
Dennoch recht herzlichen Dank für eure Mühen! Sonnige Grüße Thomas
Zitat:Wenn man also bei einer "Buchung" versehentlich einen falschen Wert eingibt, soll man dies nicht wieder löschen können. Ich möchte fehlerhafte Buchungen nachvollziehen können.
das ist für mich wiederum nicht nachvollziehbar. Falls bei einer Buchung ein Zahlendreher passiert und der Buchende dies gleich nach dem Speichern bemerkt, wieso soll dann der Fehler nicht korrigiert werden können?
Gruß Günter Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen. angebl. von Georg Christoph Lichtenberg (1742-1799)
Wenn ich das richtig verstehe, müßte ein Datenbankprogramm genutzt werden, denn Excel kann das auch durch Programmierung im VBA nicht.
...
Hallo Thomas,
das hast Du nicht richtig verstanden. Excel kann das. Allerdings sind Deine Angaben etwas vage. Man müsste wissen wie die "Buchung" ausgelöst wird und welche Zellen dann geschützt werden sollen. Das von mir eingefügte Makro sollte nur als Beipiel dienen wie man einen Bereich schützen kann. Wenn ich Dich recht verstehe müsste aber nach der "Buchung" ein Bereich geschützt werden. Dieses gilt es zu realisieren. Also das richtige Timing und der korrekte Bereich :32: Es wäre hilfreich wenn Du eine anonymisierte Beispieldatei bereit stellst.
das hast Du nicht richtig verstanden. Excel kann das. Allerdings sind Deine Angaben etwas vage. Man müsste wissen wie die "Buchung" ausgelöst wird und welche Zellen dann geschützt werden sollen. Das von mir eingefügte Makro sollte nur als Beipiel dienen wie man einen Bereich schützen kann. Wenn ich Dich recht verstehe müsste aber nach der "Buchung" ein Bereich geschützt werden. Dieses gilt es zu realisieren. Also das richtige Timing und der korrekte Bereich :32: Es wäre hilfreich wenn Du eine anonymisierte Beispieldatei bereit stellst.
Gruß Ich
Na da fällt mir ein Stein vom Herzen!
Ich hänge mal die Datei an. Die gelb hinterlegten Bereiche sollen geschützt werden. Und zwar wenn einmal ein Wert eingegeben wurde (im Beispiel: der Wert 90,00€) und dieser falsch eingegeben wurde darf er nicht mehr überschrieben werden. Sondernn in der Folgezeile als Fehlbuchung korrgiert und danach neu in korrekter Höhe eingegeben werden. Na schau mal!
die Sperrung kann aber auch recht lästig werden, wenn Du z.B. 13 eingibst, ENTER drückst und gleich darauf den Fehler merkst.
Für solche Anliegen kann man Ereignismakros verwenden, in Deinem Fall Worksheet_Change.
Code:
Private Sub Worksheet_Change(ByVal Target As Range) Target.Locked = True End Sub
Damit das funktioniert, musst Du auch den Blattschutz aktivieren und bei alle Zellen, wo Eingaben erfolgen können, über die Zellformatierung "gesperrt" rausnehmen. Ggf. muss man die Wirkung des Makros noch auf bestimmte Bereiche einschränken.
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
die Sperrung kann aber auch recht lästig werden, wenn Du z.B. 13 eingibst, ENTER drückst und gleich darauf den Fehler merkst.
Für solche Anliegen kann man Ereignismakros verwenden, in Deinem Fall Worksheet_Change.
Code:
Private Sub Worksheet_Change(ByVal Target As Range) Target.Locked = True End Sub
Damit das funktioniert, musst Du auch den Blattschutz aktivieren und bei alle Zellen, wo Eingaben erfolgen können, über die Zellformatierung "gesperrt" rausnehmen. Ggf. muss man die Wirkung des Makros noch auf bestimmte Bereiche einschränken.
Ich versuche alles. Weshalb ich diese Variante der "unmöglichen" Korrektur benötige? Unser Gesamtverein hat einen neuen Kassenwart. Und der sagte, dass das Finanzamt nur Kassenbücher akzeptiert in denen eine nachträgliche Änderung unmöglich bzw. eindeutig nachvollziehbar ist. Ebenso sicher wird er sich an die Vorgaben des Finanzamtes halten! Entweder finden wir eine solche Lösung oder müssen wieder auf die handschriftliche Form zurückkehren.
Nun muss ich erst einmal zum Dienst. Werde aber morgen - wie oben gesagt - alle Vorschläge ausprobieren und mich dann bei euch melden!
im Bereich A3 bis D3 kannst Du Deine Buchungen erfassen. Ein Klick auf den Button überträgt die Buchung in Deine Tabelle. Ziel der "Operation" sollte es sein, das keine Buchungen mehr verändert werden können. Schau mal ob das so für Dich passt.