前回も質問させて頂き回答をもらいましたが上手く出来ません。
再度教えて頂きたいです。
詳細は
A,D,F,H列に文字が入るとB,E,G,I列に文字を入れた時間が入るようになっており、
作業開始、中断、再開、終了時間と言うようになっております。
VBAで
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A:A,D:D,F:F,H:H")) Is Nothing Then Exit Sub
If Target.Count > 1 Then Exit Sub
If Target.Value = "" Then
Target.Offset(, 1).Value = ("")
Exit Sub
End If
Target.Offset(, 1).Value = Time()
End Sub
を入れています。
休憩時間を中断としていましたが作業者が何人もいて一つのPCなので休憩ごとの入力の手間を省くために休憩時間をまたぐ作業時間に対し自動で終了時間に休憩時間を差し引いた時間が出るようにしたく
Sub TEST1()
a = "10:37:0"
'7分引く
b = DateAdd("n", -7, a)
MsgBox b
End Sub
Sub TEST2()
a = "12:45:0"
'45分引く
b = DateAdd("n", -45, a)
MsgBox b
End Sub
Sub TEST3()
a = "15:08:0"
'8分引く
b = DateAdd("n", -8, a)
MsgBox b
End Sub
Sub TEST4()
a = "17:45:0"
'15分引く
b = DateAdd("n", -15, a)
MsgBox b
End Sub
を入れましたがVBAを教えて頂きそのままコピペしただけで私自身内容の理解もできてないのでこれが正解なのかも分かりません。
長文になりましたがどなたか教えて頂けないでしょうか?
宜しくお願い致します。
No.4ベストアンサー
- 回答日時:
こんにちは。
マクロの件、どこまでご存知なのでしょうか?
分からなくても、ネットで検索すれば、色々と情報は出て来るかと。
例えば、下記で検索すると、色々とヒットすると思います。
Excel VBA Worksheet_Change(ByVal Target As Range)
マクロの内容を理解しないと、次に変更が必要になった場合など、修正が
できないので、質問者さん自身が困る事になるかと思います。
No.3で載せたのが全てです。 最初から、色々と変わっていますが。
D列、F列は、使っていないという事で合っていますよね?
ただ、動作確認していないので、エラーになるかも知れませんが、
その際は、少し調べて対応してみて下さい。
それでもダメなら、再度質問すれば、誰かは回答して貰えるかと思います。
No.3
- 回答日時:
おはようございます。
A列=10:00、B列=10:00 ここは、B列に表示だけ
H列=12:30、I列=??? 休憩時間の最中の場合は?
→ ここの返信が欲しかったのですが、この様な場合はないでしょうか?
全て手入力で、動作確認していません。 また、エラーになるかも
知れませんが、適宜修正してみて下さい。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim BreakTime As Long
If Target.Count > 1 Then Exit Sub
if Target.Column <> 1 And Target.Column <> 8 then Exit sub
Application.EnableEvents = False
If Target.Value = "" Then
Target.Offset(, 1).Value = ("")
Application.EnableEvents = True
Exit Sub
End If
BreakTime = 0
If Target.Column = 1 Then
Target.Offset(, 1).Value = Time()
Else
If Target.Value >= "10:37" Then BreakTime = 7
If Target.Value >= "12:45" Then BreakTime = BreakTime + 45
If Target.Value >= "15:38" Then BreakTime = BreakTime + 8
If Target.Value >= "17:45" Then BreakTime = BreakTime + 45
Target.Offset(, 1).Value = DateAdd("n", -BreakTime, Time())
End If
Application.EnableEvents = True
End Sub
有難うございます!
申し訳ありません。
H列→終了と表示I列に終了時刻
休憩時間に作業開始をする事はありません。
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A:A,D:D,F:F,H:H")) Is Nothing Then Exit Sub
If Target.Count > 1 Then Exit Sub
If Target.Value = "" Then
Target.Offset(, 1).Value = ("")
Exit Sub
End If
Target.Offset(, 1).Value = Time()
End Sub
この後に貼り付けたらよろしいでしょうか?
No.2
- 回答日時:
おはようございます。
直接の回答ではありませんが、考え方は下記で合っているでしょうか?
A列と、H列は、バーコードリーダーでの読み取りで、時間入力になっているとゆう事でしょうか?
(例)
A列=10:00、B列=10:00 ここは、B列に表示だけ
H列=11:00、I列=10:53 I列は、休憩時間を差し引いた値 7分
A列=10:00、B列=10:00 ここは、B列に表示だけ
H列=13:00、I列=12:08 I列は、休憩時間を差し引いた値 7+45分
A列=10:00、B列=10:00 ここは、B列に表示だけ
H列=12:30、I列=??? 休憩時間の最中の場合は?
あと、個人的な意見になりますが、現状の表示だと解り難いと思います。
I列は、そのままの時間を入れて、J列に休憩のTotal時間を入れ、
K列に、実際に働いた時間を入れた方が良い様な気がします。
A列=10:00、B列=10:00 ここは、B列に表示だけ
H列=11:00、I列=11:00 I列は、H列に表示するだけ
J列=00:07、K列=00:53 J列は、Total休憩、K列は実際に働いた時間
もし、今までのフォーマットでなければ仕方ないですが。。。
回答ありがとうございます!
説明不足で申し訳ありません。
A,D,F,H列は全てバーコード読み込みです。
A列には作業に取り掛かる品番が入力されます。B列に取り掛かり始めた時刻が入力されます。C列に詳細、他の業務に移った場合D列に中断E列に中断した時刻、再度取り掛かったらF列に再開G列に再度取り掛かった時間そしてH列に終了I列に終了した時刻、別シートに中断、再開、を引いたトータルの合計を出しています。今までですと休憩開始も中断→再開をしていたのですがその手間を省きたくB列に時刻が入り休憩をまたぐ場合、終了時刻が入るI列に休憩時間を差し引いた時間を出したいのです。1作業にかかる工数時間を履歴としてとっています。
説明不足で申し訳ありませんが宜しくお願い致します。
No.1
- 回答日時:
こんばんは。
質問者さんがどの様な動作を希望していて、どううまくいかないのかを
説明して貰えないと、コードだけ見ても良く分かりません。
コードは、A、D、F、H列のどこかに文字を入れると、右隣のセルに、
現状の時間を入れている? 様に見えますが。
あと直接は関係ありませんが、下記コードは追加した方が良いと思います。
If Target.Count > 1 Then Exit Sub
Application.EnabeleEvents = False これを入れた方が良いと思います。
If Target.Value = "" Then
Target.Offset(, 1).Value = Time()
Application.EnabeleEvents = Ture これを入れた方が良いと思います。
End Sub
理由は、マクロでセルに文字を入れると、また、Worksheet_Change(
のコードが走ります。 まあ、先頭のif文で、Exit Subで抜けますが、
少し間違えると、永久ループに陥る可能性があります。
回答ありがとうございます!
説明不足で申し訳ありません。
休憩時間が10:30~10:37・12:00~12:45・15:00~15:38・
17:00~17:45となっています。
例えばA列:作業開始をバーコードでスキャンし開始時刻が10:00だったとするとB列に10:00と自動ででますH列:作業終了をスキャンし11:00だったとするとI列に終了時間の11:00がでます。この時に10:30~10:37の間の休憩時間7分間を終了時間から差し引いてI列に10:53と出るようにしたいのです。他の休憩時間もまたぐ場合もそのようにしたいのですが可能でしょうか?
説明が下手で伝わりにくいとは思いますが教えて頂けないでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) [Excel VBA] このコードでは行の挿入や行の消去をすると13のエラーが出てしまう。 3 2022/12/09 00:29
- Visual Basic(VBA) 【再々投稿】VBAのプログラムで動作しなくて困っています 8 2022/10/14 09:06
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Visual Basic(VBA) エクセルのVBAでダブルクリックでチェックを入れたあと 1 2022/10/26 20:30
- Visual Basic(VBA) VBAのトグルボタンでのマクロについて質問です 3 2022/10/10 17:23
- Visual Basic(VBA) 【再投稿】VBAで動作しなくて困っています 2 2022/10/11 11:05
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelの時間計算で経過時間から...
-
~時間を超えるの定義
-
仕事中の飲み物購入について
-
休憩中に話しかけてきた客に対...
-
フードコートで何も頼まずに休...
-
休憩中の店員
-
休憩中の店員(制服を着た状態...
-
複数の休憩時間がある場合の休...
-
ラブホって、支払う料金は2人合...
-
コンビニバイトで5時間の日に休...
-
派遣社員です。休憩時間の規則...
-
エクセルで休憩時間を計算した...
-
工場のライン作業は、お昼休憩...
-
車初心者マークなんですが、下...
-
今度、彼女と初めてラブホに行...
-
ここで仕事のこと愚痴愚痴言っ...
-
エクセルで休憩時間を引く時と...
-
店でのハンドのジェルネイルは...
-
Excelにて残業時間、休日出勤時...
-
ローソンでバイトしています。 ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ラブホって、支払う料金は2人合...
-
複数の休憩時間がある場合の休...
-
Excelの時間計算で経過時間から...
-
~時間を超えるの定義
-
「お先に休憩行ってきます」と...
-
休憩中に話しかけてきた客に対...
-
エクセルで休憩時間を計算した...
-
フードコートで何も頼まずに休...
-
車初心者マークなんですが、下...
-
皆さんおはようございます、ち...
-
今度、彼女と初めてラブホに行...
-
休憩中の店員(制服を着た状態...
-
お土産って
-
新人でコンビニバイトをしてる...
-
派遣社員です。休憩時間の規則...
-
一人暮らしの人って、毎日外出...
-
仕事中の飲み物購入について
-
休憩に入っていないのにその分...
-
休憩中の店員
-
コンビニバイトで5時間の日に休...
おすすめ情報