[[20250201200934]] 『コロン入力せずに時間管理』(わちゃわちゃ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『コロン入力せずに時間管理』(わちゃわちゃ)

毎日の出勤管理のため
出勤時間、退勤時間、休憩時間を入力しています。
コロンを入力せずとも、時間の意味を持たせたいのですが、
どのようなVBAになりますでしょうか?
出勤時間がB列、退勤時間がC列、休憩時間がD列です。
E列以降でB列、C列、D列を使用した数式があります。
宜しくお願いします。

< 使用 Excel:Excel2021、使用 OS:Windows11 >


 >コロンを入力せずとも、時間の意味を持たせたいのですが、
 >どのようなVBAになりますでしょうか?

 VBAで具体的に何を実現すればいいんですか?

(半平太) 2025/02/01(土) 20:57:27


>コロンを入力せずとも、時間の意味を持たせたい
Excelの仕様を守りましよう。
(手抜きですか) 2025/02/01(土) 21:25:21

VBAではなく別の方面からのアプローチになりますけど、
>コロンを入力せずとも、時間の意味を持たせたい
というのが、テンキー入力の場合、コロンを入力するのが億劫等の理由であれば、
オートコレクトのオプションで、「..」(ピリオド2回)を「:」(コロン)に自動で変換する、
という手をWebでちょいちょい見かけます。
https://media.yayoi-kk.co.jp/9223/
(RB) 2025/02/01(土) 21:58:26

半平太様
説明不足ですみません。
例えば800と入力すれば、8:00となるようにしたいのです。
書式設定では、0":"00にすれば実現するのですが、
その場合セル自体は800のままなので、
時間の設定がおかしくなるので、困っております。

RB様
ありがとうございます。

(わちゃわちゃ) 2025/02/01(土) 22:03:11


 入力は別セルにして、B〜Dは数式をいれておけばどうですか。
(マナ) 2025/02/02(日) 05:44:05

大量に時刻を入力する作業がある場合、
テンキーだけ、かつ、なるべくタイプ数を減らしたい、
という要望は出てきますよね。

シートのChangeイベントに下記のコードでどうでしょうか。

 Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Target.Row = 1 Then Exit Sub
    If Target.Column = 1 Or Target.Column > 4 Then Exit Sub

    Dim sTime As String
    If Target.Text Like "###" Or Target.Text Like "####" Then
        sTime = Format(Target.Text, "0:00")
    ElseIf Target.NumberFormatLocal = "h:mm" Then
        sTime = Format(Target.Value, "0:00")
    End If

    If IsDate(sTime) Then
        Application.EnableEvents = False
        Target.NumberFormatLocal = "h:mm"
        Target.Value = sTime
        Application.EnableEvents = True
    End If
 End Sub

セルの書式は、標準かユーザー定義で h:mm と設定してあるという前提です。

(hatena) 2025/02/02(日) 11:52:20


 :の代わりに、左手で入力できるzキーなどをつかって 8z45 とか 9z12 とか入れて、最後にzを:に置換
 置換が面倒なら左手用デバイスを購入して、キーに:を割り当てる 
 購入が難しいなら、PowerToysなどキーマップを変更できるアプリでテンキーの+とか*に:を割り当てる 
 など
(密林) 2025/02/02(日) 13:49:19

マナ様
ありがとうございます。
それも考えたのですが、他のシートに数式がかなり入っており、
なかなかシートが重くなるので、VBAでと考えております。

hatena様
ありがとうございます!
明日会社のパソコンで挑戦してみます。

密林様
ありがとうございます。
(わちゃわちゃ) 2025/02/02(日) 14:12:57


>時間の設定がおかしくなるので、困っております。
だからExcelの仕様を守りましよう。
(手抜きですか) 2025/02/02(日) 14:59:26

ウチの職場は結局「時」と「分」の入力欄を分けました。
確かにテンキーだけで打てるし、誤入力への対策も考え易いだろうから、
まあ、妥当な判断だったと個人的には評価してます。
(白茶) 2025/02/02(日) 18:25:53

VBAで場当たり的に処理するのはお勧めではありません。
うっかり、意図したところと違うセルに入力した場合に、
「元に戻す」の機能が使えなくなります。
VBAでやるときは、「うっかり」をさせないように、
がっつりエクセルを制御したほうがいいかと思います。

セルには数字を必ず4桁入れるようにして、
セルの書式の表示形式を
00":"00
として表示させてはいかがでしょうか?
時間としての計算は数式を工夫することで、
いかようにも出来る気がします。
(まっつわん) 2025/02/03(月) 07:52:00


手抜きですか様
ありがとうございます

白茶様
なるほど、そういうやり方もあるのですね。
新たな発見です。

まっつわん様
そうなんですね、「元に戻す」機能が使えなくなるのは
知らなかったです。教えていただきありがとうございます。

(わちゃわちゃ) 2025/02/03(月) 08:18:43


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.