[[20100312112651]] 『時刻の入力』(まゆ) >>BOT

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

 

『時刻の入力』(まゆ)
 出勤簿・日報に時刻で入力をしていますが、
 現在オートコレクトを使用して入力を○:○○をテンキーの.を使用して
 ○:○○分と入力していたんですが、
 他のエクセルを開いたときに小数点を使用する際に直してから
 使用している状態なんですが時間の:をテンキーの.で入力する方法は
 マクロを使用してできますでしょうか?

 こちらを参考にどうぞ
[[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)

ありがとうございました。(まゆ)

 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.