|
Sehr oft kommt die folgende Frage auf: Wie kann ich ein aktuelles Datum in eine Zelle setzen, welches sich nicht am nächsten Tag ändert? Dieses Problem kann man mit einem Excel Makro angehen. Ich werde Euch hier 3 Beispiele darstellen: Beispiel 1: Wir bauen einen Schalter in unser Tabellenblatt ein. Bei Betätigung soll in die letzte Zeile, der Spalte H, dass aktuelle Datum eingefügt werden. Dafür legen wir das folgende Makro hinter das Tabellenblatt: Option Explicit
Sub Datum() Dim Loletzte As Long Loletzte = IIf(IsEmpty(Worksheets("Tabelle1").Range("H65536")), _ Worksheets("Tabelle1").Range("H65536").End(xlUp).Row + 1, 65536) Worksheets("Tabelle1").Cells(Loletzte, 8) = Date End Sub
Beispiel 2: Immer wenn in Spalte A etwas eingetragen wird, dann soll in der zugehörigen Zelle, der Spalte B, ein Datum eingetragen werden. Auch der folgende Code gehört hinter das Tabellenblatt: Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim bereich As Range Dim zelle As Range 'Bereich und Tabellenname anpassen Set bereich = Sheets("Tabelle1").Range("A1:A100") For Each zelle In bereich If Not IsEmpty(zelle) Then zelle.Offset(0, 1).Value = Date End If Next End Sub
Beispiel 3: Wir wollen dass ein Datum immer mit einem Klick, mit der rechten Maustaste, in eine Zelle der Spalte D eingetragen wird. Hierzu müssen wir als Erstes einmal die normale Funktion der rechten Maustaste deaktivieren. Dazu fügen wir den folgenden Code im VBA Teil hinter Diese Arbeitsmappe ein: Option Explicit
Private Sub Workbook_Open() Application.CommandBars("Cell").Enabled = False End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean) Application.CommandBars("Cell").Enabled = True End Sub
Nun wechseln wir in den Makrobereich unseres Tabellenblatts, wo der Code laufen soll, und fügen dort dieses Makro ein:
Option Explicit
Private Sub Worksheet_BeforerightClick(ByVal Target As Range, Cancel As Boolean) Dim Frage As Integer If Not Intersect(Target, Range("D:D")) Is Nothing Then 'Range("D:D") muss auf die Spalte angepasst werden If Target.Value = "" Then Target.Value = Date Else If IsDate(Target) Then Frage = MsgBox("soll das Datum aktualisiert werden?", vbYesNo) If Frage = vbYes Then Target.Value = Date If Frage = vbNo Then Exit Sub Exit Sub End If Frage = MsgBox("Es steht kein Datum in der Zelle!" & _ "Soll dennoch ein Datum eingetragen werden?", vbYesNo) If Frage = vbYes Then Target.Value = Date If Frage = vbNo Then Exit Sub End If End If End Sub
Jetzt müssen wir unsere Tabelle noch einmal abspeichern, schliessen und wieder öffnen. Wenn wir gefragt werden, ob die Makros aktiviert werden sollen, dann stimmen wir natürlich zu. Wenn Ihr jetzt in Tabelle1 mit der rechten Maustaste in eine Zelle der Spalte D klickt, dann wird dort ein Datum eingefügt.
|