Frage von xXSnip3rXx, 37

Excel: Dokumenten Versionsnummer autom. +0,01 (Macro / Formel)?

Huhu, ich habe nach nun ca. 3 Stunden Suchen aufgegeben. Ich suche für meine Datei ein einfaches Makro oder eine Formel die:

Wenn ich Speicher in einer Zelle automatisch das Datum mit Uhrzeit einträgt. Und in einer anderen Zelle automatisch die Versionsnummer (2.01) immer mit 0.01 Addiert...

Ist sowas einfach möglich? Oder benötigt man ein Größeres Macro dafür ..?

Benutze momentan das ältere Excel 2010.

Vorschläge gerne gesehen :)

MfG Tim Ps: Wenn zu konfuse bitte sagen... versuche es dann nochmal anderes zu erklären ...

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von Oubyi, Community-Experte für Excel, 33

Da sollte recht einfach gehen.
Schreibe dieses Makro in das Modul des Arbeitsblattes (wenn Du nicht weißt, wie das geht, dann frage nochmal nach):

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Range("A1").Value = Now()
Range("B1").Value = Range("B1").Value + 0.01
End Sub

Das schreibt Datum und Uhrzeit in A1 und erhöht den Wert in B1 um 0,01.
In B1 steht also nur die Versionsnummer, ohne führende 2 und mit Komma statt Punkt (wenn Du eine deutsche Excel-Version hast).
Daraus kannst Du dann in einer anderen Zelle die 2.01 zusammensetzen:
="2."&RECHTS(B1;2)

Die 2 kannst Du Dir natürlich auch noch aus einer Zelle (z.B. C1) holen:
=C1&"."&RECHTS(B1;2)

P.S.:
Bei obigem Code muss in B1 unbedingt eine Zahl (oder nichts) stehen.
Bei Text (der vlt. versehentlich eingegeben wurde) würde ein Fehler auftreten.
Falls Du das nicht durch den Schutz der Zelle verhindern kannst, fängt dieser Code den Fehler ab:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
On Error GoTo Errorhandler
Range("A1").Value = Now()
Range("B1").Value = Range("B1").Value + 0.01
Exit Sub
Errorhandler:
MsgBox ("Fehler: Versionsnummer wurde nicht erhöht!")
End Sub

Das alles ist recht simpel gestrickt und lässt sich sicher noch ausbauen, sollte aber so erst mal reichen.
Oder?

Kommentar von xXSnip3rXx ,

Vielen Dank :)

Hätte nicht gedacht das das so einfach ginge ... aber excel halt ^^

Jetzt habe ich nur ein Problem .. wenn in in einer meinen anderen Tabellen (sry hätte ich glaube ich sagen sollen habe ca. 10 Tabellen in dieser Arbeitsmappe und die Versionsnummer soll nur auf der 1. Seite (Tabbelle) sein.. nun abspeichere überschreibt der den Wert dort auch :/

Kann ich das irgendwie nur auf Tabelle 1 anzeigen lassen?

Kommentar von Oubyi ,

Da muss wohl genauer referenziert werden (hätte ich eigentlich sofort mache müssen, sorry).
Teste mal ob es so besser ist (evtl. den Namen der Tabelle anpassen):

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
On Error GoTo Errorhandler
Sheets("Tabelle1").Range("A1").Value = Now()
Sheets("Tabelle1").Range("B1").Value = Sheets("Tabelle1").Range("B1").Value + 0.01
Exit Sub
Errorhandler:
MsgBox ("Fehler: Versionsnummer wurde nicht erhöht!")
End Sub

So ist es vlt. übersichtlicher (ist Geschmackssache):

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
On Error GoTo Errorhandler
Sheets("Tabelle1").Range("A1").Value = Now()
Sheets("Tabelle1").Range("B1").Value = Sheets("Tabelle1").Range("B1").Value + 0.01
Exit Sub
Errorhandler:
MsgBox ("Fehler: Versionsnummer wurde nicht erhöht!")
End Sub
Kommentar von xXSnip3rXx ,

nun kommt leider immer nur die MsgBox mit: "Fehler: ... :/

mache ich was falsch? Hab ihn genau wie den code davor eingetragen ...

Ps: Die Zelle is vollkomen leer

Kommentar von Oubyi ,

Lösche mal die Zeile:
On Error GoTo Errorhandler
und versuche es dann nochmal.
Dann solltest Du eine Fehlermeldung von VBA bekommen, die den genauen Fehler beschreibt.
Teil mir diesen Text mal mit und - vor allem - in welcher Zeile des Codes der Fehler auftritt.
P.S.: Bist Du sicher, dass Du den Namen des Tabellenblattes richtig angegeben hast?
In meinem Code ist das "Tabelle1", in Deinem Text oben ist es "Tabelle 1". DAS wäre schon eine Fehlerquelle.

Ich muss jetzt zur Arbeit, schaue aber heute Abend oder morgen früh wieder rein..

Kommentar von xXSnip3rXx ,

Danke für die Antworten ^.^

Läuft nun alles Perfekt. Mein Fehler war das ich Tabelle1 stehen gelassen habe .. und diese nicht umbenannt habe -.-' (sry)

Viel Spaß bei der Arbeit und Vielen Dank :) Vorallem für die schnellen Antworten hätte ich nicht erwartet :D

MfG Tim

Kommentar von Oubyi ,

Freut mich, dass ich helfen konnte ☼

Kommentar von Oubyi ,

Danke fürs

Expertenantwort
von Ninombre, Community-Experte für Excel, 37

In VBA bei "DieseArbeitsmappe" folgendes:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Tabelle1.Cells(1, 1).Value = Now()
Tabelle1.Cells(1, 2).Value = Tabelle1.Cells(1, 2).Value + 0.01
End Sub

Die Zellen muss Du noch so anpassen, wie es in diesem Fall gewünscht wird. Hinweis: In VBA wird erst die Zeile, dann die Spalte angegeben, also andersherum als sonst.

Antwort
von iMPerFekTioN, 26

Hallo =)
Das dürfte in etwa so aussehen denke ich:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Sheets(1).[deine Zelle] = Sheets(1).[deine Zelle] + 0,01
End Sub

Private Sub Workbook_Open()
Sheets(1).[deine Zelle] = Sheets(1).[deine Zelle] + 0,01
Application.EnableEvents = False
ThisWorkbook.Save
Application.EnableEvents = True
End Sub

Grüße,

iMPerFekTioN

Kommentar von Oubyi ,

Kannst Du mir den ...Open Code mal erläutern.
Ich würde sagen dadurch wird beim Öffnen der Wert nochmal um 0,02 erhöht (da auch ...Save ausgeführt wird (Warum?)).
Und warum müssen die Events ausgeschaltet werden?

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten