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

回答編集履歴

1

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

2020/12/04 14:41

投稿

kaz.Suenaga
kaz.Suenaga

スコア2042

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
+ ```