[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『時刻の入力』(まゆ)
出勤簿・日報に時刻で入力をしていますが、 現在オートコレクトを使用して入力を○:○○をテンキーの.を使用して ○:○○分と入力していたんですが、 他のエクセルを開いたときに小数点を使用する際に直してから 使用している状態なんですが時間の:をテンキーの.で入力する方法は マクロを使用してできますでしょうか?
こちらを参考にどうぞ [[20040523125849]] 『時間入力の自動変換』(koko) (てつろう)
こちらの方法は現在使用している方法です。(まゆ)
あー、すみません。失礼しました。 これをマクロでってことですね。 回答を待ちましょう。。。 (てつろう)
現在使用している方法は「.」→「:」 過去ログの方法は「..」→「:」
この様にしておけば、小数点を入力する時は気にしなくて良くなると思いますが。
まぁ、「..」を単独で二回入力する事も有るし とにかくオートコレクトは嫌だからマクロでしたい って事かもしれませんが。
どうなんでしょう?
(HANA)
条件によりますけど、全てを変換すると小数点が使えないので 表示形式に時間が設定されている場合(「:」がある場合)に「.」を「:」に変換する感じだと
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub With Target If .NumberFormatLocal Like "*:*" Then Application.EnableEvents = False .Value = Int(.Value) & ":" & (.Value - Int(.Value)) * 100 Application.EnableEvents = True End If End With End Sub
となります。 (momo)全然ダメでしたのでロジック変更 12:09
すみません。 このコードを貼り付けて使用すればよろしいのでしょうか? そのまま貼り付けたらマクロが空白でした。(まゆ)
使いたいシートのオブジェクトモジュールに貼り付けるだけです。
あとは時間にしたいセルの表示形式を時間にしておけば セルに小数点で入力すれば自動で変換されます。 (momo)
22:01〜22:58までが数字が変換されません。 5:00前・22:00以降を深夜として何時間or何分と計算を自動でできますか? (まゆ)
>22:01〜22:58までが数字が変換されません。 少し変更しました。
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub With Target If .NumberFormatLocal Like "*:*" Then Application.EnableEvents = False .Value = Int(.Value) & ":" & Round((.Value - Int(.Value)) * 100, 0) Application.EnableEvents = True End If End With End Sub
>5:00前・22:00以降を深夜として何時間or何分と計算を自動でできますか? 新しい質問でしょうか? まったく意味が解らないのですが、どの時間をどこにどのように計算するのですか? (momo)
失礼しました。 22:01〜4:59までの時間を深夜残業として計算しているんですけど 現在は関数(TIME(5,0,0))・(TIME(22,0,0))と計算式をいれて隣の行に○○:○○と 時間を入れていたんですが (まゆ)
>時間を入れていたんですが ですが・・・なんでしょう? その関数の意味もわかりませんし、まゆさんが作られているシートも私には見えないので・・・
回答者がまゆさんのシートの状態を完全に再現できるだけの情報を載せていただいたうえで どこがどうわからないのかを質問してみてください。 また、その際に実際に欲しい結果も示してください。 (momo)
すみませんでした。 出勤時刻が4:30の場合深夜残業が29分 退勤時刻が22:25の場合深夜残業が25分という計算をしています。 関数を入れていたのは実際4:30〜4:59で0:29と記載する為に入れていた関数なんですが momoさんのコードを入力して4:30と4.30と入力してでるようになったんですが 深夜残業分の計算をマクロでは登録できますでしょうか? (まゆ)
マクロでセルに出力するためには、どのシートのどのセルにどんな値を と、細かく指示しなければなりません。
>まゆさんのシートの状態を完全に再現できるだけの情報を載せていただいたうえで これが無いと回答できないのです。
単純に引き算でまゆさんが求める結果が出るのであれば その関数を希望するセルに記入する事をマクロ記録すればコードが得られます。 (momo)
Sheet2 E5〜E35が出勤時刻を入力する行です。 F5〜F35が退勤時刻を入力する行です。 G5〜G35に深夜残業の計算をいれたいんです。 出勤 退勤 残業 E5 4:30 F5 15:00 G5 0:30とこんな感じなのですが伝わりますでしょうか? (まゆ)
最初の質問では >出勤時刻が4:30の場合深夜残業が29分 >実際4:30〜4:59で0:29と記載する
今回は >E5 4:30 F5 15:00 G5 0:30
実際4:30の場合は29分なのですか?30分なのですか?
適宜その辺を変更してください
Private Sub Worksheet_Change(ByVal Target As Range) Const Sinya1 As Date = "4:59" '深夜終了時間 Const Sinya2 As Date = "22:00" '深夜開始時間 Dim myTime As Date, buf As Long If Target.Count > 1 Then Exit Sub If Application.Intersect(Target, Me.Range("E5:F35")) Is Nothing Then Exit Sub Application.EnableEvents = False With Target If .NumberFormatLocal Like "*:*" Then .Value = Int(.Value) & ":" & Round((.Value - Int(.Value)) * 100, 0) End If If Me.Range("E" & .Row).Value <> "" And Me.Range("F" & .Row).Value <> "" Then myTime = TimeValue(Me.Range("E" & .Row).Text) If myTime < Sinya1 Then buf = DateDiff("n", myTime, Sinya1) End If myTime = TimeValue(Me.Range("F" & .Row).Text) If myTime > Sinya2 Then buf = buf + DateDiff("n", Sinya2, myTime) End If Me.Range("G" & .Row).Value = TimeSerial(0, buf, 0) End If End With Application.EnableEvents = True End Sub
(momo)
すみません。 実際4:30の場合は30分です。 できました。 ありがとうございました。 (まゆ)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.