【VBAスタンダードに挑戦!】
本日の5分勉強の内容
********************************************************
Find メソッド
・セルを検索するときに使う
・指定した語句/数値を検索するだけなので、見つけたセルを選択したり、
色を付けたり、見つけたあとの処理が必要
・範囲. Find(引数)
・以下は引数
What | 検索語句を指定する |
After | ここで指定したセルの次のセルから検索開始する |
LookIn | 検索する対象を指定する(値、数式 etc.) |
LookAt | 完全一致かどうかを指定する |
SearchOrder | 検索方向を指定する(右 or 下) |
SerchDirection | 検索の向きを指定する(次 or 前) |
MatchCase | 大小文字を区別するか指定する |
MatchByte | 全半角を区別するか指定する |
SearchFormat | 書式を含めるか指定する |
・「What」は必ず指定する
・前回検索した設定が残ってしまうので、「LookAt」は指定した方が安全
(シート上で手動の検索したときの設定が残る)
表から「Jacket」を検索して赤字にするRange("A1:C5").Find(What:="Jacket").Font.ColorIndex = 3
列を指定して「Jacket」を検索して赤字にする
Columns(2).Find(What:="Jacket").Font.ColorIndex = 3
表から「Jac」を含むセルを検索して赤字にする
Range("A1:C5").Find(what:="Jac", LookAt:=xlPart).Font.ColorIndex = 3
※完全一致は LookAt:=xlWhole
Is Nothing
・検索値が見つからなかった場合、エラーとなる為、
見つからなかった時の処理が必要となる
If Columns(2).Find(What:="Jacket") Is Nothing Then
処理
Else
処理
End If
********************************************************
Find も使ったことはあります。
最初のころは、見つからなかった時の処理をどうしたらよいか
わからず、苦戦していましたが、
If Columns(2).Find(What:="Jacket") Is Nothing Then
'処理を何も書かない
Else
メインの処理
End If
とすると、見つからなかった時に何もせずスルーしてくれるので、
エラーも発生せず、次の処理に移行してくれます。
しかし、Find も最初に見つけたセルのみに対して処理を実行するので、
同じデータが複数ある場合には、違う方法にしたり、補足の処理が必要です。
SearchOrder とか SearchDirection は、全く使ったことがないから
別途、勉強が必要かな。
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/