teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

説明追記

2021/09/28 05:25

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -31,4 +31,23 @@
31
31
  ところが、このループ内で i は使っていないし、対象シートは ActiveSheet だけです。
32
32
  ループでの繰り返しは無駄に同じところの上書きしているだけになります。
33
33
 
34
- ですので、この2つの For ... Next文は不要です。
34
+ ですので、この2つの For ... Next文は不要です。
35
+ ---
36
+ さらに、余計なお節介をすれば、
37
+ 年月日を3セルに、時刻を2セルに分けて入力していますが、
38
+ 今後、このデータを利用して集計などを行うと思いますが、
39
+ そのとき、面倒なことになります。
40
+
41
+ 下記のように年月日、時刻、ぞれぞれ1セルに代入するようにした方がいいでしょう。
42
+ ```vba
43
+ With ActiveSheet
44
+ .Cells(tgtRow, 1).Value = DateSerial(Me.cb1.Value, Me.cb2.Value, Me.cb3.Value)
45
+ .Cells(tgtRow, 2).Value = TimeSerial(Me.TextBox1.Value, Me.TextBox2.Value, 0)'出勤時刻
46
+ .Cells(tgtRow, 3).Value = TimeSerial(Me.TextBox3.Value, Me.TextBox4.Value, 0)'退勤時刻
47
+ .Cells(tgtRow, 4).Value = TimeSerial(Me.TextBox5.Value, Me.TextBox6.Value, 0)'休憩開始時刻
48
+ .Cells(tgtRow, 5).Value = TimeSerial(Me.TextBox7.Value, Me.TextBox8.Value, 0)'休憩終了時刻
49
+ End With
50
+ ```
51
+ そうすれば下記のように簡単な式で勤務時間を計算できますし、見やすいと思います。
52
+
53
+ ![イメージ説明](7e763070638d1fc7efec31f051850cf5.png)