Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Funktion Dezimal -> Zeit/ Variablen-Deklaration

Betrifft: Funktion Dezimal -> Zeit/ Variablen-Deklaration von: Mike E.
Geschrieben am: 11.07.2008 18:00:45

Guten Tag zusammen,

ich habe eine Funktion erstellt, die Dezimalzahlen in das Zeitformat bringen soll.

Problem: deklariere ich die Funktion als Variant, wird zwar die korrekte Zeit angezeigt, aber als Text (linksbündig); deklariere ich hingegen als Date, dann wird zwar die korrekte Zahl angezeigt, allerdings ohne Format.



Public Function Minuten(Zahl As Variant) As Date <- diese Deklaration verändere ich.
Dim D As Variant
D = (Zahl / 24 / 60)

Minuten = Format(D, "hh:mm:ss")

End Function



Hat vielleicht jemand eine Idee, was ich falsch mache?

Besten dank für die Mühe und viele Grüße
Mike E.

  

Betrifft: AW: Funktion Dezimal -> Zeit/ Variablen-Deklaratio von: Peter W.
Geschrieben am: 11.07.2008 18:08:55

Servus,

definiere als Double und weiße das Format zu wo du es brauchst nicht in der Function (siehe unten).


Public Function Minuten(Zahl As Variant) As Double '<- diese Deklaration verändere ich.
Dim D As Variant
D = (Zahl / 24 / 60)

Minuten = D 'Format(D, "hh:mm:ss")

End Function



Sub t()
MsgBox Format(Minuten(12), "hh:mm:ss")
End Sub




Tabelle1
 A
100:12:00
2Zelle Formatiert als Uhrzeit
Formeln der Tabelle
A1 : =minuten(12)
 
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen    Excel Jeanie HTML  3.0    Download  


MfG
Peter


  

Betrifft: AW: Funktion Dezimal -> Zeit/ Variablen-Deklaratio von: Mike E.
Geschrieben am: 11.07.2008 18:19:56

Hallo Peter,

danke für Deine Mühe.
Ist man denn generell schlecht beraten, das Format in die Funktion zu integrieren? Denn: eine weitere Funktion, mit der ich drei Zellen verkette, um daraus ein Datum zu machen funktioniert mit der Formatierung als "DD.MM.YY" und ist auch tatsächlich ein Datum.

Beste Grüße von
Mike E.


  

Betrifft: AW: Funktion Dezimal -> Zeit/ Variablen-Deklaration von: Jürgen
Geschrieben am: 11.07.2008 18:20:29

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


  

Betrifft: AW: Funktion Dezimal -> Zeit/ Variablen-Deklaratio von: Mike E.
Geschrieben am: 11.07.2008 18:31:06

Hallo Jürgen,

das ergibt für meine Datenbasis leider durchaus Sinn... ;-)

Aber: vielen Dank für Deine Erklärung. Diese hat mich weitergebracht und wird mir bei der nächsten Funktion gewiss die Arbeit erleichern.

Dir und Peter W. meinen besten Dank und ein ungemein entspanntes Wochenende!

Es grüßt
Mike E.


 

Beiträge aus den Excel-Beispielen zum Thema "Funktion Dezimal -> Zeit/ Variablen-Deklaration"