Hallo Zusammen,
ich möchte wenn Jemand in eine Zelle den Buchstaben "ü" reinschreibt, dass das heute Datum genommen wird und nebendran eingefügt wird. Es soll aber eingefroren werden, da sich ja das heute Datum immer wieder ändert.
Gibt es da eine pfiffige Lösung oder benötigt man da ein VBA-Code?
Danke euch
Hallo,
geht nur mit Makro.
Gruß Werner
... aber Makro kann auch pfiffig sein
Hallo,
bevor man grosse Makros schreibt ... Was spricht dagegen mal kurz "Strg" & "." zu drücken? Das Datum ändert sich auch nicht.
Gruß
Marcus
Hallo, hier mal VBA Beispiele von meiner ehemaligen Excel Seite, damit ihr sht wie umständlich das mit Makros ist:
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.
LG
Marcus
Hallo
bei soviel kompliziertem Makro Code wird mir sogar schwindelig. snb macht das mit seinen berühmten zwei Zeilern
Ich gehe davon aus das die Zelle rechts als Datumzelle daneben gemeint ist, sonst muss man Offset umschreiben.
mfg Gast 123
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If LCase(Target) = "ü" Then
Target.Offset(0, 1) = CDate(Left(Now, 10))
End If
End Sub
Nachtrag: Code in das Tabellen Blatt einfügen wo er laufen soll.