回答編集履歴
9
修正漏れ
test
CHANGED
@@ -284,7 +284,7 @@
|
|
284
284
|
|
285
285
|
If (Left(.Cells(lngFromRowsNo, 2).Value, 2) = "A1" Or Left(.Cells(lngFromRowsNo, 2).Value, 2) = "B1" Or Left(.Cells(lngFromRowsNo, 2).Value, 2) = "C1") Then
|
286
286
|
|
287
|
-
'
|
287
|
+
'訂正.Cells( は省略しない
|
288
288
|
|
289
289
|
|
290
290
|
|
8
修正
test
CHANGED
@@ -261,3 +261,65 @@
|
|
261
261
|
|
262
262
|
|
263
263
|
```
|
264
|
+
|
265
|
+
|
266
|
+
|
267
|
+
追記2
|
268
|
+
|
269
|
+
質問者様の返答内容を記載します。
|
270
|
+
|
271
|
+
```VBA
|
272
|
+
|
273
|
+
'***** ここから
|
274
|
+
|
275
|
+
' 2. コピー元のシートを1行目から検索
|
276
|
+
|
277
|
+
For lngFromRowsNo = 1 To .UsedRange.Rows.Count
|
278
|
+
|
279
|
+
'※.UsedRange.Rows.Countは省略しない!直っていません
|
280
|
+
|
281
|
+
|
282
|
+
|
283
|
+
' 3. B列に"A1"or"B1"or"C1"で始まる文字列がある場合、[開発]の値として変数に代入しておく。
|
284
|
+
|
285
|
+
If (Left(.Cells(lngFromRowsNo, 2).Value, 2) = "A1" Or Left(.Cells(lngFromRowsNo, 2).Value, 2) = "B1" Or Left(.Cells(lngFromRowsNo, 2).Value, 2) = "C1") Then
|
286
|
+
|
287
|
+
'※ここは修正OKです
|
288
|
+
|
289
|
+
|
290
|
+
|
291
|
+
End If
|
292
|
+
|
293
|
+
' 4. C列が4セル結合している場合(.MergeCellsがTrueの時に.MergeArea.Count = 4 の場合)
|
294
|
+
|
295
|
+
|
296
|
+
|
297
|
+
' 4.1. C列に"担当者"という文字列が入っている場合、表のヘッダーとして[年月]の値をコピー先の行へ設定する。
|
298
|
+
|
299
|
+
|
300
|
+
|
301
|
+
' 5. C列が2セル結合している場合(.MergeCellsがTrueの時に.MergeArea.Count = 2 の場合)
|
302
|
+
|
303
|
+
|
304
|
+
|
305
|
+
' 5.1. C列に文字列が入っている場合、表の明細として[担当者][工数]の値をコピー先の行へ設定する。
|
306
|
+
|
307
|
+
|
308
|
+
|
309
|
+
' ※コピー先の行へ設定した場合追加なので、コピー先は次の行へ移動
|
310
|
+
|
311
|
+
lngRowsNo = lngRowsNo + 1
|
312
|
+
|
313
|
+
'※ここもなぜ変数lngRowsNoなんですか?直っていません
|
314
|
+
|
315
|
+
|
316
|
+
|
317
|
+
Next i
|
318
|
+
|
319
|
+
'※追加 ここの変数名もおかしいですよね?
|
320
|
+
|
321
|
+
|
322
|
+
|
323
|
+
'***** ここまで
|
324
|
+
|
325
|
+
```
|
7
修正漏れ
test
CHANGED
@@ -222,8 +222,6 @@
|
|
222
222
|
|
223
223
|
If (Left(.Cells(i, 2).Value, 2) = "A1" Or Left(.Cells(i, 2).Value, 2) = "B1" Or Left(.Cells(i, 2).Value, 2) = "C1") And .Cells(i, 2).MergeCells = False Then
|
224
224
|
|
225
|
-
'※~~B列に"A1"or"B1"or"C1"で始まるに関しては合っています。~~
|
226
|
-
|
227
225
|
'※セルの参照でなぜi変数を使っているのですか?
|
228
226
|
|
229
227
|
'ただ不要な条件があります。
|
6
修正
test
CHANGED
@@ -222,7 +222,9 @@
|
|
222
222
|
|
223
223
|
If (Left(.Cells(i, 2).Value, 2) = "A1" Or Left(.Cells(i, 2).Value, 2) = "B1" Or Left(.Cells(i, 2).Value, 2) = "C1") And .Cells(i, 2).MergeCells = False Then
|
224
224
|
|
225
|
-
'※B列に"A1"or"B1"or"C1"で始まるに関しては合っています。
|
225
|
+
'※~~B列に"A1"or"B1"or"C1"で始まるに関しては合っています。~~
|
226
|
+
|
227
|
+
'※セルの参照でなぜi変数を使っているのですか?
|
226
228
|
|
227
229
|
'ただ不要な条件があります。
|
228
230
|
|
5
修正漏れ
test
CHANGED
@@ -212,9 +212,9 @@
|
|
212
212
|
|
213
213
|
For lngFromSheetIndex = 1 To .UsedRange.Rows.Count
|
214
214
|
|
215
|
-
'
|
215
|
+
'※なぜlngFromSheetIndexなのですか?変数は用意していますよね?
|
216
|
-
|
216
|
+
|
217
|
-
'※
|
217
|
+
'※.UsedRange.Rows.Countに関いて省略して書かない。
|
218
218
|
|
219
219
|
|
220
220
|
|
4
修正漏れ
test
CHANGED
@@ -102,6 +102,8 @@
|
|
102
102
|
|
103
103
|
|
104
104
|
|
105
|
+
' 2. コピー元のシートを1行目から検索
|
106
|
+
|
105
107
|
' 見つかったExcelブックのシートを順番に検索(登録があるシートすべて)
|
106
108
|
|
107
109
|
For lngFromSheetNo = 1 To wbFrom.Worksheets.Count
|
@@ -210,9 +212,9 @@
|
|
210
212
|
|
211
213
|
For lngFromSheetIndex = 1 To .UsedRange.Rows.Count
|
212
214
|
|
213
|
-
'
|
215
|
+
'訂正ここに関してはすでに回答してありました。
|
214
|
-
|
216
|
+
|
215
|
-
'※.UsedRange.Rows.Countに関いて省略して書かない。
|
217
|
+
'※ただし.UsedRange.Rows.Countに関いて省略して書かない。
|
216
218
|
|
217
219
|
|
218
220
|
|
3
返信追記
test
CHANGED
@@ -192,10 +192,70 @@
|
|
192
192
|
|
193
193
|
End Sub
|
194
194
|
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
195
|
```
|
196
|
+
|
197
|
+
|
198
|
+
|
199
|
+
追記1
|
200
|
+
|
201
|
+
質問者様の返答内容を記載します。
|
202
|
+
|
203
|
+
(追記・編集依頼ですと表示が崩れる為)
|
204
|
+
|
205
|
+
```VBA
|
206
|
+
|
207
|
+
'***** ここから
|
208
|
+
|
209
|
+
' 2. コピー元のシートを1行目から検索
|
210
|
+
|
211
|
+
For lngFromSheetIndex = 1 To .UsedRange.Rows.Count
|
212
|
+
|
213
|
+
'※なぜlngFromSheetIndexなのですか?変数は用意済みですよね?
|
214
|
+
|
215
|
+
'※.UsedRange.Rows.Countに関いて省略して書かない。
|
216
|
+
|
217
|
+
|
218
|
+
|
219
|
+
' 3. B列に"A1"or"B1"or"C1"で始まる文字列がある場合、またはセルが結合されていない場合、[開発]の値として変数に代入しておく。
|
220
|
+
|
221
|
+
If (Left(.Cells(i, 2).Value, 2) = "A1" Or Left(.Cells(i, 2).Value, 2) = "B1" Or Left(.Cells(i, 2).Value, 2) = "C1") And .Cells(i, 2).MergeCells = False Then
|
222
|
+
|
223
|
+
'※B列に"A1"or"B1"or"C1"で始まるに関しては合っています。
|
224
|
+
|
225
|
+
'ただ不要な条件があります。
|
226
|
+
|
227
|
+
|
228
|
+
|
229
|
+
End If
|
230
|
+
|
231
|
+
' 4. C列が4セル結合している場合(.MergeCellsがTrueの時に.MergeArea.Count = 4 の場合)
|
232
|
+
|
233
|
+
|
234
|
+
|
235
|
+
' 4.1. C列に"担当者"という文字列が入っている場合、表のヘッダーとして[年月]の値をコピー先の行へ設定する。
|
236
|
+
|
237
|
+
|
238
|
+
|
239
|
+
' 5. C列が2セル結合している場合(.MergeCellsがTrueの時に.MergeArea.Count = 2 の場合)
|
240
|
+
|
241
|
+
|
242
|
+
|
243
|
+
' 5.1. C列に文字列が入っている場合、表の明細として[担当者][工数]の値をコピー先の行へ設定する。
|
244
|
+
|
245
|
+
|
246
|
+
|
247
|
+
' コピー先の行へ設定した場合追加なので、コピー先は次の行へ移動
|
248
|
+
|
249
|
+
lngRowsNo = lngRowsNo + 1
|
250
|
+
|
251
|
+
' ※なぜlngRowsNoなのですか?変数は用意済みですよね?
|
252
|
+
|
253
|
+
Next i
|
254
|
+
|
255
|
+
|
256
|
+
|
257
|
+
'***** ここまで
|
258
|
+
|
259
|
+
|
260
|
+
|
261
|
+
```
|
2
修正漏れ
test
CHANGED
@@ -102,7 +102,7 @@
|
|
102
102
|
|
103
103
|
|
104
104
|
|
105
|
-
' 見つかったExcelブックのシートを順番に検索(登録がある
|
105
|
+
' 見つかったExcelブックのシートを順番に検索(登録があるシートすべて)
|
106
106
|
|
107
107
|
For lngFromSheetNo = 1 To wbFrom.Worksheets.Count
|
108
108
|
|
1
編集
test
CHANGED
@@ -102,7 +102,7 @@
|
|
102
102
|
|
103
103
|
|
104
104
|
|
105
|
-
' 見つかったExcelブックのシートを順番に検索
|
105
|
+
' 見つかったExcelブックのシートを順番に検索(登録がある行すべて)
|
106
106
|
|
107
107
|
For lngFromSheetNo = 1 To wbFrom.Worksheets.Count
|
108
108
|
|