目次
For Each構文
こんにちは。伊川(@naonaoke)です。
今回は、セルの中から、条件に合う値を探すということを説明します。
前回、上の記事で、For Earch構文を使いました。
今回は、ExcelでFor Eachをカンタンに説明します。
問題提起
(株)IKAWAの柄久 瀬瑠子(エク セルコ)は、上司から下記の依頼を受けました。
・給料が250,000円以上の文字を赤くして欲しい。
・IF構文以外でコードを記載すること。
こんなに詳細な条件をだすなら、お前がやれと柄久 瀬瑠子(エク セルコ)は思っています。しかし、業務命令です。何かよい方法はないだろうか?
解決策
![sesuko2.jpg](http://keiyu.xyz/wp-content/uploads/2019/10/sesuko2.jpg)
・For Each構文を使う
For Each構文とは
このような記載になります。
For Each 変数名 In 配列やコレクションなどのグループ名
処理
Next 変数名
作成手順 その1 対象のデータベースを確認する
上の図のように、赤枠の文字を赤文字に変えます。
作成手順 その2 VBAのコードを仕込む
Sub earch() Dim i As Long Dim MyR As Range maxrow = Cells(Rows.Count, 1).End(xlUp).Row For i = 2 To maxrow For Each MyR In Cells(i, 3) If MyR.Value >= 250000 Then MyR.Font.Color = RGB(255, 0, 0) End If Next MyR Next i End Sub
ループなども組合わせていますが、コードは、意外にカンタンだと思います。
同じことは、IF構文でも可能
Sub IF構文() Dim i As Long maxrow = Cells(Rows.Count, 1).End(xlUp).Row For i = 2 To maxrow With Cells(i, 3) If .Value >= 250000 Then .Font.Color = RGB(255, 0, 0) End If End With Next i End Sub
上のコードでも同じことができます。
柄久 瀬瑠子(エク セルコ)のスキルアップのために、意図的に、上司は、IF構文を禁止しました。
For Eachを使うメリット
![Function8.png](http://keiyu.xyz/wp-content/uploads/2019/10/102819_0637_Function8.png)
同じことができるので、今回は、結果は同じという事になります。数値で繰り返したい場合は for next配列を繰り返したい場合は for each上記のようなメリットがあります。
Yahoo知恵袋から引用 For Eachを使うメリット
すばらしい回答がありましたので、その回答を引用します。
例えば、”人の顔”を表すオブジェクトを作成したとした場合に、
For Each 顔の部分 In 人の顔
If 顔の部分.状態=汚れている Then 顔の部分.綺麗にする
Nextというような使い方が出来ます。
人の顔は、目・耳・鼻・口のコレクションで構成されているとします。
コレクションとはオブジェクトの構成要素で、For Each~Nextは、その構成要素に対して一連の処理を行うためのものです。
上記の例だと、人の顔の部分(目・耳・鼻・口)を「顔の部分」変数に順番に割り当てます。
この、「顔の部分」変数を介して、その「状態」を表すプロパティを順番にチェックして、汚れていればその部分を綺麗にするための「綺麗にする」メソッドを実行するということです。(目だったら目薬を差したり、耳なら耳かきで耳掃除、鼻なら鼻毛を抜いたり、口なら歯磨きとかを実行するプロシージャがそれぞれ作成されているとします)
まとめ
![sesuko6.jpg](http://keiyu.xyz/wp-content/uploads/2019/11/sesuo6.jpg)
VBAを勉強するに当たって、配列は、結構重要なものです。配列が登場すると、今回の、For Eachは必ずと言っても過言ではないくらい、登場します。For Each自体は、そんなに難しくはないので、ぜひみなさんのスキルにしてください。
今回のサンプルファイルはNo37です。
![](http://keiyu.xyz/wp-content/uploads/2019/11/Sample-300x158.jpg)
わからない事を延々と考えるのは、無駄です。
- なんで作動かないの?
- もうやだ!VBAなんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。