回答編集履歴
1
コメントでの要件追加を踏まえたコードを追記
answer
CHANGED
|
@@ -29,4 +29,68 @@
|
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
|
|
32
|
-
参考) [https://www.relief.jp/docs/excel-vba-for-next-from-a-to-z.html](https://www.relief.jp/docs/excel-vba-for-next-from-a-to-z.html)
|
|
32
|
+
参考) [https://www.relief.jp/docs/excel-vba-for-next-from-a-to-z.html](https://www.relief.jp/docs/excel-vba-for-next-from-a-to-z.html)
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
# 追記 2020-12-04 23:40
|
|
38
|
+
|
|
39
|
+
コメントでいただいた要件を踏まえたサンプルコードです。
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
## メイン処理側の呼び出し例
|
|
43
|
+
|
|
44
|
+
別途作成した str_check関数 を条件として行削除するコード例。
|
|
45
|
+
|
|
46
|
+
```VBA
|
|
47
|
+
|
|
48
|
+
If str_check(cellValue) Then
|
|
49
|
+
' i 行を削除
|
|
50
|
+
Rows(i).Delete
|
|
51
|
+
End If
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## チェック関数例
|
|
56
|
+
|
|
57
|
+
同じファイルのシート cond のA列に A1セル A2セル ・・・ にチェック対象となるリストが作られている想定。
|
|
58
|
+
リストに空白はなく、各行を評価して空白セルが出てきたらリストの終了とみなす
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
```VBA
|
|
62
|
+
|
|
63
|
+
' チェック関数 : この関数の返り値が true の場合、行削除
|
|
64
|
+
Function str_check(check_strings As String) As Boolean
|
|
65
|
+
Dim tmpRet As Boolean ' チェック結果を管理しておく変数
|
|
66
|
+
tmpRet = True ' デフォルト True (=削除対象)と考える
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
' 仮に同じブックの cond シートのA列に対象外としたい文字列のリストがあるとした場合
|
|
70
|
+
Dim ws As Worksheet
|
|
71
|
+
Set ws = ActiveWorkbook.Sheets("cond") ' cond シート
|
|
72
|
+
|
|
73
|
+
Dim rowCount As Long ' cond シートの参照行番号
|
|
74
|
+
rowCount = 1
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
' cond シートのA列を1行目からたどる
|
|
78
|
+
' A列の rowCount 行が空白となった場合、リストの終了とみなす
|
|
79
|
+
Do Until ws.Cells(rowCount, 1).Value = ""
|
|
80
|
+
|
|
81
|
+
' 文字列と一致した場合、関数の結果を false としてチェックを終了する
|
|
82
|
+
If check_strings = ws.Cells(rowCount, 1).Value Then
|
|
83
|
+
tmpRet = False
|
|
84
|
+
Exit Do
|
|
85
|
+
End If
|
|
86
|
+
|
|
87
|
+
' リストの次の行を参照先としてループ
|
|
88
|
+
rowCount = rowCount + 1
|
|
89
|
+
Loop
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
' 関数の返り値を設定
|
|
93
|
+
str_check = tmpRet
|
|
94
|
+
End Function
|
|
95
|
+
|
|
96
|
+
```
|