回答編集履歴

1

回答修正

2020/09/04 17:22

投稿

Y.H.
Y.H.

スコア7918

test CHANGED
@@ -1,20 +1,16 @@
1
- ```
1
+ > A列、C列に連続して値が入っていて、A列に値がなくなった(空白になった)場合に、値がなくなった行以降削除する、というコードにしたつもりでした・・・
2
2
 
3
- lastRow = ws1.Cells(Rows.Count, 1).End(xlUp).Row
4
3
 
4
+
5
+
6
+
5
- ```
7
+ `lastRow = ws1.Cells(Rows.Count, 1).End(xlUp).Row`
6
8
 
7
9
  lastRowに A列の最終行を取得
8
10
 
9
11
 
10
12
 
11
- ```
12
-
13
- For i = 3 To lastRow
13
+ `For i = 3 To lastRow`
14
-
15
- ```
16
-
17
-
18
14
 
19
15
  3行目からlastRow(A列の最終行)までループ
20
16
 
@@ -24,26 +20,56 @@
24
20
 
25
21
  よって
26
22
 
27
-
28
-
29
- ```
30
-
31
- If Cells(i, 1).Value = "" Then
23
+ `If Cells(i, 1).Value = "" Then`
32
-
33
- ```
34
24
 
35
25
  この条件は常にFalseになるので
36
26
 
37
27
 
38
28
 
39
- ```
29
+ `Range(Cells(i, 1) & i).EntireRow.Delete`
40
30
 
41
- Range(Cells(i, 1) & i).EntireRow.Delete
42
-
43
- ```
44
-
45
- が実行されることはありません。
31
+ が実行されることはありません。(Rangeの引数がおかしいのは置いておく。。。)
46
32
 
47
33
 
48
34
 
49
- lastRowの次の行以降を全て削除する必要があります。
35
+ lastRowの次の行以降を削除する必要があります。
36
+
37
+
38
+
39
+
40
+
41
+ ```VBA
42
+
43
+ Dim lastRow As Long
44
+
45
+ Dim ws1 As Worksheet
46
+
47
+
48
+
49
+ Set ws1 = ActiveSheet
50
+
51
+
52
+
53
+ With ws1
54
+
55
+ ' A列の最終行取得
56
+
57
+ lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
58
+
59
+
60
+
61
+ If (lastRow + 1) >= 3 Then
62
+
63
+ ' A列の最終行の次の行以降を削除
64
+
65
+ .Range((lastRow + 1) & ":" & .Rows.Count).Delete
66
+
67
+ End If
68
+
69
+ End With
70
+
71
+
72
+
73
+ Set ws1 = Nothing
74
+
75
+ ```