回答編集履歴
2
しゅうせい
answer
CHANGED
|
@@ -18,7 +18,6 @@
|
|
|
18
18
|
endRow = Sheet6.UsedRange.Rows.Count
|
|
19
19
|
Debug.Print "最終行は" & endRow & "行目"
|
|
20
20
|
|
|
21
|
-
With Sheet6.Cells(i, "O").MergeArea
|
|
22
21
|
For i = endRow To 6 Step -1
|
|
23
22
|
i = i + 1
|
|
24
23
|
→ Set rng = Sheet6.Cells(i, "O").MergeArea
|
|
@@ -29,7 +28,6 @@
|
|
|
29
28
|
i = i - mergeRows
|
|
30
29
|
Debug.Print "現在" & i & "行目" + vbLf
|
|
31
30
|
Next i
|
|
32
|
-
End With
|
|
33
31
|
|
|
34
32
|
End Sub
|
|
35
33
|
```
|
1
追記
answer
CHANGED
|
@@ -3,4 +3,35 @@
|
|
|
3
3
|
With Sheet6.Cells(0, "O").MergeArea
|
|
4
4
|
|
|
5
5
|
になっているからだと思います。
|
|
6
|
-
iを初期化してあげて下さい。
|
|
6
|
+
iを初期化してあげて下さい。
|
|
7
|
+
|
|
8
|
+
iの部分を可変にしてwith句としたいのでしょうけどたぶん無理です。
|
|
9
|
+
素直にsheet6までの括りにしてください。
|
|
10
|
+
どうしてもやりたいなら、with句ではなく、rangeを変数にいれるとか。
|
|
11
|
+
|
|
12
|
+
```VBA
|
|
13
|
+
Sub Rows_Extract()
|
|
14
|
+
|
|
15
|
+
Dim i, mergeRows, endRow As Long
|
|
16
|
+
→ Dim rng as Range
|
|
17
|
+
|
|
18
|
+
endRow = Sheet6.UsedRange.Rows.Count
|
|
19
|
+
Debug.Print "最終行は" & endRow & "行目"
|
|
20
|
+
|
|
21
|
+
With Sheet6.Cells(i, "O").MergeArea
|
|
22
|
+
For i = endRow To 6 Step -1
|
|
23
|
+
i = i + 1
|
|
24
|
+
→ Set rng = Sheet6.Cells(i, "O").MergeArea
|
|
25
|
+
→ mergeRows = rng.Rows.Count
|
|
26
|
+
If Not .Offset(0, 0).Rows Like "[フロント,リア,サイド]*" Then
|
|
27
|
+
→ rng.EntireRow.Delete
|
|
28
|
+
End If
|
|
29
|
+
i = i - mergeRows
|
|
30
|
+
Debug.Print "現在" & i & "行目" + vbLf
|
|
31
|
+
Next i
|
|
32
|
+
End With
|
|
33
|
+
|
|
34
|
+
End Sub
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
あと、Forで使用しているカウンタをループ内で触るのは危険なのでやめた方がいいです。
|