トップ > 資格を活かすには > やってみよう!Excel VBAで業務改善! > 次なるイノベーション編: 第27話「UIを追加しよう」3/4 :コードを修正しよう

やってみよう!Excel VBAで業務改善! 次なるイノベーション編|第27話 「UIを追加しよう」

コードを修正しよう

森川くんは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 >

森川くんはコードを眺めながら、満足そうにうなずきます。

一覧にもどる