pickup

目次

For Each構文

こんにちは。伊川(@naonaoke)です。

今回は、セルの中から、条件に合う値を探すということを説明します。

 

前回、上の記事で、For Earch構文を使いました。

今回は、ExcelでFor Eachをカンタンに説明します。

問題提起

 

(株)IKAWAの柄久 瀬瑠子(エク セルコ)は、上司から下記の依頼を受けました。

・給料が250,000円以上の文字を赤くして欲しい。

・IF構文以外でコードを記載すること。

こんなに詳細な条件をだすなら、お前がやれと柄久 瀬瑠子(エク セルコ)は思っています。しかし、業務命令です。何かよい方法はないだろうか?

解決策

回答
sesuko2.jpg
・For Each構文を使う

For Each構文とは

このような記載になります。

For Each構文の内容
Dim 変数名 As Variant
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
同じことができるので、今回は、結果は同じという事になります。数値で繰り返したい場合は for next配列を繰り返したい場合は for each上記のようなメリットがあります。

Yahoo知恵袋から引用 For Eachを使うメリット

すばらしい回答がありましたので、その回答を引用します。

例えば、”人の顔”を表すオブジェクトを作成したとした場合に、

For Each 顔の部分 In 人の顔
If 顔の部分.状態=汚れている Then 顔の部分.綺麗にする
Next

というような使い方が出来ます。
人の顔は、目・耳・鼻・口のコレクションで構成されているとします。
コレクションとはオブジェクトの構成要素で、For Each~Nextは、その構成要素に対して一連の処理を行うためのものです。
上記の例だと、人の顔の部分(目・耳・鼻・口)を「顔の部分」変数に順番に割り当てます。
この、「顔の部分」変数を介して、その「状態」を表すプロパティを順番にチェックして、汚れていればその部分を綺麗にするための「綺麗にする」メソッドを実行するということです。(目だったら目薬を差したり、耳なら耳かきで耳掃除、鼻なら鼻毛を抜いたり、口なら歯磨きとかを実行するプロシージャがそれぞれ作成されているとします)

スポンサーリンク
スポンサーリンク

まとめ

今回のまとめ
sesuko6.jpg
VBAを勉強するに当たって、配列は、結構重要なものです。配列が登場すると、今回の、For Eachは必ずと言っても過言ではないくらい、登場します。For Each自体は、そんなに難しくはないので、ぜひみなさんのスキルにしてください。

今回のサンプルファイルはNo37です。

毎日の業務が、3時間短縮できます

わからない事を延々と考えるのは、無駄です。

  • なんで作動かないの?
  • もうやだ!VBAなんか嫌い!
  • ネットで調べても情報がない!

必ず作動するコードが、ここにあります。

スポンサーリンク

Twitterでフォローしよう

おすすめの記事