コードを修正しよう
森川くんはVBEを起動すると、カタカタとコードを追加していきます。
Sub 検索()
Dim i As Long, r As Long, c As Long
Dim EndRow As Long, EndCol As Long
Dim KeyWrd As Variant
Const MidashiRow As Long = 5
Const MidashiCol As Long = 1
Rows.Hidden = False
EndRow = Cells(Rows.Count, MidashiCol).End(xlUp).Row
EndCol = Cells(MidashiRow, Columns.Count).End(xlToLeft).Column
KeyWrd = Split(Range("B3").Value, " ", , vbTextCompare)
For r = MidashiRow + 1 To EndRow
For i = LBound(KeyWrd) To UBound(KeyWrd)
Select Case Range("C3").Value
Case "1"
'AND検索の処理
:
Case "2"
'OR検索の処理
:
End Select
Next i
Next r
End Sub
※赤字の部分が、今回修正したコードです。
「うん。変数KeyWrdをVariant型にして、Split関数でB3セルの検索ワードを配列として格納する。
vbTextCompareを指定しているから、区切り文字のスペースが全角でも半角でもオッケーだ。
………後はLBound、UBound関数で、配列内の検索ワードの数だけ処理を繰り返し、
C3セルの値に応じてAnd検索、Or検索の処理を分岐してやればいい…」
・LBound関数、UBound関数
LBound関数は、引数に指定した配列で使用できる最も小さなインデックス番号を返します。
UBound関数は、引数に指定した配列で使用できる最も大きなインデックス番号を返します。
【書式】
LBound(配列)
UBound(配列)
< スタンダード公式テキスト P98 >
森川くんはコードを眺めながら、満足そうにうなずきます。