AW: Funktion Dezimal -> Zeit/ Variablen-Deklaration
Jürgen
Hallo Mike,
Du machst Dir das Leben zu schwer. Wenn Du das Ergebnis im Arbeitsblatt brauchst, verwendest Du einfach die Funktion "Zeit(Stunde;Minute;Sekunde)", die es Dir auch nicht übel nimmt, wenn für Minuten ein Wert größer 60 eingegeben wird. In VBA macht "Timeserial" das gleiche.
In Deiner Funktion kommt es zu den unerwarteten Ergebnissen, weil Du Dich nicht konsequent genug dafür entschieden hast, was sie zurückliefern soll. Ein Zeit / Datumsausdruck? Dann solltest Du die Funktion "As date" deklarieren und die Formatierung dort vornehmen, wo die Zahl benötigt wird (also Zellformat oder in VBA: Format(Minute(1234), "hh:mm:ss").
Wenn Du die Funktion als Variant deklarierst, bekommst Du einen Text zurück, weil "Format(D, "hh:mm:ss") einen String zurückliefert, der (anders als bei einer Funktionsdeklaration "as Date") nicht mehr einer automatischen Typkonvertierung unterzogen wird.
Gruß, Jürgen