回答編集履歴
2
追加修正
test
CHANGED
@@ -88,4 +88,74 @@
|
|
88
88
|
|
89
89
|
|
90
90
|
|
91
|
+
|
92
|
+
|
93
|
+
|
94
|
+
|
95
|
+
追加修正
|
96
|
+
|
97
|
+
---
|
98
|
+
|
99
|
+
上記のコードでは入力シートの日付の並びと出力シートの日付の並びが一緒でない場合(日付けが飛んだりしている場合)に、関係ない日付の列にデータを出力してしまうケースが存在しました。
|
100
|
+
|
101
|
+
|
102
|
+
|
103
|
+
そのようなデータが想定される場合は、出力シートで正しい日付の列を見つけるまでループしてあげる必要があります。
|
104
|
+
|
105
|
+
```
|
106
|
+
|
91
|
-
|
107
|
+
Sub 台帳転記()
|
108
|
+
|
109
|
+
Dim gyod
|
110
|
+
|
111
|
+
Dim gyoi
|
112
|
+
|
113
|
+
Dim hir
|
114
|
+
|
115
|
+
Dim hig
|
116
|
+
|
117
|
+
Dim retu
|
118
|
+
|
119
|
+
hir = 3
|
120
|
+
|
121
|
+
gyoi = 5
|
122
|
+
|
123
|
+
retu = 2
|
124
|
+
|
125
|
+
For gyod = 2 To Worksheets("入力").Cells(Rows.Count, 1).End(xlUp).Row
|
126
|
+
|
127
|
+
Do
|
128
|
+
|
129
|
+
If Worksheets("確認用").Cells(2, hir) = Worksheets("入力").Cells(gyod, 1) Then
|
130
|
+
|
131
|
+
'日付けが一致した場合はDoループを抜ける
|
132
|
+
|
133
|
+
Exit Do
|
134
|
+
|
135
|
+
Else
|
136
|
+
|
137
|
+
'日付けが一致しない場合は出力位置を変更
|
138
|
+
|
139
|
+
hir = hir + 2
|
140
|
+
|
141
|
+
gyoi = 5
|
142
|
+
|
143
|
+
End If
|
144
|
+
|
145
|
+
'確認用シートの日付が""の列になるまでに一致する日付けが見つからなかったら処理終了
|
146
|
+
|
147
|
+
If Worksheets("確認用").Cells(2, hir) = "" Then Exit Sub
|
148
|
+
|
149
|
+
Loop
|
150
|
+
|
151
|
+
Worksheets("確認用").Cells(gyoi, hir - 1) = Worksheets("入力").Cells(gyod, 3)
|
152
|
+
|
153
|
+
Worksheets("確認用").Cells(gyoi, hir) = Worksheets("入力").Cells(gyod, 4)
|
154
|
+
|
155
|
+
gyoi = gyoi + 1
|
156
|
+
|
157
|
+
Next
|
158
|
+
|
159
|
+
End Sub
|
160
|
+
|
161
|
+
```
|
1
修正
test
CHANGED
@@ -34,7 +34,7 @@
|
|
34
34
|
|
35
35
|
他の方からも指摘があるように、日付けが変わった時にデータを書かずに読み取り行を次に進めてしまっています。
|
36
36
|
|
37
|
-
ループ内で
|
37
|
+
ループ内でループ変数の値を変更するのはバグや無限ループのもとになるので、行を戻してあげるよりもデータを書いてしまった方がよいでしょう。
|
38
38
|
|
39
39
|
|
40
40
|
|