dポイントプレゼントキャンペーン実施中!

始業と終業の時間を入力し勤務時間を計算しております。
時間は時:分:秒まで入力します。
例えば始業時間はA1に8:30:25 、終業時間はB1に17:00:45と入れております。
コロン(:)を省略できるととても楽になります。8:30:25は83025と入力、17:00:45は170045と入力して、
表示にはコロンが入り、セルの書式としては時刻と認識し時間差を(時間:分:秒)と計算出来ればありがたいです。
よろしくお願い致します。

質問者からの補足コメント

  • VBAを使った(時間:分)のコロンを入力しないで、かつ表示にはコロンが入り、セルの書式としては時刻と認識し時間計算が出来る例は検索できました。 ですがそれを秒まで拡大し(時間:分:秒)に対応できるVBAに変更できず困っております。
    何卒よろしくお願い致します。

    No.2の回答に寄せられた補足コメントです。 補足日時:2017/04/20 10:51

A 回答 (4件)

セルの書式設定は事前に「hh:mm:ss」にしておいて以下のコードを対象のシートモジュールに書き込んでください。


-----------------------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If IsNumeric(Target.Value) = False Then Exit Sub
If Target.Value > 240000 Then Exit Sub
If Target.Value < 0 Then Exit Sub
Application.EnableEvents = False
Target.Value = CDate(Format(Target.Value, "00:00:00"))
Application.EnableEvents = True
End Sub
-----------------------------------------------------------------------------
ただしこのままだと、対象のシートで「0」から「240000」の数字は全て時間に変更されてしまいます。対象セル以外ではコードが実行されないようにしてください。
    • good
    • 0

VBAでやるなら、検索したコードを提示すればわかる方が修正してくださるかもしれません。


私はマクロはさっぱりなので。

あと一つ提案として、入力作業は書式設定を「00":"00":"00」にして6桁で入力。
例として「12:34:56」となってももちろんデータは「123456」などのただの6桁の数値です。
これをコピーし、クリップボードを立ち上げて同じ場所に貼り付けなおすと、シリアル値に変換されています。
列とか行単位でまとめて入力とかならちょっとは手間が減るかなと。
ただ、ミスで時刻としてあり得ないデータが入ったら文字列になってしまいます。(56:78:90とか。)
    • good
    • 0

一定の期間を置いて何度も出てくる質問なので、ご自分で検索すれば様々なやり方が出てくると思います。


個人的にはマクロを使わないなら、きちんと:を入力することをお勧めします。

入力が面倒なら、オートコレクトで「..」(ピリオド2つ)を「:」に変換するように登録しておけばテンキーのみで入力できるので、大分入力が楽になるかと思います。
この回答への補足あり
    • good
    • 0

無理やり表示形式を変更する事はできるかと思いますが、


それを時間として計算するためには、その計算内で時間に変換するか、別のセルで時間に変換して計算に使用するか、結局換算させる必要が生じます。

入力セルを別の場所にして、
仮にAA1とします。
A1=TIME(LEFT(AA1,LEN(AA1)-4),LEFT(RIGHT(AA1,4),2),RIGHT(AA1,2))
とすれば、A1にAA1に入力した数字を時間に直したものが表示されるはずです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています