質問編集履歴

6

BA後に改修したコート→BA後のコメントに対してさらに改修したコード

2017/09/29 06:29

投稿

King_of_Flies
King_of_Flies

スコア382

test CHANGED
File without changes
test CHANGED
@@ -264,138 +264,208 @@
264
264
 
265
265
 
266
266
 
267
- BA後の改修したコード
267
+ BA後のコメントに対してさらに改修したコード
268
-
268
+
269
- ```vba
269
+ ```vba
270
+
270
-
271
+ --セット条件に当てはまる引数をSetCellに渡す。
272
+
273
+ --pRow = 対象行数
274
+
275
+ --pClumn = 対象列数
276
+
271
- 'Eセルにデタセットするための分岐条件
277
+ --pDuaringPattern = 期間パタ
278
+
272
-
279
+ --pProgressSituation = 進捗状況
280
+
273
- Sub ECellSetter()
281
+ Sub SetCells(pClumn As Integer)
274
-
282
+
283
+
284
+
275
- For i = 6 To rowsCount
285
+ For pRow = 6 To rowsCount
286
+
287
+
288
+
276
-
289
+ --対象セルのデータを格納する。
290
+
277
- '作業着手予定日が空ならFor文から抜ける
291
+ pCellDate = Cells(pRow, pClumn).Value
292
+
278
-
293
+ --対象セルのデータの存在チェック
294
+
279
- If Cells(i, 2).Value = "" Then
295
+ If Cells(pRow, pClumn).Value = "" Then
280
296
 
281
297
  Exit For
282
298
 
283
299
  End If
284
300
 
285
- 'B6セルから末端までのデータを一時的に格納する。
286
-
287
- cellDateB = Cells(i, 2).Value
288
-
289
- 'D6セルから末端までのデータを一時的に格納する。
290
-
291
- cellDataD = Cells(i, 4).Value
292
-
293
301
 
294
302
 
303
+ --期間パターンを格納する変数。
304
+
305
+ Dim pDuringPattern As Integer
306
+
307
+ --期間パターンセット
308
+
295
- If cellDateB < cellDateFrom Then
309
+ If pCellDate < cellDateFrom Then
296
-
310
+
297
- Call SetCell(i, cellDataD, C_START, C_START, C_START_LATE, 5)
311
+ pDuringPattern = 0
298
-
312
+
299
- ElseIf cellDateB = cellDateFrom Then
313
+ ElseIf pCellDate = cellDateFrom Then
300
-
314
+
301
- Call SetCell(i, cellDataD, C_START, C_START, C_START_LATE, 5)
315
+ pDuringPattern = 1
302
-
316
+
303
- ElseIf cellDateFrom < cellDateB And cellDateB < cellDateTo Then
317
+ ElseIf cellDateFrom < pCellDate And pCellDate < cellDateTo Then
304
-
318
+
305
- Call SetCell(i, cellDataD, C_START, C_START, C_START_LATE, 5)
319
+ pDuringPattern = 2
306
-
320
+
307
- ElseIf cellDateB = cellDateTo Then
321
+ ElseIf pCellDate = cellDateTo Then
308
-
322
+
309
- Call SetCell(i, cellDataD, C_START, C_START, C_START_LATE, 5)
323
+ pDuringPattern = 3
310
-
324
+
311
- ElseIf cellDateTo < cellDateB Then
325
+ ElseIf cellDateTo < pCellDate Then
312
-
326
+
313
- Call SetCell(i, cellDataD, C_START_FIRST, C_START_FIRST, C_START_EMP, 5)
327
+ pDuringPattern = 4
314
328
 
315
329
  End If
316
330
 
317
331
 
318
332
 
333
+ --進捗状況を格納する変数
334
+
335
+ Dim pProgressSituation As Integer
336
+
337
+ --進捗状況セット
338
+
339
+ cellDataD = Cells(pRow, 4).Value
340
+
341
+ Select Case cellDataD
342
+
343
+ Case 100
344
+
345
+ pProgressSituation = 0
346
+
347
+ Case 0
348
+
349
+ pProgressSituation = 1
350
+
351
+ Case 1 To 99
352
+
353
+ pProgressSituation = 2
354
+
355
+ End Select
356
+
357
+
358
+
359
+ --セルに文字をセットする処理
360
+
361
+ Call SetCell(pRow, pClumn, pDuringPattern, pProgressSituation)
362
+
363
+
364
+
319
- Next i
365
+ Next pRow
366
+
367
+
320
368
 
321
369
  End Sub
322
370
 
323
371
 
324
372
 
325
- 'Fセルにデータセットするための分岐条件
326
-
327
- Sub FCellSetter()
328
-
329
- For i = 6 To rowsCount
330
-
331
- '作業着手予定日が空ならFor文から抜ける
332
-
333
- If Cells(i, 2).Value = "" Then
334
-
335
- Exit For
336
-
337
- End If
338
-
339
- 'C6セルから末端までのデータを一時的に格納する。
340
-
341
- cellDateC = Cells(i, 3).Value
342
-
343
- 'D6セルから末端までのデータを一時的に格納する。
344
-
345
- cellDataD = Cells(i, 4).Value
346
-
347
-
348
-
349
- If cellDateC < cellDateFrom Then
350
-
351
- Call SetCell(i, cellDataD, C_END, C_END_LATE, C_END_LATE, 6)
352
-
353
- ElseIf cellDateC = cellDateFrom Then
354
-
355
- Call SetCell(i, cellDataD, C_END, C_END_LATE, C_END_LATE, 6)
356
-
357
- ElseIf cellDateFrom < cellDateC And cellDateC < cellDateTo Then
358
-
359
- Call SetCell(i, cellDataD, C_END, C_END_LATE, C_END_LATE, 6)
360
-
361
- ElseIf cellDateC = cellDateTo Then
362
-
363
- Call SetCell(i, cellDataD, C_END, C_END_LATE, C_END_LATE, 6)
364
-
365
- ElseIf cellDateTo < cellDateC Then
366
-
367
- Call SetCell(i, cellDataD, C_END_FIRST, C_END_EMP, C_END_EMP, 6)
368
-
369
- End If
370
-
371
-
372
-
373
- Next i
373
+
374
+
375
+ --対象セルへの文字列セット処理。
376
+
377
+ --pString = セットする文字列
378
+
379
+ --pClumn = 2:着手状態 3:完了状況
380
+
381
+ --pProgressSituation = 0:進捗状況100% 1:進捗状況0% 2:進捗状況1~99%
382
+
383
+ --pDuringPattern = 期間のパターン 4:報告期間未満
384
+
385
+ Sub SetCell(pRow As Variant, pClumn As Integer, pDuringPattern As Integer, pProgressSituation As Integer)
386
+
387
+
388
+
389
+ --対象セルにセットする文字を格納する変数
390
+
391
+ Dim pString As String
392
+
393
+
394
+
395
+ If pClumn = 2 Then
396
+
397
+ If pDuringPattern = 4 Then
398
+
399
+ Select Case pProgressSituation
400
+
401
+ Case 0, 2
402
+
403
+ pString = C_START_FIRST
404
+
405
+ Case 1
406
+
407
+ pString = C_START_EMP
408
+
409
+ End Select
410
+
411
+ Else
412
+
413
+ Select Case pProgressSituation
414
+
415
+ Case 0, 2
416
+
417
+ pString = C_START
418
+
419
+ Case 1
420
+
421
+ pString = C_START_LATE
422
+
423
+ End Select
424
+
425
+ End If
426
+
427
+ Else
428
+
429
+ If pDuringPattern = 4 Then
430
+
431
+ Select Case pProgressSituation
432
+
433
+ Case 0
434
+
435
+ pString = C_END_FIRST
436
+
437
+ Case 1, 2
438
+
439
+ pString = C_END_EMP
440
+
441
+ End Select
442
+
443
+ Else
444
+
445
+ Select Case pProgressSituation
446
+
447
+ Case 0
448
+
449
+ pString = C_END
450
+
451
+ Case 1, 2
452
+
453
+ pString = C_END_LATE
454
+
455
+ End Select
456
+
457
+ End If
458
+
459
+ End If
460
+
461
+
462
+
463
+ --対象セルへの文字セット
464
+
465
+ Cells(pRow, pClumn + 3).Value = pString
374
466
 
375
467
  End Sub
376
468
 
377
-
378
-
379
- 'Eセル、Fセルに文字列をセットする処理
469
+
380
-
381
- Sub SetCell(count As Variant, cellDataD As Integer, str1 As String, str2 As String, str3 As String, clumnNo As Integer)
470
+
382
-
383
- Select Case cellDataD
384
-
385
- Case 100
386
-
387
- Cells(count, clumnNo).Value = str1
388
-
389
- Case 1 To 99
390
-
391
- Cells(count, clumnNo).Value = str2
392
-
393
- Case 0
394
-
395
- Cells(count, clumnNo).Value = str3
396
-
397
- End Select
398
-
399
- End Sub
400
-
401
- ```
471
+ ```

5

誤字修正

2017/09/29 06:29

投稿

King_of_Flies
King_of_Flies

スコア382

test CHANGED
File without changes
test CHANGED
@@ -396,4 +396,6 @@
396
396
 
397
397
  End Select
398
398
 
399
- End Sub```
399
+ End Sub
400
+
401
+ ```

4

コードをさらに改修しました。

2017/09/28 09:21

投稿

King_of_Flies
King_of_Flies

スコア382

test CHANGED
File without changes
test CHANGED
@@ -294,23 +294,23 @@
294
294
 
295
295
  If cellDateB < cellDateFrom Then
296
296
 
297
- Call SetE(i, cellDataD, C_START, C_START, C_START_LATE)
297
+ Call SetCell(i, cellDataD, C_START, C_START, C_START_LATE, 5)
298
298
 
299
299
  ElseIf cellDateB = cellDateFrom Then
300
300
 
301
- Call SetE(i, cellDataD, C_START, C_START, C_START_LATE)
301
+ Call SetCell(i, cellDataD, C_START, C_START, C_START_LATE, 5)
302
302
 
303
303
  ElseIf cellDateFrom < cellDateB And cellDateB < cellDateTo Then
304
304
 
305
- Call SetE(i, cellDataD, C_START, C_START, C_START_LATE)
305
+ Call SetCell(i, cellDataD, C_START, C_START, C_START_LATE, 5)
306
306
 
307
307
  ElseIf cellDateB = cellDateTo Then
308
308
 
309
- Call SetE(i, cellDataD, C_START, C_START, C_START_LATE)
309
+ Call SetCell(i, cellDataD, C_START, C_START, C_START_LATE, 5)
310
310
 
311
311
  ElseIf cellDateTo < cellDateB Then
312
312
 
313
- Call SetE(i, cellDataD, C_START_FIRST, C_START_FIRST, C_START_EMP)
313
+ Call SetCell(i, cellDataD, C_START_FIRST, C_START_FIRST, C_START_EMP, 5)
314
314
 
315
315
  End If
316
316
 
@@ -322,104 +322,78 @@
322
322
 
323
323
 
324
324
 
325
- 'Eセルにデータセットする
325
+ 'Fセルにデータセットするための分岐条件
326
+
326
-
327
+ Sub FCellSetter()
328
+
329
+ For i = 6 To rowsCount
330
+
331
+ '作業着手予定日が空ならFor文から抜ける
332
+
333
+ If Cells(i, 2).Value = "" Then
334
+
335
+ Exit For
336
+
337
+ End If
338
+
339
+ 'C6セルから末端までのデータを一時的に格納する。
340
+
341
+ cellDateC = Cells(i, 3).Value
342
+
343
+ 'D6セルから末端までのデータを一時的に格納する。
344
+
345
+ cellDataD = Cells(i, 4).Value
346
+
347
+
348
+
349
+ If cellDateC < cellDateFrom Then
350
+
351
+ Call SetCell(i, cellDataD, C_END, C_END_LATE, C_END_LATE, 6)
352
+
353
+ ElseIf cellDateC = cellDateFrom Then
354
+
355
+ Call SetCell(i, cellDataD, C_END, C_END_LATE, C_END_LATE, 6)
356
+
357
+ ElseIf cellDateFrom < cellDateC And cellDateC < cellDateTo Then
358
+
359
+ Call SetCell(i, cellDataD, C_END, C_END_LATE, C_END_LATE, 6)
360
+
361
+ ElseIf cellDateC = cellDateTo Then
362
+
363
+ Call SetCell(i, cellDataD, C_END, C_END_LATE, C_END_LATE, 6)
364
+
365
+ ElseIf cellDateTo < cellDateC Then
366
+
367
+ Call SetCell(i, cellDataD, C_END_FIRST, C_END_EMP, C_END_EMP, 6)
368
+
369
+ End If
370
+
371
+
372
+
373
+ Next i
374
+
375
+ End Sub
376
+
377
+
378
+
379
+ 'Eセル、Fセルに文字列をセットする処理
380
+
327
- Sub SetE(count As Variant, cellDataD As Integer, str1 As String, str2 As String, str3 As String)
381
+ Sub SetCell(count As Variant, cellDataD As Integer, str1 As String, str2 As String, str3 As String, clumnNo As Integer)
328
382
 
329
383
  Select Case cellDataD
330
384
 
331
385
  Case 100
332
386
 
333
- Cells(count, 5).Value = str1
387
+ Cells(count, clumnNo).Value = str1
334
388
 
335
389
  Case 1 To 99
336
390
 
337
- Cells(count, 5).Value = str2
391
+ Cells(count, clumnNo).Value = str2
338
392
 
339
393
  Case 0
340
394
 
341
- Cells(count, 5).Value = str3
395
+ Cells(count, clumnNo).Value = str3
342
396
 
343
397
  End Select
344
398
 
345
- End Sub
399
+ End Sub```
346
-
347
-
348
-
349
-
350
-
351
- Sub FCellSetter()
352
-
353
- For i = 6 To rowsCount
354
-
355
- '作業着手予定日が空ならFor文から抜ける
356
-
357
- If Cells(i, 2).Value = "" Then
358
-
359
- Exit For
360
-
361
- End If
362
-
363
- 'C6セルから末端までのデータを一時的に格納する。
364
-
365
- cellDateC = Cells(i, 3).Value
366
-
367
- 'D6セルから末端までのデータを一時的に格納する。
368
-
369
- cellDataD = Cells(i, 4).Value
370
-
371
-
372
-
373
- If cellDateC < cellDateFrom Then
374
-
375
- Call SetF(i, cellDataD, C_END, C_END_LATE, C_END_LATE)
376
-
377
- ElseIf cellDateC = cellDateFrom Then
378
-
379
- Call SetF(i, cellDataD, C_END, C_END_LATE, C_END_LATE)
380
-
381
- ElseIf cellDateFrom < cellDateC And cellDateC < cellDateTo Then
382
-
383
- Call SetF(i, cellDataD, C_END, C_END_LATE, C_END_LATE)
384
-
385
- ElseIf cellDateC = cellDateTo Then
386
-
387
- Call SetF(i, cellDataD, C_END, C_END_LATE, C_END_LATE)
388
-
389
- ElseIf cellDateTo < cellDateC Then
390
-
391
- Call SetF(i, cellDataD, C_END_FIRST, C_END_EMP, C_END_EMP)
392
-
393
- End If
394
-
395
-
396
-
397
- Next i
398
-
399
- End Sub
400
-
401
-
402
-
403
- 'Fセルにデータセットする。
404
-
405
- Sub SetF(count As Variant, cellDataD As Integer, str1 As String, str2 As String, str3 As String)
406
-
407
- Select Case cellDataD
408
-
409
- Case 100
410
-
411
- Cells(count, 6).Value = str1
412
-
413
- Case 1 To 99
414
-
415
- Cells(count, 6).Value = str2
416
-
417
- Case 0
418
-
419
- Cells(count, 6).Value = str3
420
-
421
- End Select
422
-
423
- End Sub
424
-
425
- ```

3

改修後コードを追加しました。

2017/09/28 09:19

投稿

King_of_Flies
King_of_Flies

スコア382

test CHANGED
File without changes
test CHANGED
@@ -261,3 +261,165 @@
261
261
  ```
262
262
 
263
263
  とした後のElseIfの式はどうかきますか?
264
+
265
+
266
+
267
+ BA後の改修したコード
268
+
269
+ ```vba
270
+
271
+ 'Eセルにデータセットするための分岐条件
272
+
273
+ Sub ECellSetter()
274
+
275
+ For i = 6 To rowsCount
276
+
277
+ '作業着手予定日が空ならFor文から抜ける
278
+
279
+ If Cells(i, 2).Value = "" Then
280
+
281
+ Exit For
282
+
283
+ End If
284
+
285
+ 'B6セルから末端までのデータを一時的に格納する。
286
+
287
+ cellDateB = Cells(i, 2).Value
288
+
289
+ 'D6セルから末端までのデータを一時的に格納する。
290
+
291
+ cellDataD = Cells(i, 4).Value
292
+
293
+
294
+
295
+ If cellDateB < cellDateFrom Then
296
+
297
+ Call SetE(i, cellDataD, C_START, C_START, C_START_LATE)
298
+
299
+ ElseIf cellDateB = cellDateFrom Then
300
+
301
+ Call SetE(i, cellDataD, C_START, C_START, C_START_LATE)
302
+
303
+ ElseIf cellDateFrom < cellDateB And cellDateB < cellDateTo Then
304
+
305
+ Call SetE(i, cellDataD, C_START, C_START, C_START_LATE)
306
+
307
+ ElseIf cellDateB = cellDateTo Then
308
+
309
+ Call SetE(i, cellDataD, C_START, C_START, C_START_LATE)
310
+
311
+ ElseIf cellDateTo < cellDateB Then
312
+
313
+ Call SetE(i, cellDataD, C_START_FIRST, C_START_FIRST, C_START_EMP)
314
+
315
+ End If
316
+
317
+
318
+
319
+ Next i
320
+
321
+ End Sub
322
+
323
+
324
+
325
+ 'Eセルにデータセットする。
326
+
327
+ Sub SetE(count As Variant, cellDataD As Integer, str1 As String, str2 As String, str3 As String)
328
+
329
+ Select Case cellDataD
330
+
331
+ Case 100
332
+
333
+ Cells(count, 5).Value = str1
334
+
335
+ Case 1 To 99
336
+
337
+ Cells(count, 5).Value = str2
338
+
339
+ Case 0
340
+
341
+ Cells(count, 5).Value = str3
342
+
343
+ End Select
344
+
345
+ End Sub
346
+
347
+
348
+
349
+
350
+
351
+ Sub FCellSetter()
352
+
353
+ For i = 6 To rowsCount
354
+
355
+ '作業着手予定日が空ならFor文から抜ける
356
+
357
+ If Cells(i, 2).Value = "" Then
358
+
359
+ Exit For
360
+
361
+ End If
362
+
363
+ 'C6セルから末端までのデータを一時的に格納する。
364
+
365
+ cellDateC = Cells(i, 3).Value
366
+
367
+ 'D6セルから末端までのデータを一時的に格納する。
368
+
369
+ cellDataD = Cells(i, 4).Value
370
+
371
+
372
+
373
+ If cellDateC < cellDateFrom Then
374
+
375
+ Call SetF(i, cellDataD, C_END, C_END_LATE, C_END_LATE)
376
+
377
+ ElseIf cellDateC = cellDateFrom Then
378
+
379
+ Call SetF(i, cellDataD, C_END, C_END_LATE, C_END_LATE)
380
+
381
+ ElseIf cellDateFrom < cellDateC And cellDateC < cellDateTo Then
382
+
383
+ Call SetF(i, cellDataD, C_END, C_END_LATE, C_END_LATE)
384
+
385
+ ElseIf cellDateC = cellDateTo Then
386
+
387
+ Call SetF(i, cellDataD, C_END, C_END_LATE, C_END_LATE)
388
+
389
+ ElseIf cellDateTo < cellDateC Then
390
+
391
+ Call SetF(i, cellDataD, C_END_FIRST, C_END_EMP, C_END_EMP)
392
+
393
+ End If
394
+
395
+
396
+
397
+ Next i
398
+
399
+ End Sub
400
+
401
+
402
+
403
+ 'Fセルにデータセットする。
404
+
405
+ Sub SetF(count As Variant, cellDataD As Integer, str1 As String, str2 As String, str3 As String)
406
+
407
+ Select Case cellDataD
408
+
409
+ Case 100
410
+
411
+ Cells(count, 6).Value = str1
412
+
413
+ Case 1 To 99
414
+
415
+ Cells(count, 6).Value = str2
416
+
417
+ Case 0
418
+
419
+ Cells(count, 6).Value = str3
420
+
421
+ End Select
422
+
423
+ End Sub
424
+
425
+ ```

2

誤字修正

2017/09/28 07:22

投稿

King_of_Flies
King_of_Flies

スコア382

test CHANGED
File without changes
test CHANGED
@@ -260,4 +260,4 @@
260
260
 
261
261
  ```
262
262
 
263
- とした後のElseIf式はどうかきますか?
263
+ とした後のElseIf式はどうかきますか?

1

追加説明

2017/09/28 05:17

投稿

King_of_Flies
King_of_Flies

スコア382

test CHANGED
File without changes
test CHANGED
@@ -115,3 +115,149 @@
115
115
 
116
116
 
117
117
  教えてください。
118
+
119
+
120
+
121
+
122
+
123
+ 回答をいただいたので例文追加で、説明を求めます。
124
+
125
+ ```vba
126
+
127
+ Sub CellSetter()
128
+
129
+ For i = 6 To rowsCount
130
+
131
+ '作業着手予定日が空ならFor文から抜ける
132
+
133
+ If Cells(i, 2).Value = "" Then
134
+
135
+ Exit For
136
+
137
+ End If
138
+
139
+ 'B6セルから末端までのデータを一時的に格納する。
140
+
141
+ cellDateB = Cells(i, 2).Value
142
+
143
+ 'C6セルから末端までのデータを一時的に格納する。
144
+
145
+ cellDateC = Cells(i, 3).Value
146
+
147
+ 'D6セルから末端までのデータを一時的に格納する。
148
+
149
+ cellDataD = Cells(i, 4).Value
150
+
151
+ '①
152
+
153
+ If cellDateC < cellDateFrom Then
154
+
155
+ Call Selecter(i, cellDataD, C_START, C_END, C_START, C_END_LATE, C_START_LATE, C_END_LATE)
156
+
157
+ '②
158
+
159
+ ElseIf cellDateB < cellDateFrom And cellDateC = cellDateTo Then
160
+
161
+ Call Selecter(i, cellDataD, C_START, C_END, C_START, C_END_LATE, C_START_LATE, C_END_LATE)
162
+
163
+ '③
164
+
165
+ ElseIf cellDateB < cellDateFrom And cellDateFrom < cellDateC And cellDateC < cellDateTo Then
166
+
167
+ Call Selecter(i, cellDataD, C_START, C_END, C_START, C_END_LATE, C_START_LATE, C_END_LATE)
168
+
169
+ '④
170
+
171
+ ElseIf cellDateFrom = cellDateB And cellDateFrom < cellDateC And cellDateC < cellDateTo Then
172
+
173
+ Call Selecter(i, cellDataD, C_START, C_END, C_START, C_END_LATE, C_START_LATE, C_END_LATE)
174
+
175
+ '⑤
176
+
177
+ ElseIf cellDateFrom < cellDateB And cellDateB < cellDateTo And cellDateFrom < cellDateC And cellDateC < cellDateTo Then
178
+
179
+ Call Selecter(i, cellDataD, C_START, C_END, C_START, C_END_LATE, C_START_LATE, C_END_LATE)
180
+
181
+ '⑥
182
+
183
+ ElseIf cellDateFrom < cellDateB And cellDateB < cellDateTo And cellDateC = cellDateTo Then
184
+
185
+ Call Selecter(i, cellDataD, C_START, C_END, C_START, C_END_LATE, C_START_LATE, C_END_LATE)
186
+
187
+ '⑦
188
+
189
+ ElseIf cellDateFrom < cellDateB And cellDateB < cellDateTo And cellDateTo < cellDateC Then
190
+
191
+ Call Selecter(i, cellDataD, C_START, C_END_FIRST, C_START, C_END_EMP, C_START_LATE, C_END_EMP)
192
+
193
+ '⑧
194
+
195
+ ElseIf cellDateB = cellDateTo And cellDateTo < cellDateC Then
196
+
197
+ Call Selecter(i, cellDataD, C_START, C_END_FIRST, C_START, C_END_EMP, C_START_LATE, C_END_EMP)
198
+
199
+ '⑨
200
+
201
+ ElseIf cellDateTo < cellDateB Then
202
+
203
+ Call Selecter(i, cellDataD, C_START_FIRST, C_END_FIRST, C_START_FIRST, C_END_EMP, C_START_EMP, C_END_EMP)
204
+
205
+ '⑩
206
+
207
+ ElseIf cellDateB < cellDateFrom And cellDateFrom = cellDateC Then
208
+
209
+ Call Selecter(i, cellDataD, C_START, C_END, C_START, C_END_LATE, C_START_LATE, C_END_LATE)
210
+
211
+ '⑪
212
+
213
+ ElseIf cellDateB = cellDateFrom And cellDateC = cellDateTo Then
214
+
215
+ Call Selecter(i, cellDataD, C_START, C_END, C_START, C_END_LATE, C_START_LATE, C_END_LATE)
216
+
217
+ '⑫
218
+
219
+ ElseIf cellDateB = cellDateFrom And cellDateTo < cellDateC Then
220
+
221
+ Call Selecter(i, cellDataD, C_START, C_END_FIRST, C_START, C_END_EMP, C_START_LATE, C_END_EMP)
222
+
223
+ '⑬
224
+
225
+ ElseIf cellDateB < cellDateFrom And cellDateTo < cellDateC Then
226
+
227
+ Call Selecter(i, cellDataD, C_START, C_END_FIRST, C_START, C_END_EMP, C_START_LATE, C_END_EMP)
228
+
229
+ '⑭
230
+
231
+ ElseIf cellDateB = cellDateFrom And cellDateC = cellDateFrom Then
232
+
233
+ Call Selecter(i, cellDataD, C_START, C_END, C_START, C_END_LATE, C_START_LATE, C_END_LATE)
234
+
235
+ '⑮
236
+
237
+ ElseIf cellDateB = cellDateTo And cellDateC = cellDateTo Then
238
+
239
+ Call Selecter(i, cellDataD, C_START, C_END, C_START, C_END_LATE, C_START_LATE, C_END_LATE)
240
+
241
+ End If
242
+
243
+ Next i
244
+
245
+ End Sub
246
+
247
+ ```
248
+
249
+
250
+
251
+ このプログラムで分岐結果が少ないのは⑨の一個ですが、
252
+
253
+ ```vba
254
+
255
+ If cellDateTo < cellDateB Then
256
+
257
+ '処理
258
+
259
+ ElseIf
260
+
261
+ ```
262
+
263
+ とした後のElseIfそ式はどうかきますか?