2012-06-21 1 views
8

VBAを使用して[h]:mm形式で時刻をフォーマットできますか?VBAのformat()関数を使用して時間を[h]:mmでフォーマットする方法

[H]:Excelでのミリフォーマットは25:00として25時間を示すであろう、125時間125として:00

Iは以下のようないくつか試してみた:これらの

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

なしを所望の効果を有する。私はまた、MSのヘルプを見ていたと何か有用なものを見つけることができませんでした。

フォーマット機能付き
+0

あなたは何を得ることが期待されているのですか? 'datetime'はどのように宣言されていますか? –

+0

datetimeは単なる二重変数です。関数は異なる結果を与えます。 hh:mmは最も近いですが、24時間までは時間を、25時間は01:00と表示します。 – Sam

答えて

14

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

x = Application.Text(.294,"[h]:mm") 
+0

+1:スペアセルをどこかで使うよりも優れています – SeanC

1

ませんが、あなたはVBAのFormat機能は、これを行うための組み込みの方法を持っていないように見えますRange(MyData).NumberFormat = "[h]:mm"

1

を使用することができます。

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 
+0

こんにちは。ありがとう、これは私が必要とするものを達成する素晴らしい方法です。私はそれをアップ票を与えたが、それは少しクリーナーのようにApplication.Textメソッドを受け入れるつもりだ。サム – Sam

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 
+0

これを書く時間を割いてくれてありがとう。それは非常に素晴らしい解決策です、私は票をあげました。 – Sam

関連する問題