Ich habe ein Benutzerformular, das den Benutzer erfordert, ein bestimmtes Datum und Uhrzeit über zwei separate Kombinationsfelder, cboStartDate, cboStartTime einzugeben. Der Benutzer muss außerdem die Dauer in einem Textfeld, txtDuration, eingeben.Excel VBA Zeitspezifischen Wert in Zelle von Benutzerformular speichern
Nach dem Speichern werden Startdatum und -uhrzeit in einer formatierten Zelle [TT/MM/JJJJ HH: MM AM/PM] gespeichert. Das Enddatum und die Endzeit werden aus dem Dauerfeld berechnet und in einer anderen Zelle mit derselben Formatierung gespeichert. Etwas wie folgt aus:
+-----------------------+-----------------------+ | startTime | endTime | +-----------------------+-----------------------+ | 2/4/2012 11:30:00 AM | 2/4/2012 2:00:00 PM | +-----------------------+-----------------------+
Doch nach der Userform durch läuft, wird die Startzeit nicht gespeichert ist, und die Endzeit wird nicht berechnet. Etwas wie folgt aus:
+-----------------------+-----------------------+ | startTime | endTime | +-----------------------+-----------------------+ | 2/4/2012 12:00:00 AM | 2/4/2012 12:00:00 AM | +-----------------------+-----------------------+
Unten ist mein Teil meiner VBA-Code:
Dim iRow As Long
Dim ws As Worksheet
Dim startDate As Date
Dim unFmtStartDuration() As String
Dim startDuration As Double
Dim minTest As Integer
Dim endDate As Date
Dim endDuration As Double
Set ws = Worksheets("EVENTS")
'Search for the last row in the worksheet
iRow = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
'Date manipulation and set start and end timings
unFmtStartDuration() = Split(cboStartTime.Text, ":")
startDuration = unFmtStartDuration(0)
If unFmtStartDuration(1) = "00" Then
minTest = 0
Else
minTest = unFmtStartDuration(1)
If minTest = 30 Then
startDuration = startDuration + 0.5
End If
End If
startDate = DateValue(DateAdd("h", startDuration, cboDate.Text & " 12:00AM"))
ws.Cells(iRow, 4).Value = startDate
endDuration = txtDuration.Value
endDate = DateValue(DateAdd("h", endDuration, startDate))
ws.Cells(iRow, 5).Value = endDate
So wie kann ich diesen Teil aussortiert? Würde mich über jede Hilfe freuen. Vielen Dank.
P.S. Möchte hier Screenshots posten, aber mein Ruf ist hier zu gering. Es tut uns leid.
Danke für die schnelle Antwort! Ich habe die 'TimeValue()' -Funktion anfangs nicht berücksichtigt, da ich mit VBA ziemlich neu bin. Benutzte es in den Codes und es ist schön. Trotzdem, danke für deine Hilfe! Es funktioniert jetzt gut ... By the way, irgendwie die "DateAdd" -Funktion konnte 0,5 in h aus bestimmten Gründen nicht hinzufügen ... Zuflucht zu den StartTime und EndTime in Stunden und Minuten anstatt als eine schnelle Lösung aufgeteilt. P.S.Ich wünschte, dass ich upvote, noch einmal rep ist zu niedrig ... :( –
+1 Nice one Gaffi :) –
Danke, @SiddharthRout. Und mach dir keine Sorgen Robert; Bleib herum und du wirst dort in rep stehen. :-) – Gaffi