Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
796to800
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
796to800
796to800
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zeiten runden Textbox

Zeiten runden Textbox
29.08.2006 21:56:07
Rene
Hallo!
Wenn ich Zeiten in Textboxen lade, möchte ich die Zeiten auch gleich gerundet haben. Bis zur 29 Minute abrunden, ab der 30 Minute aufrunden (z.b. aus 171:29 soll 171:00 und aus 171:30 soll 172:00 werden). Was in Tabellen einfach ist, bekomme ich in Textboxen nicht hin. Wie kann ich Zeiten in Textboxen runden?
Danke für Eure Hilfe!
Gruss Rene

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeiten runden Textbox
29.08.2006 22:32:08
ingUR
Hallo, Rene,
hier eine Progtammzeile, die die Variable Zeit vom Datentype Date auf volle Stunden auf- bzw. abrundet
Zeit = (Hour(Zeit) + IIf(Minute(Zeit) 
Deinen Textfeldinhalt hättest Du also zuvor in eie Zeitvariable zu überführen.
Gruß,
Uwe
AW: Zeiten runden Textbox
29.08.2006 23:11:15
Rene
Hallo Uwe!
Danke! Soweit, so gut. Aber wie kann ich das jetzt anwenden? Was ist die Angabe "Zeit"?
In meinem Beispiel soll die errechnete Sollzeit aus Textbox 6 nach klick auf "Übernehmen" in die entsprechende Textbox übernommen und dabei gerundet werden.
Wie stelle ich das jetzt an?
https://www.herber.de/bbs/user/36277.xls
Gruss Rene
Anzeige
AW: Zeiten runden Textbox
30.08.2006 08:06:44
ingUR
Hallo, Rene,
Deine Mappe habe ich heruntergeladen und erkenne den Grund Deiner Nachfrage.
Jedoch habe ich nun meinerseits ein paar Fragen, die sich um Funktion und Anwendung drehen.
  • Mit der TextBox1 (=iTage) werden die Arbeitstage/Monat vorgegebn, die als Integer-Wert im Programm verarbeitet werden. Ich wähle 20 AT/M.
  • Ebenso ganzzahlig (Integer) werden in der TextBox2 (=iWochen) die Arbeitstage/Woche eingegeben, wo ich 6 AT/W setze um so auf eine ungerade Wochenzahl pro Montat zu kommen (20/6 [AT/M]/[AT/W] = 3,333 W/M).
  • Danach wird mit der TextBox3 eine Stundenanzahl pro Wochche als Soll einzugeben sein, die in einem Text(!)format der Form HH:MM abverlangt wird, denn obwohl der gefordert, wird doch ein Text interpretiert Ich setze 38:30 (obwohl auch 38:71365 akzeptiert wird).
  • Das Feld UT (Urlaubstage?) lasse ich unbesetzt.
  • Die Berechnung, ausgelöst dur CommenButton19_Click(), liefert:
    iZeit = 38*60 + 30 = 2310 Min/W an Arbeitszeit
    Um auf die Monatsarbeitzeit (TextBox6) zu kommen ist zu rechnen:
    MinAT = (2310/6) = 385 Min/AT (=(38:30) * 60/6)
    MinM = 385 * 20 = 7700 Min/M (=(38:3)* 60 * 3,33333..)
    Umgewandelt in Stunden/M
    HH,xxxx = 7700/60 = 128,3333... Std/M
    und mit Wandlung der Nachkommerstellen vom 100er zum 60er System:
    HH,MM = 128 + (1/3)*60/100 = 128,20
    Das ist eine Dezimalzahl(!), solange, bis Du in der anschließenden Anweisung nach dieser Berechnung, das Dezimaltrennzeichen durch einen Doppelpunkt ersetzt.
    Der Inhalt der Textbox6 kann danach nur noch als Text interpretieren, solange nicht eine expliziete Rückumwandlung erfolgt.
    Lange Erklärung, kurzer Sinn: Der Textbox6-Wert läßt sich nicht mehr als Zahl runden!
    Das bedeutet, dass Du entweder den Textbox6-Inhalt vor der Umwandlung zum Text und auch vor der Umwandlung des Dezimalanteils vornimmst (in TextBox6 steht dann immer eine Zahl die die volle Stundenzahl des Monats darstellt, im Beispeil also 128:00, oder aber die Rundung auf der Grundlage des Texts der Textbox6 wird bei Übergabe erfolgen:
    iPosit = Instr(TextBox6.Value, ":")
    iHH = Val(Left(TextBox6.Value;iPosit-1)
    iMM = Val(Mid(TextBox6.Value;iPosit+1)
    TextBoxX.Value = iHH + IIF(iMM<30;0;1)
    TextBoxX.Value = Replace(TextBoxX.Value, ",", ":")
    
    X steht dabei für die entsprechende Übernahmetextboxnummer. Dieser Programmteil ist nicht getestet und sollte als Function angelegt werden:
    '... Aufruf:
    TextBoxX.Value = GetTextBox6Value
    Private Function GetTextBox6Value() as String
    Dim .....
    iPosit = Instr(TextBox6.Value, ":")
    iHH = Val(Left(TextBox6.Value;iPosit-1)
    iMM = Val(Mid(TextBox6.Value;iPosit+1)
    Value = iHH + IIF(iMM<30;0;1)
    GetTextBox6Value = Replace(Mid(Str(Value),2), ",", ":")
    exit Function
    
    Die Prommideen sind nicht getestet. Du mußt also entscheiden, wo die Rundung vorgenommen werden soll.
    Gruß,
    Uwe
    Die
  • Anzeige
    AW: Zeiten runden Textbox
    30.08.2006 13:32:00
    Rene
    Hallo Uwe!
    Danke sehr. Das funktioniert sehr gut. Bis auf das, dass der Doppelpunkt und die Null noch fehlen, aber das bekomme ich noch hin. Oder hast Du dafür noch einen Tip (die Nullen benötige ich zwingend)? Zuerst habe ich aber einen Syntaxfehler bekommen. Bei iHH und iMM fehlt jeweils die letzte schließende Klammer und die Semikola müssen durch ein Komma ersetzt werden. Danke nochmals!
    Übrigens: Bei "UT-Soll" wird die zu leistende Anzahl an Dienstunterrichtsstunden im Jahr eingetragen. Diese werden aber erst am Ende des Jahres zur Arbeitszeit hinzugezählt. Habe das Feld nur der Optik wegen im oberen Frame eingesetzt. Ich arbeite gerne mit Frames, sieht einfach besser aus.
    Gruss, Rene
    Anzeige
    AW: Zeiten runden Textbox
    30.08.2006 13:37:51
    Rene
    Hallo nochmal!
    Das "Null-Problem" hat sich erledigt. Damit geht's ganz einfach.
    TextBox7.value = GetTextBox6Value & ":00"
    Gruss, Rene

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige