回答編集履歴

1

コメントでの要件追加を踏まえたコードを追記

2020/12/04 14:41

投稿

kaz.Suenaga
kaz.Suenaga

スコア2037

test CHANGED
@@ -61,3 +61,131 @@
61
61
 
62
62
 
63
63
  参考) [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)
64
+
65
+
66
+
67
+
68
+
69
+
70
+
71
+
72
+
73
+ # 追記 2020-12-04 23:40
74
+
75
+
76
+
77
+ コメントでいただいた要件を踏まえたサンプルコードです。
78
+
79
+
80
+
81
+
82
+
83
+ ## メイン処理側の呼び出し例
84
+
85
+
86
+
87
+ 別途作成した str_check関数 を条件として行削除するコード例。
88
+
89
+
90
+
91
+ ```VBA
92
+
93
+
94
+
95
+ If str_check(cellValue) Then
96
+
97
+ ' i 行を削除
98
+
99
+ Rows(i).Delete
100
+
101
+ End If
102
+
103
+
104
+
105
+ ```
106
+
107
+
108
+
109
+ ## チェック関数例
110
+
111
+
112
+
113
+ 同じファイルのシート cond のA列に A1セル A2セル ・・・ にチェック対象となるリストが作られている想定。
114
+
115
+ リストに空白はなく、各行を評価して空白セルが出てきたらリストの終了とみなす
116
+
117
+
118
+
119
+
120
+
121
+ ```VBA
122
+
123
+
124
+
125
+ ' チェック関数 : この関数の返り値が true の場合、行削除
126
+
127
+ Function str_check(check_strings As String) As Boolean
128
+
129
+ Dim tmpRet As Boolean ' チェック結果を管理しておく変数
130
+
131
+ tmpRet = True ' デフォルト True (=削除対象)と考える
132
+
133
+
134
+
135
+
136
+
137
+ ' 仮に同じブックの cond シートのA列に対象外としたい文字列のリストがあるとした場合
138
+
139
+ Dim ws As Worksheet
140
+
141
+ Set ws = ActiveWorkbook.Sheets("cond") ' cond シート
142
+
143
+
144
+
145
+ Dim rowCount As Long ' cond シートの参照行番号
146
+
147
+ rowCount = 1
148
+
149
+
150
+
151
+
152
+
153
+ ' cond シートのA列を1行目からたどる
154
+
155
+ ' A列の rowCount 行が空白となった場合、リストの終了とみなす
156
+
157
+ Do Until ws.Cells(rowCount, 1).Value = ""
158
+
159
+
160
+
161
+ ' 文字列と一致した場合、関数の結果を false としてチェックを終了する
162
+
163
+ If check_strings = ws.Cells(rowCount, 1).Value Then
164
+
165
+ tmpRet = False
166
+
167
+ Exit Do
168
+
169
+ End If
170
+
171
+
172
+
173
+ ' リストの次の行を参照先としてループ
174
+
175
+ rowCount = rowCount + 1
176
+
177
+ Loop
178
+
179
+
180
+
181
+
182
+
183
+ ' 関数の返り値を設定
184
+
185
+ str_check = tmpRet
186
+
187
+ End Function
188
+
189
+
190
+
191
+ ```