回答編集履歴

2

しゅうせい

2016/03/15 03:51

投稿

lilithchan
lilithchan

スコア249

test CHANGED
@@ -38,8 +38,6 @@
38
38
 
39
39
 
40
40
 
41
- With Sheet6.Cells(i, "O").MergeArea
42
-
43
41
  For i = endRow To 6 Step -1
44
42
 
45
43
  i = i + 1
@@ -60,8 +58,6 @@
60
58
 
61
59
  Next i
62
60
 
63
- End With
64
-
65
61
 
66
62
 
67
63
  End Sub

1

追記

2016/03/15 03:50

投稿

lilithchan
lilithchan

スコア249

test CHANGED
@@ -9,3 +9,65 @@
9
9
  になっているからだと思います。
10
10
 
11
11
  iを初期化してあげて下さい。
12
+
13
+
14
+
15
+ iの部分を可変にしてwith句としたいのでしょうけどたぶん無理です。
16
+
17
+ 素直にsheet6までの括りにしてください。
18
+
19
+ どうしてもやりたいなら、with句ではなく、rangeを変数にいれるとか。
20
+
21
+
22
+
23
+ ```VBA
24
+
25
+ Sub Rows_Extract()
26
+
27
+
28
+
29
+ Dim i, mergeRows, endRow As Long
30
+
31
+ → Dim rng as Range
32
+
33
+
34
+
35
+ endRow = Sheet6.UsedRange.Rows.Count
36
+
37
+ Debug.Print "最終行は" & endRow & "行目"
38
+
39
+
40
+
41
+ With Sheet6.Cells(i, "O").MergeArea
42
+
43
+ For i = endRow To 6 Step -1
44
+
45
+ i = i + 1
46
+
47
+ → Set rng = Sheet6.Cells(i, "O").MergeArea
48
+
49
+ → mergeRows = rng.Rows.Count
50
+
51
+ If Not .Offset(0, 0).Rows Like "[フロント,リア,サイド]*" Then
52
+
53
+ → rng.EntireRow.Delete
54
+
55
+ End If
56
+
57
+ i = i - mergeRows
58
+
59
+ Debug.Print "現在" & i & "行目" + vbLf
60
+
61
+ Next i
62
+
63
+ End With
64
+
65
+
66
+
67
+ End Sub
68
+
69
+ ```
70
+
71
+
72
+
73
+ あと、Forで使用しているカウンタをループ内で触るのは危険なのでやめた方がいいです。