トップ > 資格を活かすには > やってみよう!Excel VBAで業務改善! > 森川くんのVBA日記編: 第23話「汎用処理を考慮しよう」2/4 :ここは素直に…

やってみよう!Excel VBAで業務改善! 森川くんのVBA日記編|第23話 「汎用処理を考慮しよう」

ここは素直に…

昼過ぎの会社では、順調に開発を続けていた森川くんが、机に頭を突っ伏して考え込んでいます。
心配そうに様子を見ていた岬さんが、彼の元に駆け寄ります。

「森川くん、どうしたの?何か、困ったことでもあるの?」

「岬先輩……実は…」

森川くんは岬さんに、問題箇所の説明をしました。

「すごいじゃない森川くん、もうこんなに作ったんだ。
……なるほどね、単純に連結しただけでは誤検索があるし、
区切り文字を入れたとしても、100パーセント誤検索を回避できないってことを悩んでたのね。
…まあオーグチさんは、そこまで完璧な検索結果を要求してないと思うけど…。
ここは素直に、InStrじゃなくてFindメソッドを使えばいいんじゃないかしら?」

森川くんが、キョトンとした顔で岬さんを見つめます。
岬さんは、キーボードに手を伸ばし、森川くんのコードを書き直しました。


        For r = MidashiRow + 1 To EndRow
'            wrk = ""
           
'            For c = MidashiCol To EndCol
'                wrk = wrk & Cells(r, c).Value
'            Next c

'            If InStr(wrk, KeyWrd) = 0 Then
'                Rows(r).Hidden = True
'            End If

            If Range(Cells(r, MidashiCol), Cells(r, EndCol)) _
                .Find(KeyWrd, LookAt:=xlPart) Is Nothing Then
                Rows(r).Hidden = True
            End If

        Next r

「せっかくのVBAなんだから、使えるものは使わなきゃね!
要は、1行のデータの中に、検索ワードが"ある"か"ない"か、が分かればいいんでしょ?
だったら、Findメソッドでキーワードを検索しても、同じことじゃない」

岬さんが[検索]ボタンをクリックすると、今度は正しく検索結果が表示されました。

「…な、なるほど……さすが岬先輩。これは目からウロコっス」

一覧にもどる