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

投稿するカテゴリーを間違えたため、削除して投稿しなおします。

現在、勤務表をエクセルにして管理しようと考えています。

システムからエクセルへ変換まではできるのですが、ここで一点問題が。
チェックをする際に出退勤の時刻を参照するのですが
業務内容によって時間が下記のようなものになっています。
 
   A     B
1 当 22:00 翌 5:00
2 当 00:00 翌 7:00
3   ・    ・
4   ・    ・
5   ・    ・

このような状態なのですが
先頭の文字が当なら削除して時間だけの表記
先頭の文字が翌なら24時間を足して(B1なら29:00)という表記
にしたいと考えています。

シートは何十枚にもわたって存在しますが
全て様式は同じなので、参照するセルは決まっています。
具体的にいいますと
G6:G36
I6:I36
K6:K36
M6:M36
N6:N36
P6:P36
の6箇所になります。

これらの作業をVBAで一括で行いと考えております。
ご教授願えますでしょうか。

よろしくお願いいたします。

A 回答 (1件)

こんにちは。



あまり複雑な状況でなければ、こんなマクロを使えばよいと思います。
いきなり本番ではなく、試し運転してからにしたほうがよいです。こちらの思惑とは違う可能性もありますから。

'//'標準モジュール
Sub TimeAmending()
 Dim i As Long
 Dim c As Range
 Dim d As Single, myTime As Variant
 For i = 1 To Worksheets.Count
  Application.ScreenUpdating = False
  With Worksheets(i)
   For Each c In .Range("G6:G36,I6:I36,K6:K36,M6:M36,N6:N36,P6:P36")
    If c.Value Like "[当翌]*" Then
    If Left(Trim(c.Value), 1) = "翌" Then d = 1
     myTime = Mid(Trim(c.Value), 2)
     c.NumberFormat = "[hh]:mm"
     c.Value = d + TimeValue(myTime)
    End If
    d = 0
   Next c
  End With
  Application.ScreenUpdating = True
 Next i
End Sub
    • good
    • 0
この回答へのお礼

試運転をしてみましたが、思ったとおりの処理ができました!
今から内容を紐解いて理解しようと思います。

大変、助かりました。
ベストアンサーにさせていただきます。

お礼日時:2017/01/11 16:22

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