質問編集履歴

3

プログラム修正後のコードに編集

2017/09/28 02:29

投稿

King_of_Flies
King_of_Flies

スコア382

test CHANGED
File without changes
test CHANGED
@@ -32,405 +32,157 @@
32
32
 
33
33
 
34
34
 
35
-
35
+ ozwkさんの回答を参考に修正した後のコードです。
36
36
 
37
37
  ```vba
38
38
 
39
39
  Sub CellSetter()
40
40
 
41
- For i = 6 To rowsCount
41
+ For i = 6 To rowsCount
42
42
 
43
- '作業着手予定日が空ならFor文から抜ける
43
+ '作業着手予定日が空ならFor文から抜ける
44
44
 
45
- If Cells(i, 2).Value = "" Then
45
+ If Cells(i, 2).Value = "" Then
46
46
 
47
- Exit For
47
+ Exit For
48
48
 
49
- End If
49
+ End If
50
50
 
51
- 'B6セルから末端までのデータを一時的に格納する。
51
+ 'B6セルから末端までのデータを一時的に格納する。
52
52
 
53
- cellDateB = Cells(i, 2).Value
53
+ cellDateB = Cells(i, 2).Value
54
54
 
55
- 'C6セルから末端までのデータを一時的に格納する。
55
+ 'C6セルから末端までのデータを一時的に格納する。
56
56
 
57
- cellDateC = Cells(i, 3).Value
57
+ cellDateC = Cells(i, 3).Value
58
58
 
59
- 'D6セルから末端までのデータを一時的に格納する。
59
+ 'D6セルから末端までのデータを一時的に格納する。
60
60
 
61
- cellDateD = Cells(i, 4).Value
61
+ cellDateD = Cells(i, 4).Value
62
62
 
63
-
63
+ '①
64
64
 
65
- If cellDateC < cellDateFrom Then
65
+ If cellDateC < cellDateFrom Then
66
66
 
67
- Select Case cellDateD
67
+ Call Selecter(i, cellDateD, C_START, C_END, C_START, C_END_LATE, C_START_LATE, C_END_LATE)
68
68
 
69
- Case 100
69
+ '②
70
70
 
71
- Cells(i, 5).Value = C_START_EMP
71
+ ElseIf cellDateB < cellDateFrom And cellDateC = cellDateTo Then
72
72
 
73
- Cells(i, 6).Value = C_END
73
+ Call Selecter(i, cellDateD, C_START, C_END, C_START, C_END_LATE, C_START_LATE, C_END_LATE)
74
74
 
75
- Case 1 To 99
75
+ '③
76
76
 
77
- Cells(i, 5).Value = C_START
77
+ ElseIf cellDateB < cellDateFrom And cellDateFrom < cellDateC And cellDateC < cellDateTo Then
78
78
 
79
- Cells(i, 6).Value = C_END_LATE
79
+ Call Selecter(i, cellDateD, C_START, C_END, C_START, C_END_LATE, C_START_LATE, C_END_LATE)
80
80
 
81
- Case 0
81
+ '④
82
82
 
83
- Cells(i, 5).Value = C_START_LATE
83
+ ElseIf cellDateFrom = cellDateB And cellDateFrom < cellDateC And cellDateC < cellDateTo Then
84
84
 
85
- Cells(i, 6).Value = C_END_LATE
85
+ Call Selecter(i, cellDateD, C_START, C_END, C_START, C_END_LATE, C_START_LATE, C_END_LATE)
86
86
 
87
- End Select
87
+ '⑤
88
88
 
89
- ElseIf cellDateB < cellDateFrom And cellDateFrom < cellDateC And cellDateC < cellDateTo Then
89
+ ElseIf cellDateFrom < cellDateB And cellDateB < cellDateTo And cellDateFrom < cellDateC And cellDateC < cellDateTo Then
90
90
 
91
- Select Case cellDateD
91
+ Call Selecter(i, cellDateD, C_START, C_END, C_START, C_END_LATE, C_START_LATE, C_END_LATE)
92
92
 
93
- Case 100
93
+ '⑥
94
94
 
95
- Cells(i, 5).Value = C_START_EMP
95
+ ElseIf cellDateFrom < cellDateB And cellDateB < cellDateTo And cellDateC = cellDateTo Then
96
96
 
97
- Cells(i, 6).Value = C_END
97
+ Call Selecter(i, cellDateD, C_START, C_END, C_START, C_END_LATE, C_START_LATE, C_END_LATE)
98
98
 
99
- Case 1 To 99
99
+ '⑦
100
100
 
101
- Cells(i, 5).Value = C_START
101
+ ElseIf cellDateFrom < cellDateB And cellDateB < cellDateTo And cellDateTo < cellDateC Then
102
102
 
103
- Cells(i, 6).Value = C_END_LATE
103
+ Call Selecter(i, cellDateD, C_START, C_END_FIRST, C_START, C_END_EMP, C_START_LATE, C_END_EMP)
104
104
 
105
- Case 0
105
+ '⑧
106
106
 
107
- Cells(i, 5).Value = C_START_LATE
107
+ ElseIf cellDateB = cellDateTo And cellDateTo < cellDateC Then
108
108
 
109
- Cells(i, 6).Value = C_END_LATE
109
+ Call Selecter(i, cellDateD, C_START, C_END_FIRST, C_START, C_END_EMP, C_START_LATE, C_END_EMP)
110
110
 
111
- End Select
111
+ '⑨
112
112
 
113
- ElseIf cellDateB = cellDateFrom And cellDateC = cellDateTo Then
113
+ ElseIf cellDateTo < cellDateB Then
114
114
 
115
- Select Case cellDateD
115
+ Call Selecter(i, cellDateD, C_START_FIRST, C_END_FIRST, C_START_FIRST, C_END_EMP, C_START_EMP, C_END_EMP)
116
116
 
117
- Case 100
117
+ '⑩
118
118
 
119
- Cells(i, 5).Value = C_START_EMP
119
+ ElseIf cellDateB < cellDateFrom And cellDateFrom = cellDateC Then
120
120
 
121
- Cells(i, 6).Value = C_END
121
+ Call Selecter(i, cellDateD, C_START, C_END, C_START, C_END_LATE, C_START_LATE, C_END_LATE)
122
122
 
123
- Case 1 To 99
123
+ '⑪
124
124
 
125
- Cells(i, 5).Value = C_START
125
+ ElseIf cellDateB = cellDateFrom And cellDateC = cellDateTo Then
126
126
 
127
- Cells(i, 6).Value = C_END_LATE
127
+ Call Selecter(i, cellDateD, C_START, C_END, C_START, C_END_LATE, C_START_LATE, C_END_LATE)
128
128
 
129
- Case 0
129
+ '⑫
130
130
 
131
- Cells(i, 5).Value = C_START_LATE
131
+ ElseIf cellDateB = cellDateFrom And cellDateTo < cellDateC Then
132
132
 
133
- Cells(i, 6).Value = C_END_LATE
133
+ Call Selecter(i, cellDateD, C_START, C_END_FIRST, C_START, C_END_EMP, C_START_LATE, C_END_EMP)
134
134
 
135
- End Select
135
+ '⑬
136
136
 
137
- ElseIf cellDateFrom = cellDateB And cellDateFrom < cellDateC And cellDateC < cellDateTo Then
137
+ ElseIf cellDateB < cellDateFrom And cellDateTo < cellDateC Then
138
138
 
139
- Select Case cellDateD
139
+ Call Selecter(i, cellDateD, C_START, C_END_FIRST, C_START, C_END_EMP, C_START_LATE, C_END_EMP)
140
140
 
141
- Case 100
141
+ '⑭
142
142
 
143
- Cells(i, 5).Value = C_START_EMP
143
+ ElseIf cellDateB = cellDateFrom And cellDateC = cellDateFrom Then
144
144
 
145
- Cells(i, 6).Value = C_END
145
+ Call Selecter(i, cellDateD, C_START, C_END, C_START, C_END_LATE, C_START_LATE, C_END_LATE)
146
146
 
147
- Case 1 To 99
147
+ '⑮
148
148
 
149
- Cells(i, 5).Value = C_START
149
+ ElseIf cellDateB = cellDateTo And cellDateC = cellDateTo Then
150
150
 
151
- Cells(i, 6).Value = C_END_LATE
151
+ Call Selecter(i, cellDateD, C_START, C_END, C_START, C_END_LATE, C_START_LATE, C_END_LATE)
152
152
 
153
- Case 0
153
+ End If
154
154
 
155
- Cells(i, 5).Value = C_START_LATE
155
+ Next i
156
156
 
157
- Cells(i, 6).Value = C_END_LATE
157
+ End Sub
158
158
 
159
- End Select
159
+ 'メソッド名は後で考えます。
160
160
 
161
- ElseIf cellDateFrom < cellDateB And cellDateB < cellDateTo And cellDateTo < cellDateC Then
161
+ Sub Selecter(count As Variant, cellDateD As Integer, str1 As String, str2 As String, str3 As String, str4 As String, str5 As String, str6 As String)
162
162
 
163
- Select Case cellDateD
163
+ Select Case cellDateD
164
164
 
165
- Case 100
165
+ Case 100
166
166
 
167
- Cells(i, 5).Value = C_START_EMP
167
+ Cells(count, 5).Value = str1
168
168
 
169
- Cells(i, 6).Value = C_END_FIRST
169
+ Cells(count, 6).Value = str2
170
170
 
171
- Case 1 To 99
171
+ Case 1 To 99
172
172
 
173
- Cells(i, 5).Value = C_START
173
+ Cells(count, 5).Value = str3
174
174
 
175
- Cells(i, 6).Value = C_END_EMP
175
+ Cells(count, 6).Value = str4
176
176
 
177
- Case 0
177
+ Case 0
178
178
 
179
- Cells(i, 5).Value = C_START_LATE
179
+ Cells(count, 5).Value = str5
180
180
 
181
- Cells(i, 6).Value = C_END_EMP
181
+ Cells(count, 6).Value = str6
182
182
 
183
- End Select
183
+ End Select
184
184
 
185
- ElseIf cellDateTo < cellDateB Then
186
-
187
- Select Case cellDateD
188
-
189
- Case 100
190
-
191
- Cells(i, 5).Value = C_START_FIRST
192
-
193
- Cells(i, 6).Value = C_END_FIRST
194
-
195
- Case 1 To 99
196
-
197
- Cells(i, 5).Value = C_START_FIRST
198
-
199
- Cells(i, 6).Value = C_END_EMP
200
-
201
- Case 0
202
-
203
- Cells(i, 5).Value = C_START_EMP
204
-
205
- Cells(i, 6).Value = C_END_EMP
206
-
207
- End Select
208
-
209
- ElseIf cellDateB < cellDateFrom And cellDateC = cellDateTo Then
210
-
211
- Select Case cellDateD
212
-
213
- Case 100
214
-
215
- Cells(i, 5).Value = C_START_EMP
216
-
217
- Cells(i, 6).Value = C_END
218
-
219
- Case 1 To 99
220
-
221
- Cells(i, 5).Value = C_START
222
-
223
- Cells(i, 6).Value = C_END_LATE
224
-
225
- Case 0
226
-
227
- Cells(i, 5).Value = C_START_LATE
228
-
229
- Cells(i, 6).Value = C_END_LATE
230
-
231
- End Select
232
-
233
- ElseIf cellDateB = cellDateFrom And cellDateFrom < cellDateC And cellDateC < cellDateTo Then
234
-
235
- Select Case cellDateD
236
-
237
- Case 100
238
-
239
- Cells(i, 5).Value = C_START_EMP
240
-
241
- Cells(i, 6).Value = C_END
242
-
243
- Case 1 To 99
244
-
245
- Cells(i, 5).Value = C_START
246
-
247
- Cells(i, 6).Value = C_END_LATE
248
-
249
- Case 0
250
-
251
- Cells(i, 5).Value = C_START_LATE
252
-
253
- Cells(i, 6).Value = C_END_LATE
254
-
255
- End Select
256
-
257
- ElseIf cellDateB < cellDateFrom And cellDateTo < cellDateC Then
258
-
259
- Select Case cellDateD
260
-
261
- Case 100
262
-
263
- Cells(i, 5).Value = C_START_EMP
264
-
265
- Cells(i, 6).Value = C_END_FIRST
266
-
267
- Case 1 To 99
268
-
269
- Cells(i, 5).Value = C_START
270
-
271
- Cells(i, 6).Value = C_END_EMP
272
-
273
- Case 0
274
-
275
- Cells(i, 5).Value = C_START_LATE
276
-
277
- Cells(i, 6).Value = C_END_EMP
278
-
279
- End Select
280
-
281
- ElseIf cellDateFrom < cellDateB And cellDateB < cellDateTo And cellDateFrom < cellDateC And cellDateC < cellDateTo Then
282
-
283
- Select Case cellDateD
284
-
285
- Case 100
286
-
287
- Cells(i, 5).Value = C_START_EMP
288
-
289
- Cells(i, 6).Value = C_END
290
-
291
- Case 1 To 99
292
-
293
- Cells(i, 5).Value = C_START
294
-
295
- Cells(i, 6).Value = C_END_LATE
296
-
297
- Case 0
298
-
299
- Cells(i, 5).Value = C_START_LATE
300
-
301
- Cells(i, 6).Value = C_END_LATE
302
-
303
- End Select
304
-
305
- ElseIf cellDateC = cellDateFrom Then
306
-
307
- Select Case cellDateD
308
-
309
- Case 100
310
-
311
- Cells(i, 5).Value = C_START_EMP
312
-
313
- Cells(i, 6).Value = C_END
314
-
315
- Case 1 To 99
316
-
317
- Cells(i, 5).Value = C_START
318
-
319
- Cells(i, 6).Value = C_END_LATE
320
-
321
- Case 0
322
-
323
- Cells(i, 5).Value = C_START_LATE
324
-
325
- Cells(i, 6).Value = C_END_LATE
326
-
327
- End Select
328
-
329
- ElseIf cellDateB = cellDateTo And cellDateTo < cellDateC Then
330
-
331
- Select Case cellDateD
332
-
333
- Case 100
334
-
335
- Cells(i, 5).Value = C_START_EMP
336
-
337
- Cells(i, 6).Value = C_END_FIRST
338
-
339
- Case 1 To 99
340
-
341
- Cells(i, 5).Value = C_START
342
-
343
- Cells(i, 6).Value = C_END_EMP
344
-
345
- Case 0
346
-
347
- Cells(i, 5).Value = C_START_LATE
348
-
349
- Cells(i, 6).Value = C_END_EMP
350
-
351
- End Select
352
-
353
- ElseIf cellDateFrom < cellDateB And cellDateB < cellDateTo And cellDateC = cellDateTo Then
354
-
355
- Select Case cellDateD
356
-
357
- Case 100
358
-
359
- Cells(i, 5).Value = C_START
360
-
361
- Cells(i, 6).Value = C_END
362
-
363
- Case 1 To 99
364
-
365
- Cells(i, 5).Value = C_START
366
-
367
- Cells(i, 6).Value = C_END_LATE
368
-
369
- Case 0
370
-
371
- Cells(i, 5).Value = C_START_LATE
372
-
373
- Cells(i, 6).Value = C_END_LATE
374
-
375
- End Select
376
-
377
- ElseIf cellDateB = cellDateTo And cellDateC = cellDateTo Then
378
-
379
- Select Case cellDateD
380
-
381
- Case 100
382
-
383
- Cells(i, 5).Value = C_START_EMP
384
-
385
- Cells(i, 6).Value = C_END
386
-
387
- Case 1 To 99
388
-
389
- Cells(i, 5).Value = C_START
390
-
391
- Cells(i, 6).Value = C_END_LATE
392
-
393
- Case 0
394
-
395
- Cells(i, 5).Value = C_START_LATE
396
-
397
- Cells(i, 6).Value = C_END_LATE
398
-
399
- End Select
400
-
401
- ElseIf cellDateB = cellDateFrom And cellDateTo < cellDateC Then
402
-
403
- Select Case cellDateD
404
-
405
- Case 100
406
-
407
- Cells(i, 5).Value = C_START_EMP
408
-
409
- Cells(i, 6).Value = C_END_FIRST
410
-
411
- Case 1 To 99
412
-
413
- Cells(i, 5).Value = C_START
414
-
415
- Cells(i, 6).Value = C_END_EMP
416
-
417
- Case 0
418
-
419
- Cells(i, 5).Value = C_START_LATE
420
-
421
- Cells(i, 6).Value = C_END_EMP
422
-
423
- End Select
424
-
425
- End If
426
-
427
-
428
-
429
- Next i
430
-
431
-
432
-
433
- End Sub
185
+ End Sub
434
186
 
435
187
  ```
436
188
 

2

追記

2017/09/28 02:29

投稿

King_of_Flies
King_of_Flies

スコア382

test CHANGED
File without changes
test CHANGED
@@ -433,3 +433,11 @@
433
433
  End Sub
434
434
 
435
435
  ```
436
+
437
+
438
+
439
+ 追記
440
+
441
+ どうしてこのような分岐パターンができたのかという画像があったのですが、
442
+
443
+ イメージの追加ができませんでした。

1

パターンの画像を追加。

2017/09/27 08:33

投稿

King_of_Flies
King_of_Flies

スコア382

test CHANGED
File without changes
test CHANGED
File without changes