كيف أقوم بتنسيق Time in [h]: mm excel format باستخدام format () في VBA

هل من الممكن تنسيق الوقت بتنسيق [h]: mm باستخدام VBA؟

[h]: سيعرض تنسيق mm في excel 25 ساعة في الساعة 25:00 ، و 125 ساعة في تمام الساعة 125:00

لقد حاولت العديد من الأشياء مثل:

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

لا شيء من هذه لها التأثير المطلوب. لقد تلقيت أيضًا نظرة عبر مساعدة MS ولا يمكنني العثور على أي شيء مفيد.

0
التاريخ والوقت هو مجرد متغير مزدوج. والوظائف تعطي نتائج مختلفة. hh: mm هو الأقرب ، ولكنه يمنح ساعات فقط حتى 24 ساعة ، ويعرض 25 ساعة في تمام الساعة 01:00
وأضاف المؤلف Sam, مصدر
ما الذي ستحصل بدلاً منه على بدلاً من عما تتوقع الحصول عليه؟ كيف يتم تحديد datetime ، وكيف يتم نشره؟
وأضاف المؤلف Tim Williams, مصدر

4 إجابة

not with the format function, but you can use Range(MyData).NumberFormat = "[h]:mm"

0
وأضاف

يبدو أن الدالة تنسيق الخاصة بـ VBA ليس بها طريقة مضمنة للقيام بذلك. (تدوير العينين.)

هذه الوظيفة محلية الصنع ستقوم بما يلي:

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, مصدر

ضربني 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, مصدر

استخدم دالة ورقة العمل TEXT عبر كائن التطبيق ، على النحو التالي:

  x = Application.Text(.294,"[h]:mm")
0
وأضاف
+1: أفضل من استخدامي لخلية احتياطية في مكان ما
وأضاف المؤلف SeanC, مصدر