Das Makro, mit dem Excel Einträge unaufgefordert datiert
Excel loggt auf Wunsch auch Eingaben im Sekundentakt.
Der Wunsch, Einträge vollautomatisch mit Datum zu versehen, wird in schöner Regelmässigkeit an die Kummerbox herangetragen. Das kommt nicht von ungefähr, denn Microsofts Tabellenkalkulation wird von vielen Anwendern zu Protokollzwecken genutzt. Wenn solche Routinearbeiten beschleunigt werden können, bedeutet das eine grosse Zeitersparnis – daher stellen wir hier ein Makro vor, das zwar etwas Aufwand macht, bis es eingerichtet ist, dann aber eine grosse Stütze bei monotonen Tätigkeiten ist.
Um das Makro einzurichten, starten Sie Excel und sogleich den Visual Basic Editor. Dazu betätigen Sie die Tastenkombination «Alt» + «F11». Doppelklicken Sie in der Baumliste am linken Fensterrand bei «VBAProject > Microsoft Excel Objekte» auf «Diese Arbeitsmappe». Der Editor zeigt nun einen Dialog mit zwei Dropdown-Listen an der oberen Kante. In der ersten Liste wählen Sie «Workbook», in der zweiten «SheetChange». Excel generiert nun Code, der dafür sorgt, dass das Makro automatisch bei jeder Änderung am Tabellenblatt ausgeführt wird:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
(…)
End Sub
Dieses Code-Gerüst ergänzen Sie nun wie folgt:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Rem Dieses Makro fügt rechts vom Eintrag das aktuelle Datum ein
Rem Matthias Schüssler, 21. April 2008
On Error GoTo Ausgang
Dim Zielzelle As Range
If (Target.Comment Is Nothing) Then
Set Zielzelle = Target.Offset(0, 1)
If Zielzelle.Value = "" Then
Zielzelle.AddComment "autoinsert"
Zielzelle.Value = Date
End If
End If
Ausgang:
End Sub
Nun betätigen Sie «Datei > Schliessen und zurück zu Microsoft Excel» und können das Makro bereits nutzen. Es wird Ihnen auffallen, dass jedes Datum einen Kommentar mit «autoinsert» trägt. Das dient dazu, die automatischen Datumsangaben zu identifizieren und verhindert, dass Excel auch die automatischen Datumseinträge datieren will.
Das Makro fügt den Datumseintrag rechts ein. Wenn Sie das Datum lieber links hätten, dann geht das mit folgendem Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Rem Dieses Makro fügt links vom Eintrag das aktuelle Datum ein
Rem Matthias Schüssler, 23. April 2008
On Error GoTo Ausgang
Dim Zielzelle As Range
If (Target.Comment Is Nothing) And (Target.Column > 1) Then
Set Zielzelle = Target.Offset(0, -1)
If (Zielzelle.Value = "") Then
Zielzelle.AddComment "autoinsert"
Zielzelle.Value = Now
Zielzelle.NumberFormat = "dd.mm.yy h:mm:ss"
End If
End If
Ausgang:
End Sub
Das Makro wird nicht ausgeführt, wenn eine Zelle in Spalte A markiert ist.
Das zweite Makro unterscheidet sich noch in einem weiteren Punkt von der ersten Variante. Es fügt nicht nur das Datum ein, sondern auch die Uhrzeit. Das liegt daran, dass bei Zielzelle.Value nicht Date, sondern Now steht. Das Format für die Datums- und Zeitangabe wird über den Befehl Zielzelle.NumberFormat gesetzt. Sie können hier wie gewohnt ein Excel-Datumsformat übergeben; für eine Angabe ohne Sekunden zum Beispiel "dd.mm.yy h:mm" oder für eine Angabe mit Tag und Uhrzeit "dd. h:mm". Wenn Sie auch hier nur das Datum haben möchten, verwenden Sie Date anstelle von Now; auch bei Date können Sie wie beschrieben das Datumsformat über NumberFormat setzen.
Sollte das Makro nicht ausgeführt werden, überprüfen Sie die Sicherheitseinstellungen bei «Extras > Makros > Sicherheit»: Hier sollte die Option auf «Mittel» stehen.
Autodatum abschalten
Ergänzung vom 30. April: Ein Leser hat gefragt, ob es möglich wäre, das Makro temporär zu deaktivieren. Das geht mit folgender Ergänzung. Fügen Sie dazu am Anfang eine Zeile ein, die eine Variable für den Status definiert:
Public IsInactive As Boolean
Ergänzen Sie dann das Makro um die Zeile If IsInactive Then GoTo Ausgang:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Rem Dieses Makro fügt links vom Eintrag das aktuelle Datum ein
Rem Matthias Schüssler, 23. April 2008
If IsInactive Then GoTo Ausgang
Nun wird noch ein Makro benötigt, mit dem Sie das Autodatum ein- und ausschalten. Das ist mit folgendem Code möglich, den Sie am Ende des Projekts «DieseArbeitsmappe» einfügen:
Public Sub StatusAutodatierenUmschalten()
IsInactive = Not IsInactive
End Sub
Um die Autodatierung zu deaktivieren, führen Sie nun einfach das Makro StatusAutodatierenUmschalten aus. Ein weiterer Aufruf dieses Makros schaltet die Autodatierung wieder ein. Zum einfachen Aufruf können Sie dem Makro ein Tastaturkürzel zuweisen oder es als Schaltfläche in die Symbolleiste legen.
Erstellt: 04.11.2008, 20:17 Uhr
Digital
Live @ Sunset
11. bis 22. Juli - Zürich Dolder u.a. mit B.B. King, Elton John und Alanis Morissette!
Familie, Beruf und Studium
Sonia Uhlmann ist keine typische Studentin. Dank Fernstudium hat sie den Master trotzdem geschafft.





