Willkommen |
|
myGully |
|
Links |
|
Forum |
|
|
|
|
05.07.13, 10:02
|
#1
|
Anfänger
Registriert seit: Jul 2009
Beiträge: 10
Bedankt: 0
|
Exel VBA Statisches Datum/Uhrzeit
Hallo Gemeinde,
Ich habe folgendes vorhaben.
Ich möchte in Exel in eine Zelle Haben (A1) in welche automatisch das Aktuelle Datum eingetragen wird, sobald in Zelle (A2) ein Wert steht.
Das gleiche auch noch mit der Uhrzeit.
Sobald in Zelle A4 ein Wert Steht, wird in Zelle A3 Die Aktuelle Zeit Eingetragen.
Diese Zeiten sollen dann Statisch sein und nur verändert werden wenn in den jeweiligen Überprüfungsfelder wieder etwas verändert wird.
Habe schon gegoogelt, aber nix passtendes gefunden. Muss wohl mit VBA gelöst werden, und das kann ich leider nicht.
Danke für eure Mühe
|
|
|
05.07.13, 11:40
|
#2
|
Agnostiker
Registriert seit: Dec 2009
Beiträge: 4.204
Bedankt: 4.440
|
Hi...
erstmal an alle VBA-Profis... ich habe mir das alles selbst beigebracht und ich weiß, dass das progammiertechnisch nicht ganz das Wahre ist, aber es funktioniert....
Menü Entwicklertools---Code anzeigen--- dort folgenden Code hineinkopieren...
Datums- und Zeitformat kannst du dir dann selbst aussuchen... Immer wenn du nun in Zelle A2 oder A4 etwas änderst, wird entsprechend in A1 bzw. A3 das aktuelle System-Datum bzw. die aktuelle System-Zeit eingetragen
__________________
Der Klügere gibt nach... deshalb regieren die Dummen die Welt
|
|
|
06.07.13, 12:57
|
#3
|
Zentrum der Macht
Registriert seit: May 2009
Beiträge: 83
Bedankt: 68
|
@eitch100
Ich hätte das zunächst ohne VBA gelöst.
Ins Feld A1
=wenn(A2="";"";heute())
A1 muss als Datum formatiert sein.
Ins Feld A3
=wenn(A4="";"";jetzt())
A3 muss als Uhrzeit formatiert sein.
Sobald nun in A2 oder A4 Änderungen vorgenommen werden, aktualisiert sich automatisch das Feld A1 oder A3 und zwar unabhängig voneinander.
Anmerkung: Das Datum und auch die Zeit ändern sich bei dieser Version leider immer beim Neuöffnen der Datei- daher wahrscheinlich unbrauchbar für dich!
LG
VideoLord
|
|
|
06.07.13, 15:53
|
#4
|
Agnostiker
Registriert seit: Dec 2009
Beiträge: 4.204
Bedankt: 4.440
|
Zitat:
Zitat von VideoLord
Sobald nun in A2 oder A4 Änderungen vorgenommen werden, aktualisiert sich automatisch das Feld A1 oder A3 und zwar unabhängig voneinander.
|
Aber eben nur einmal; und zwar genau dann wenn A2 oder A4 nicht leer sind. Bei weiteren Änderungen tut sich nix mehr und was noch schlimmer ist, die Werte in A1 und A2 passen sich permanent an, was ja ausdrücklich nicht erwünscht war...
In deiner Anmerkung hast du ja schon das richtige Fazit gezogen... Mit meinem Code muss man allerdings die Änderung mit Enter abschließen...
__________________
Der Klügere gibt nach... deshalb regieren die Dummen die Welt
|
|
|
06.07.13, 19:28
|
#5
|
Zentrum der Macht
Registriert seit: May 2009
Beiträge: 83
Bedankt: 68
|
Da bin ich ja recht froh, dass du noch vor Ende deines Zitats meinen Post zu Ende gelesen hast und Ihn entsprechend bewertet und kommentiert hast.
Schein bei einigen hier im Board ein regelrechter Sport zu sein, sei es wie es ist. Spam bleibt Spam- mein Motto.
Zitat:
Zitat von eitch100
Aber eben nur einmal; und zwar genau dann wenn A2 oder A4 nicht leer sind. Bei weiteren Änderungen tut sich nix mehr und was noch schlimmer ist, die Werte in A1 und A2 passen sich permanent an, was ja ausdrücklich nicht erwünscht war...
In deiner Anmerkung hast du ja schon das richtige Fazit gezogen... Mit meinem Code muss man allerdings die Änderung mit Enter abschließen...
|
|
|
|
07.07.13, 09:21
|
#6
|
Agnostiker
Registriert seit: Dec 2009
Beiträge: 4.204
Bedankt: 4.440
|
Mein Motto: konstruktive Kritik und auch mal ein gutes Späßle muss drin sein... Helfen, wenn man kann oder es versucht, darf ja auch ruhig ein bisschen Spaß machen...
__________________
Der Klügere gibt nach... deshalb regieren die Dummen die Welt
|
|
|
07.07.13, 15:13
|
#7
|
Anfänger
Registriert seit: Jul 2009
Beiträge: 10
Bedankt: 0
|
@eitch100: Hab deine Formel angewendet, leider Funktioniert es aber nicht. Vielleicht bin ich auch einfach zu blöde um es anzupassen. Mein Datumsfeld soll A3 sein mein Uhrzeitfeld B3. Eingabefeld ist D3.
Hab deine Formel so Angepasst. Falsch ?
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If ActiveCell.Row = 3 And ActiveCell.Column = 1 Then
Range("A3").Value = Date
End If
If ActiveCell.Row = 2 And ActiveCell.Column = 1 Then
Range("B3").Value = Time
End If
End Sub
|
|
|
07.07.13, 16:26
|
#8
|
Zentrum der Macht
Registriert seit: May 2009
Beiträge: 83
Bedankt: 68
|
ActiveCell.Row = 3 / bedeutet die dritte Spalte also C
ActiveCell.Column = 1 / bedeutet die erste Zeile also 1
zusammen = C1
Somit kannst du dir einfach den korrekten Eingabeplatz selber zuordnen, für beide deiner Anweisungen, also Zeit und Datum.
|
|
|
07.07.13, 19:53
|
#9
|
Anfänger
Registriert seit: Jul 2009
Beiträge: 10
Bedankt: 0
|
Also ich hab das jetzt lange ausprobiert aber irgendwie funzt das nicht. Da kommt Laufzeitfehler und Exel Absturz.
|
|
|
08.07.13, 03:21
|
#10
|
Ist öfter hier
Registriert seit: Sep 2010
Beiträge: 276
Bedankt: 280
|
Na so ein Mist aber auch. Das Change-Ereignis wird natürlich auch dann ausgelöst, wenn Datum oder Zeit in eine Zelle geschrieben werden. So entsteht hier eine endlose Ereignisauslösung.
|
|
|
08.07.13, 09:33
|
#11
|
Zentrum der Macht
Registriert seit: May 2009
Beiträge: 83
Bedankt: 68
|
Probier mal das hier, ansonsten läuft der eingestellte Code immer in einer Schleife, die Excel zum Absturz bringen.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo EndeSub
Application.EnableEvents = False
If ActiveCell.Row = 3 And ActiveCell.Column = 4 Then
Range("B3").Value = Time
End If
If ActiveCell.Row = 3 And ActiveCell.Column = 4 Then
Range("A3").Value = Date
End If
EndeSub:
Application.EnableEvents = True
End Sub
Ausgabezellen:
A3 = Datum
B3 = Uhrzeit
Eingabefeld:
D3 = Eingabe
|
|
|
08.07.13, 11:35
|
#12
|
Agnostiker
Registriert seit: Dec 2009
Beiträge: 4.204
Bedankt: 4.440
|
Zitat:
Zitat von VideoLord
ActiveCell.Row = 3 / bedeutet die dritte Spalte also C
ActiveCell.Column = 1 / bedeutet die erste Zeile also 1
zusammen = C1
|
natürlich genau andersrum... aber war wohl ein Versehen...
row=ZEILE=3
column=SPALTE=1
zusammen=A3
Zitat:
Zitat von St4R
@eitch100: Hab deine Formel angewendet, leider Funktioniert es aber nicht. Vielleicht bin ich auch einfach zu blöde um es anzupassen. Mein Datumsfeld soll A3 sein mein Uhrzeitfeld B3. Eingabefeld ist D3.
|
Mein obiger Code funktioniert natürlich nur für die in deinem Start-Post gewünschte Einstellungen... (und da gibt auch keinen Laufzeitfehler bzw. Endlosschleife)
Zitat:
Zitat von VideoLord
Probier mal das hier, ansonsten läuft der eingestellte Code immer in einer Schleife, die Excel zum Absturz bringen.
|
Jupp... so funzt es... vermutlich gibt es ohne die Fehlerroutine einen Absturz, weil sich der Wert für "Time" während der Laufzeit natürlich ändert und Excel es nicht auf die Reihe bekommt...
Man könnte sich höchstens eine If-Bedingung schenken... und die Fehlerroutine sollte man in die If-Anweisung integrieren, sonst führt er diese bei jedem Change-Ereignis aus...
Edit: Hier noch eine andere Möglichkeit... einfach über Doppelklick auf D3... (natürlich alten Code vorher löschen...)
__________________
Der Klügere gibt nach... deshalb regieren die Dummen die Welt
|
|
|
09.07.13, 19:12
|
#13
|
Anfänger
Registriert seit: Jul 2009
Beiträge: 10
Bedankt: 0
|
Danke euch ! Es Funktioniert. Jetzt habe ich nur das Problem, dass ich die Funktion gerne nach unten Kopiert hätte, da das Dokument nachher 500 Zeilen mit der Jeweiligen Funktion hat. Row ist die Gleiche aber Cell immer 1 höher. Möglich ?
|
|
|
09.07.13, 19:36
|
#14
|
Agnostiker
Registriert seit: Dec 2009
Beiträge: 4.204
Bedankt: 4.440
|
dieser Code gilt für alle in Spalte D ab Zeile 3...
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If ActiveCell.Row >= 3 And ActiveCell.Column = 4 Then
On Error GoTo EndeSub
Application.EnableEvents = False
Cells(ActiveCell.Row, 2).Value = Time
Cells(ActiveCell.Row, 1).Value = Date
EndeSub:
Application.EnableEvents = True
End If
End Sub
Aber die Änderungen immer mit Enter abschließen... wenn du z.B. in D4 eine Zahl eingibst und ohne Enter den Cursor nach unten machst, ändert der Code Zeit und Datum in der falschen (nächsten) Zeile... das macht der alte Code übrigens auch so... also das mit Doppelklick ist auf jeden Fall sicherer...
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If ActiveCell.Row >= 3 And ActiveCell.Column = 4 Then
Cancel = True
Cells(ActiveCell.Row, 2).Value = Time
Cells(ActiveCell.Row, 1).Value = Date
End If
End Sub
__________________
Der Klügere gibt nach... deshalb regieren die Dummen die Welt
|
|
|
09.07.13, 19:50
|
#15
|
Anfänger
Registriert seit: Jul 2009
Beiträge: 10
Bedankt: 0
|
Wie cool, das Funktioniert !!! Danke vielmals
|
|
|
Forumregeln
|
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren
HTML-Code ist Aus.
|
|
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:41 Uhr.
().
|