Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1244to1248
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Uhrzeit mit Mausklick eintragen

Uhrzeit mit Mausklick eintragen
Uwe
Guten Morgen zusammen,
in einer Tabelle sind in der Spalte A insgesamt 45 Mitarbeiter aufgeführt. Meine Aufgabe besteht nun darin, auf "Zuruf" in den Zellen B1:E45 Uhrzeiten festzuhalten.
Einfach wäre das ja mit`einer Art "Zeitstempel" - mit anderen Worten mit einem Mausklick - zu realisieren. Das gewünschte Format der Uhrzeit wäre hierbei h:mm. Aber wie geht das? Die Lösung über VBA wäre schon klasse...
Schon mal jetzt besten Dank für Eure Hilfe!
Uwe

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Uhrzeit mit Mausklick eintragen
12.01.2012 07:47:24
hary
Hallo Uwe
Mit Doppelklick. Hier ohne festen Bereich. Code in den Code der Tabelle.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Target = Format(Now, "h:mm")
Cancel = True
End Sub

gruss hary
nicht wirklich
12.01.2012 09:53:17
Erich
Hi Hary,
dein Code trifft IMHO nicht so ganz die Anforderung.
Now liefert nicht nur die Uhrzeit, sondern Datum + Uhrzeit. Time ist hier einfacher.
Format(Now,"h:mm") macht aus dem Zeitstempel einen Text, der dann in die Tabelle geschrieben wird.
Dabei wandelt Excel automatisch den Text in eine Uhrzeit um.
Mit Format(Now,"h:mm") wird nicht das Format der Zelle festgelegt, sondern nur das Aussehen des (Zwischen-)Textes.
Die Zelle bekommt bei mir - wenn sie vorher Standard-formatiert war - das Format hh:mm - nicht wie gewünscht h:mm.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("B1:E45")) Is Nothing Then
With Target
.NumberFormatLocal = "h:mm"
.Value = Time
End With
Cancel = True
End If
End Sub
Die Zeile ".NumberFormatLocal = "h:mm"" kann entfallen, wenn der ganze Bereich schon richtig "h:mm"-formatiert ist.
Jetzt gerade nicht klar ist mir, warum mit .NumberFormat = "h:mm" das Format "hh:mm" wird,
d. h. das "Local" ist notwendig. Aber warum?
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige
AW: @Erich
12.01.2012 10:08:38
hary
Hallo Erich
Ich hatte es auch mit Time gemacht.

Target = Format(Time, "h:mm")
Cancel = True

Warum weiss ich nicht, aber die Zelle ging immer auf das Format AM/PM. Konnte machen was ich wollte. Daher hab ich Now genommen.
Jetzt in einer neuen Mappe geht's. Format springt aber auch wie bei Dir auf hh:mm.
gruss hary
@Hary
12.01.2012 10:25:37
Erich
Hallo Hary,
Format(...,"h:mm") erzeugt einen Text.
Den brauchen wir hier überhaupt nicht, denn wir wollen eine Zeit in die Zelle schreiben,
also die Zahl Time (größergleich 0, kleiner als 1).
Also: Target = Time oder Target.Value = Time
Wenn das Zellformat vorher Standard ist, wird jetzt die Zeit im (US-)Standardformat h:mm:ss AM/PM angezeigt.
Aber wir wollen h:mm. Dann müssen wir das Aussehen der Zelle, also das Format, ändern.
Das können wir mit NumberFormatLocal oder NumberFormat einstellen.
Wenn das Zellformat vorher schon richtig eingestellt war, ist am Aussehen nichts zu tun,
Target = Time
reicht in der Prozedur vollkommen aus.
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige
AW: stimmt...
12.01.2012 10:42:44
hary
Hallo Erich
... springe zwischen Boerse, Spaetzle mit Pilzsosse und Forum hin und her. Daher der Denkfehler.
gruss hary
AW: nicht wirklich
12.01.2012 11:14:59
Uwe
Hallo Erich!
Deine Lösung passt genau so, wie ich mir das gewünscht hatte.
Perfekt!
Vielen Dank
Uwe
PS: Habe in den Zellen B1, C1 usw. stets das aktuelle Tagesdatum stehen. Wäre es möglich, das grundsätzlich der Cusor nach dem Öffnen der Datei stets auf dem aktuellen Datum steht?
Welches Blatt, welche Zelle auswählen?
12.01.2012 12:42:22
Erich
Hi Uwe,
so etwas (ich meine deine neue Frage im P.S.) würde man in der Prozedur Workbook_Open() erledigen.
Aber ich habe die Frage noch gar nicht verstanden. Auf welche Weise steht in B1, C1 usw. stets das aktuelle Datum?
(Eine Möglichkeit wäre, dass in diesen Zellen die Formel "=HEUTE()" steht.)
Aber welche dieser Zellen soll dann ausgewählt werden - die sind doch alle gleich?
Noch eine Frage: Du sprichst nur von der Datei (=Mappe) und der Zelle. Hat die Mappe nur ein einziges Blatt?
Wenn nicht: Auf welchem Blatt befinden sich diese Zellen B1 usw. mit dem Datum?
Noch eine Nachbemerkung/Frage zum eigentlichen Thema:
Hast du ".NumberFormatLocal = "h:mm"" in der Routine stehen lassen oder
ist der Bereich B1:E45 von vornhereion mit h:mm formatiert? (Letzteres wäre geschickter.)
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige
AW: Welches Blatt, welche Zelle auswählen?
12.01.2012 19:06:38
Uwe
Hallo Erich,
in B1 steht z.B. der 01.01.12 im Format TT.MM.JJ. Ab C1 lautet dann der Eintrag B1+1 usw. Das Format TT.MM.JJ bleibt hier unverändert. Wäre aber kein Thema so ich das Anderes eintragen soll. Mit dem Eintrag =HEUTE() komme ich in keiner der Zellen weiter, da die Eintragungen, die ich mit "Deinem" Mausbklick vorgenommen habe, noch über Monate hinweg nachvollziehbar sein müssen.
Eben das ist meine Frage, das ich zunächst auch denke, das doch alle Zellen gleich sind... Irgendwie müßte mir dann eine Routine die Monatsdaten da eintragen...
Jep, die Mappe/Datei hat zur Zeit nur ein einziges Blatt. Nach Ablauf eines Monats soll diese stets z.B. via PDF-Creator "ausgedruckt", sprich onhe spätere Möglichkeit der Änderung in PDF konvertiert werden. Das geht ja ganz prima "zu Fuß" und bedarf wohl keiner Routine.
Das einzige Blatt der Mappe heißt schlicth Zeitstempel
Zum Thema an sich, Jaaa, dachte mir das das Format h:mm "voreingestellt" Vorteile bietet. Das hatte ich so eingestellt, ähm, formatiert.
Gruß aus Kleve.
Uwe
Anzeige
AW: Welches Blatt, welche Zelle auswählen?
12.01.2012 20:34:05
fcs
Hallo Uwe,
falls du die Zeiten ohne Sekunden in der Tabelle eintragen willst, dann muss du dein Makro noch etwas anpassen.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim dblZeit As Double, dblMinuten As Double
If Target.Row > 1 And Target.Column > 1 Then
dblZeit = Time
Cancel = True
Target.Value = dblZeit 'sekundengenau
Target.Value = CDate(Format(dblZeit, "hh:mm")) 'minuten - Sekunden abgeschnitten
dblMinuten = Round(Val(Format(dblZeit, "ss")) / 60, 0) 'Sekunden auf Minute gerundet
Target.Value = CDate(Format(dblZeit, "hh:mm")) + dblMinuten / 60 / 24 'minuten gerundet
End If
End Sub

Unter "DieseArbeitsmappe" fügst du das folgende Makro ein, um automatisch beim Öffnen das aktuelle Datum in Zeile 1 zu selektieren.
Private Sub Workbook_Open()
Dim Spalte As Long
With Worksheets(1)
.Activate
For Spalte = 2 To .Cells(1, 1).End(xlToRight).Column
With .Cells(1, Spalte)
If .Value = Date Then
.Select
ActiveWindow.ScrollColumn = Spalte
Exit For
End If
End With
Next
End With
End Sub

Gruß
Franz
Anzeige
Minuten-Rundung
12.01.2012 21:22:32
Erich
Hi Franz,
würde für die Minuten-Rundung das hier nicht ausreichen?

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Row > 1 And Target.Column > 1 Then _
Target.Value = Application.Round(Time * 144, 1) / 144
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
AW: Minuten-Rundung
12.01.2012 21:54:16
fcs
Hallo Erich,
es führen halt in Excel manchmal viele Wege zum Ziel.
Deine Rundung auf Minuten ist natürlich der elegantere Weg.
Wäre halt nett gewesen, wenn du die 144 noch erläutert hättest (Minuten pro Tag (24*60) dividiert durch 100.
Gruß
Franz
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige