セルへセットした24:00以上の時刻を25:00のようにそのまま表示するには?
Question 062k   Previous Next
377ページ [5-2-4図] ◆ 環境・・ Excel 2003 & Windows XP
詳細は こちら
Excel VBA マクロ組み方講座 P377のテキストボックス1・2に時刻(8:00等)を入力して、それをセルにセットするように、
Format("h:mm") または ("[h]:mm") を使ってやってみました。
ところが、28:00等、24時を超えると、4:00のようになってしまいます。
どこをどうしたらよいでしょうか? 教えていただければ幸いです。
(一応、TextBox1を開始時刻、TextBox2を終了時刻、TextBox3を休憩時間数にしています。)
Answer   Copyright (C) 2009.11.28 永井善王
拙著 「Excel VBA マクロ 組み方講座」 をご愛読、ありがとうございます。

あなたは、ほとんどおわかりで、あと少しで完成ですね。

お悩みの部分に的を絞るため、シンプルな右図のケースのマクロをお示しします。 参考にして仕上げてください。
Private Sub CommandButton1_Click()
    開始 = TextBox1.Value
    終了 = TextBox2.Value
    休憩 = TextBox3.Value
    行 = Range("K" & Rows.Count).End(xlUp).Row + 1
    Cells(行, 11) = Format(開始, "h:mm")
    Cells(行, 12) = Format(終了, "h:mm")        '26:00:00のように表示されてしまう
    Cells(行, 12).NumberFormatLocal = "[h]:mm"  '26:00のように表示される
    Cells(行, 13) = Format(休憩, "h:mm")
End Sub
24:00以上になるのは終了時刻だけかと思われますので、8行目のコードで対策しています。
図のように、終了時刻のテキストボックスへ 26:00 と入力した値は、7行目のコードで L列のセルへセットすると
26:00:00 と表示されてしまいます。(Excel2003で確認 … Excelの仕様?)
それを 8行目のコードの NumberFormatLocalプロパティで表示形式を設定し直すと 26:00 と表示されます。
では、早速試して、上手くいったらご連絡ください。
ありがとうございました
早速のご回答ありがとうございました。 うまく行きました。
私事ですが、61歳になり、何か新しい事をと考えていました。 会社で毎日手で書いている総配表を作ってみようと思い、とりかかりました。
先生の本を再度読み直し作り始めましたが、最初はどうしたらよいか、どのようにしたらいいのか試行錯誤しました。 先生以外の本も購入しましたが、わかりずらく、結局先生の本に戻りました。 本当にありがとうございました。

 

Excel VBA Macro