Zahl in msgbox formatieren - eleganter?

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Carsten01
*
Beiträge: 17
Registriert: Mi, 20.12.2006 17:10

Zahl in msgbox formatieren - eleganter?

Beitrag von Carsten01 »

Kein richtiges Problem, nur eine Frage, ob es eleganter geht. Beim Versuch, die Summe: (Zelle mit Stundenangabe + Zeitvariable) ebenfalls als Stunden ([H]:MM) auszugeben, suchte ich die einfachste Lösung und habe es so gelöst:

Code: Alles auswählen

Zeitfeld=Sheet0.getCellByPosition(0,0)
Zeitdifferenz=0.333333333
Hilfszelle=Sheet4.getCellByPosition(1,1) ' formatiert als [H]:MM
Hilfszelle.value=Zeitfeld.value+Zeitdifferenz
msgbox("Stundenzahl: " + Hilfszelle.string + "h")
Inhalt von Zeitfeld soll nicht angetastet werden. Direkt Zeitfeld.value+Zeitdifferenz wunschgemäß formatiert in der msgbox-Anweisung hab ich nicht hinbekommen.



_________________
Moderation: Thema von OOo Calc nach OOo Basic und Java verschoben, wo alle Themen zur individuellen Programmierung hingehören.—lorbass, Moderator
Karolus
********
Beiträge: 7438
Registriert: Mo, 02.01.2006 19:48

Re: Zahl in msgbox formatieren - eleganter?

Beitrag von Karolus »

Hallo

Code: Alles auswählen

msgbox format(zeitfeld.Value + 0.333333333 , "[hh]:mm \h") 
Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Carsten01
*
Beiträge: 17
Registriert: Mi, 20.12.2006 17:10

Re: Zahl in msgbox formatieren - eleganter?

Beitrag von Carsten01 »

Danke, funktioniert hier leider nicht. (OO 1.1.5, da ich mich noch für keine aktuelle Version so richtig erwärmen konnte.)
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Zahl in msgbox formatieren - eleganter?

Beitrag von Stephan »

Dann rechne es mittels Operatoren aus:

Code: Alles auswählen

a = ((zeitfeld.Value + 0.333333333) + 0.33)*24
b = INT(a)
Msgbox b & ":" & INT((a - b)*60) & " h"


meinethalben substituiere auch noch das INT(), z.B.:

Code: Alles auswählen

a = ((zeitfeld.Value + 0.333333333) + 0.33)*24
For i = 0 To a
	b = i
Next i
For i = 0 To (a - b)*60
	c = i
Next i
Msgbox b & ":" & c & " h"
Gruß
Stephan
Antworten