回答編集履歴

5

バグ修正

2016/11/16 02:29

投稿

ynakano
ynakano

スコア1894

test CHANGED
@@ -38,11 +38,7 @@
38
38
 
39
39
  Dim CurColumn As Integer '現在の列番号
40
40
 
41
-
42
-
43
- Dim flg As Boolean '"1"書き込み中フラグ
41
+
44
-
45
-
46
42
 
47
43
  MaxRows = Range("A1").CurrentRegion.Rows.Count '最大行数取得
48
44
 
@@ -52,15 +48,11 @@
52
48
 
53
49
  For CurRow = 2 To MaxRows '2行目から最終行まで順番に処理(1行目は見出しだけなので処理しない)
54
50
 
55
- flg = False '"1"書き込み中フラグをオフにする
56
-
57
-
58
-
59
- For CurColumn = 3 To MaxColumns 'C列から最終列まで順番に処理
51
+ For CurColumn = 3 To MaxColumns '3から最終列まで順番に処理
60
52
 
61
53
  If CurColumn = 3 Then
62
54
 
63
- '現在列がC列の場合は開始時刻を取得
55
+ '現在列が3の場合は開始時刻を取得
64
56
 
65
57
  StartHour = Hour(Cells(CurRow, CurColumn).Value)
66
58
 
@@ -68,7 +60,7 @@
68
60
 
69
61
  ElseIf CurColumn = 4 Then
70
62
 
71
- '現在列がD列の場合は終了時刻を取得
63
+ '現在列が4の場合は終了時刻を取得
72
64
 
73
65
  EndHour = Hour(Cells(CurRow, CurColumn).Value)
74
66
 
@@ -76,63 +68,45 @@
76
68
 
77
69
  Else
78
70
 
79
- 'E以降
71
+ '1行目に記載されている時刻を取得
80
72
 
81
- If flg = False Then
73
+ CurHour = Hour(Cells(1, CurColumn).Value)
82
74
 
83
- '"1"書き込み中フラグがオフの場合、1行目に記載されている時刻を取得
84
-
85
- CurHour = Hour(Cells(1, CurColumn).Value)
86
-
87
- CurMinute = Minute(Cells(1, CurColumn).Value)
75
+ CurMinute = Minute(Cells(1, CurColumn).Value)
88
76
 
89
77
 
90
78
 
91
- If StartHour = CurHour And StartMinute - CurMinute <= 4 Then
79
+ '次の列の1行目に記載されている時刻を取得
92
80
 
93
- '開始「時」が1行目の「時」と同じかつ、開始「分」マイナス1行目の
81
+ NextHour = Hour(Cells(1, CurColumn + 1).Value)
94
82
 
95
- '「分」が4分以下の場合
83
+ NextMinute = Minute(Cells(1, CurColumn + 1).Value)
96
84
 
97
- flg = True '"1"書き込み中フラグをオンにする
85
+
98
86
 
99
-
87
+ If StartHour < CurHour Or (StartHour = CurHour And StartMinute - CurMinute <= 4) Then
100
88
 
101
- Cells(CurRow, CurColumn).Value = "1" '現在セルに"1"を書き込む
89
+ '開始「時」が1行目の「時」未満、もしくは
102
90
 
103
- End If
91
+ '開始「時」が1行目の「時」と同じかつ、開始「分」マイナス1行目の「分」が4分以下の場合
104
92
 
105
- Else
93
+ '現在セルに"1"を書き込む
106
94
 
107
- '"1"書き込み中フラグがオンの場合、まずは現在セルに"1"を書き込む
95
+ Cells(CurRow, CurColumn).Value = "1"
108
96
 
109
- Cells(CurRow, CurColumn).Value = "1"
97
+ End If
110
98
 
111
-
112
99
 
113
- '次の列の1行目に記載されている時刻を取得
114
100
 
115
- NextHour = Hour(Cells(1, CurColumn + 1).Value)
101
+ If EndHour < NextHour Or (EndHour = NextHour And EndMinute < NextMinute) Then
116
102
 
117
- NextMinute = Minute(Cells(1, CurColumn + 1).Value)
103
+ '終了「時」が次列の「時」未満の場合、もしくは
118
104
 
119
-
105
+ '終了「時」が次列の「時」と同じかつ、終了「分」が次列の「分」未満の場合
120
106
 
121
- If EndHour < NextHour Then
107
+ '内側のループを抜けて次の行の処理に移る
122
108
 
123
- '終了「時」が次列の「時」未満の場合、内側のループを抜けて次の行の処理に移る
124
-
125
- Exit For
109
+ Exit For
126
-
127
- ElseIf EndHour = NextHour And EndMinute < NextMinute Then
128
-
129
- '終了「時」が次列の「時」と同じ場合、終了「分」が次列の「分」未満なら
130
-
131
- '内側のループを抜けて次の行の処理に移る
132
-
133
- Exit For
134
-
135
- End If
136
110
 
137
111
  End If
138
112
 

4

誤字・・・

2016/11/16 02:29

投稿

ynakano
ynakano

スコア1894

test CHANGED
@@ -126,7 +126,7 @@
126
126
 
127
127
  ElseIf EndHour = NextHour And EndMinute < NextMinute Then
128
128
 
129
- '終了「時」が次列の「時」と同じ場合、終了「分」が次列の「分」未満なら
129
+ '終了「時」が次列の「時」と同じ場合、終了「分」が次列の「分」未満なら
130
130
 
131
131
  '内側のループを抜けて次の行の処理に移る
132
132
 

3

記載漏れ

2016/11/15 14:35

投稿

ynakano
ynakano

スコア1894

test CHANGED
@@ -112,9 +112,9 @@
112
112
 
113
113
  '次の列の1行目に記載されている時刻を取得
114
114
 
115
- NextHour = Hour(Cells(1, CurColumn + 1))
115
+ NextHour = Hour(Cells(1, CurColumn + 1).Value)
116
116
 
117
- NextMinute = Minute(Cells(1, CurColumn + 1))
117
+ NextMinute = Minute(Cells(1, CurColumn + 1).Value)
118
118
 
119
119
 
120
120
 

2

ロジック誤り

2016/11/15 14:33

投稿

ynakano
ynakano

スコア1894

test CHANGED
@@ -88,9 +88,11 @@
88
88
 
89
89
 
90
90
 
91
- If CurHour = StartHour And CurMinute >= StartMinute Then
91
+ If StartHour = CurHour And StartMinute - CurMinute <= 4 Then
92
92
 
93
- '1行目の「時」が開始「時」と同じかつ、1行目の「分」が開始「分」以上場合
93
+ '開始「時」が1行目の「時」と同じかつ、開始「分」マイナス1行目
94
+
95
+ '「分」が4分以下の場合
94
96
 
95
97
  flg = True '"1"書き込み中フラグをオンにする
96
98
 

1

誤記修正

2016/11/15 14:01

投稿

ynakano
ynakano

スコア1894

test CHANGED
@@ -82,9 +82,9 @@
82
82
 
83
83
  '"1"書き込み中フラグがオフの場合、1行目に記載されている時刻を取得
84
84
 
85
- CurHour = Hour(Cells(1, CurColumn))
85
+ CurHour = Hour(Cells(1, CurColumn).Value)
86
86
 
87
- CurMinute = Minute(Cells(1, CurColumn))
87
+ CurMinute = Minute(Cells(1, CurColumn).Value)
88
88
 
89
89
 
90
90