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

...komplette Frage anzeigen

3 Antworten

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?

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?

0
@xXSnip3rXx

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
1
@Oubyi

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

0
@xXSnip3rXx

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..

1
@Oubyi

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

0

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.

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

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?

0

Was möchtest Du wissen?