teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

コード修正

2020/10/28 03:22

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -22,17 +22,21 @@
22
22
 
23
23
  ```vba
24
24
  Sub Sample1()
25
+ Application.ScreenUpdating = False
26
+
25
27
  Dim tbl As Range
26
- Set tbl = Range("A1").CurrentRegion '表範囲取得
28
+ Set tbl = Range("A1").CurrentRegion
27
- Set tbl = tbl.Resize(tbl.Rows.Count, tbl.Columns.Count + 1) '作業列追加
29
+ Set tbl = tbl.Resize(, tbl.Columns.Count + 1) '作業列追加
28
30
 
29
31
  Dim workCol As Range '作業列の式を設定する範囲
30
32
  Set workCol = tbl.Columns(tbl.Columns.Count).Offset(2).Resize(tbl.Rows.Count - 2, 1)
31
33
  workCol.Formula = "=IF(AND(A2=A3,B2=B3,D3=""未確定"",D2=""確定"",C3<=C2),1,0)"
32
-
34
+
33
- tbl.AutoFilter Field:=6, Criteria1:="1"
35
+ tbl.AutoFilter Field:=6, Criteria1:="1"
34
- tbl.Offset(1).EntireRow.Delete
36
+ tbl.Offset(1).EntireRow.Delete
35
37
  tbl.AutoFilter
36
38
  workCol.Clear
39
+
40
+ Application.ScreenUpdating = True
37
41
  End Sub
38
42
  ```

1

コード追記

2020/10/28 03:22

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -14,4 +14,25 @@
14
14
 
15
15
  これをマクロの記録でVBA化して、それを元に書き換えるといいでしょう。
16
16
 
17
- 念のためにバックアップを取ってから作業をしてください。
17
+ 念のためにバックアップを取ってから作業をしてください。
18
+
19
+ ---
20
+
21
+ 作業列とオートフィルターを使って削除する場合のコード例
22
+
23
+ ```vba
24
+ Sub Sample1()
25
+ Dim tbl As Range
26
+ Set tbl = Range("A1").CurrentRegion '表範囲取得
27
+ Set tbl = tbl.Resize(tbl.Rows.Count, tbl.Columns.Count + 1) '作業列追加
28
+
29
+ Dim workCol As Range '作業列の式を設定する範囲
30
+ Set workCol = tbl.Columns(tbl.Columns.Count).Offset(2).Resize(tbl.Rows.Count - 2, 1)
31
+ workCol.Formula = "=IF(AND(A2=A3,B2=B3,D3=""未確定"",D2=""確定"",C3<=C2),1,0)"
32
+
33
+ tbl.AutoFilter Field:=6, Criteria1:="1"
34
+ tbl.Offset(1).EntireRow.Delete
35
+ tbl.AutoFilter
36
+ workCol.Clear
37
+ End Sub
38
+ ```