トップ > 資格を活かすには > やってみよう!Excel VBAで業務改善! > 次なるイノベーション編: 第21話「がんばれ森川くん!」4/4 :検索処理は汎用処理

やってみよう!Excel VBAで業務改善! 次なるイノベーション編|第21話 「がんばれ森川くん!」

検索処理は汎用処理

「……まてよ。
検索ワードが含まれているかどうか調べるのに、全ての列のセルを連結する必要があるんだっけ……。
それに、見出しの開始行や開始列は、ワークシートによって異なるはずだ…。
検索処理は汎用処理だから、いずれ他のワークシートにも組み込んでほしいって要望がきっとあるぞ……
ならここは、定数で定義しておくほうが、後々使いまわしがいいな…」
彼は入力したコードを削除すると、次のように書き換えました。

Sub 検索()
    Dim r As Long, c As Long
    Dim EndRow As Long, EndCol As Long

    Const MidashiRow As Long = 5
    Const MidashiCol As Long = 1
    
    EndRow = Cells(Rows.Count, MidashiCol).End(xlUp).Row
    EndCol = Cells(MidashiRow, Columns.Count).End(xlToLeft).Column
                
    For r = MidashiRow + 1 To EndRow
            
        For c = MidashiCol To EndCol

        Next c
            
    Next r
End Sub

「うん。見出しの始まる行と列を、定数MidashiRow、MidashiColに定義。
最終行と最終列を変数EndRow、EndColに取得して、
2つのFor…Nextステートメントを入れ子にしてやればいい。
外側のループが行に対する処理で、内側のループが列に対する処理だ。
カウンタ変数も行は"r"で列は"c"にしたから、一目で判別がつくぞ……!」
ノリノリの様子で実装する森川くんを横目に眺め、岬さんは小さく笑うのでした。

今回のエピソードはいかがでしたか?

第22話「岩田部長の反応」に続きます
文・イラスト / 武藤 玄
ご意見やご感想の投稿はこちら

星くんと一緒にSTEP UPしませんか?
一覧にもどる