Ich habe eine Tabelle (x4), die Summe der Stunden von mehreren Mitarbeitern zusammen. Ein Mitarbeiter kommt insgesamt auf 24 Stunden. In meiner Funktion, aufgrund der Tatsache, wie Excel Stunden intern darstellt, entspricht das 1. Basierend auf dem Wert von "Stunden" formatiert es dann die Zelle, um die Gesamtstunden anzuzeigen: min für jede Person. Ich habe überprüft - Typname (Stunden) = double. Ich kann nicht sehen, warum Stunden> = 1 nicht mit "Wahr" gleichgesetzt wird, wenn Stunden = 1 sind. Wenn ich den Tabellenwerten für diese Person 1 Minute hinzufüge, funktioniert das wie erwartet?Excel VBA - Logikfehler
Public Function format_hours(hours As Variant) As Variant
If hours >= 1 Then
format_hours = Application.Text(hours, "[hh]:mm")
ElseIf hours > 0 Then
format_hours = Format(hours, "hh:mm")
Else
format_hours = 0
End If
End Function
Die Verwendung von 'Variant' wird nicht empfohlen. Sie werden davon profitieren, wenn Sie Ihre Variablentypen stärker spezifizieren. (Außerdem fehlt ein 'f' in' format_hours' - Verwenden Sie 'Option Explicit', um solche Fehler zu vermeiden.) – braX
Ich habe gerade festgestellt, dass meine Variable 'hours' einen führenden Platz hat. Wenn Sie es entfernen, funktioniert die Logik wie erwartet. Woher kommt dieser Raum? – Chas
Schwer zu wissen, ohne zu sehen, wie diese Funktion aufgerufen wird. Wenn Sie Ihr Argument als Zahl anstelle einer Variante angegeben haben, hätten Sie dies früher bemerkt. – braX