10

VBAを使用して[h]:mm形式で時間をフォーマットすることは可能ですか?

[h]:mm 形式の Excel では、25 時間は 25:00、125 時間は 125:00 と表示されます。

私は次のようないくつかのことを試しました:

format(datetime, "[h]:mm")
format(datetime, "H:mm")
format(datetime, "hh:mm")

これらのどれも、望ましい効果はありません。MS のヘルプも調べましたが、役立つ情報は見つかりませんでした。

4

4 に答える 4

17

次のように、アプリケーション オブジェクトを介して TEXT ワークシート関数を使用します。

  x = Application.Text(.294,"[h]:mm")
于 2012-06-21T20:48:33.867 に答える
4

JFCは私を打ち負かしましたが、とにかくこれが私が思いついたものです...

Sub Test()
    Debug.Print FormatHM(24 / 24)       '24:00
    Debug.Print FormatHM(25 / 24)       '25:00
    Debug.Print FormatHM(48 / 24)       '48:00
    Debug.Print FormatHM(48.6 / 24) '48:36
End Sub

Function FormatHM(v As Double) As String
    FormatHM = Format(Application.Floor(v * 24, 1), "00") & _
                 ":" & Format((v * 1440) Mod 60, "00")

End Function
于 2012-06-21T20:29:24.077 に答える
1

VBA のFormat関数には、これを行う組み込みの方法がないようです。(目が回る。)

この自家製関数はトリックを行います:

Function HoursAndMinutes(datetime As Date) As String
    Dim hours As Integer
    Dim minutes As Integer
    hours = Int(datetime) * 24 + Hour(datetime) ' the unit of Date type is 1 day
    minutes = Round((datetime * 24 - hours) * 60)
    HoursAndMinutes = hours & ":" & Format(minutes, "00")
End Function

使用法:

    Dim datetime As Date
    datetime = TimeSerial(125, 9, 0) ' 125 hours and 9 minutes
    Debug.Print HoursAndMinutes(datetime) ' 125:09
于 2012-06-21T20:19:33.863 に答える
1

format 関数ではありませんが、使用できますRange(MyData).NumberFormat = "[h]:mm"

于 2012-06-21T18:13:08.653 に答える