10/13/2017

Excel。マクロ015。条件分岐の「If Then End If」

Excel。マクロ015。条件分岐の「If Then End If」

<VBA>

事務職でも、少しExcel VBAを知っていると、
確かに作業効率は改善されるようですが、
難しいと感じている人も多いようです。
とはいえ、少しずつでいいので、慣れていくといいですね。

今回は、条件分岐処理の基本
If Then End If 
をご紹介していきます。

If Then End Ifは、
「もしこの条件を満たしていたら、実行」
という処理を行うことができます。

ステートメントとしては、
If 条件式 Then
 処理内容
End If

です。処理内容が短い場合は、一行で書いてもいいのですが、
慣れるまでは、この形で書くようにするといいですね。

では、次の表があります。

G列の売上金額が、200,000以上だったら、
文字を赤にするという設定を行うようにしたいとします。

条件付き書式でもいいのですが、
条件付き書式は、
一度きりの資料の時でも条件付き書式の設定情報はファイルに残ってしまうので、
ファイルサイズや、
セルのコピーなどの時に条件付き書式の設定データが邪魔になることがあります。

このようなこともあって、
今回は、マクロVBAで処理出来るようにしてみましょう。

その前に、マクロVBAがイマイチ苦手な方は、
このあたりから、苦手になっていくそうなので、
今回は、ワザと細かくプロセスを経て作っていこうと思っております。

まずは、次のようなマクロVBAを作りましょう。

Sub 条件分岐01()
    If ActiveCell.Value >= 200000 Then
        ActiveCell.Font.Color = vbRed
    End If
End Sub

では、G4をクリックしておいてから、このマクロVBAを実行してみましょう。

G4の値は、200,000以上なので、文字の色が赤になりましたね。

ここで、
「他のセルは、文字の色が赤になっていないじゃないか!」と思った方。

その通り、このマクロVBAは、
アクティブセルの内容を判断しているだけのマクロVBAです。

マクロVBAは、このような「条件分岐処理」とペアで必要になってくるのが、
繰り返し処理」なのです。

要するに、一つずつのセルを判断することを繰り返していく。
ということをするわけです。

なので、このマクロVBAに繰り返し処理を加えてみましょう。

Sub 条件分岐02()
    Dim i As Long
    For i = 2 To 18
        If Cells(i, 7).Value >= 200000 Then
         Cells(i, 7).Font.Color = vbRed
        End If
    Next
End Sub

では、実行してみましょう。

今回は、G列の売上金額のデータすべてに関して、
200,000以上なら文字の色が赤色になりましたね。

ここで、マクロVBAの意味を確認しておきます。

Dim i As Long は、iという変数をLong形式で宣言しています。
変数はわかりやすい名前にしてもOKですね。
例えば、gyouというのでもOKですね。

For i = 2 To 18~Next
このFor カウンタ変数=初期値 To 終了値 Next
という繰り返し処理構文です。
今回は、2行目から18行目まで処理をするので i = 2 To 18

この繰り返し処理構文の中身が、
If Cells(i, 7).Value >= 200000 Then
  Cells(i, 7).Font.Color = vbRed
End If

Cells(i,7)ですが、セル(i行目,7列目)という意味なので、i=2の場合は、
セルG2を表現します。

つまり、
If Cells(i, 7).Value >= 200000 Then は、G2は200,000以上ですか?
という意味になります。

Cells(i, 7).Font.Color = vbRed は、文字の色を赤にするという意味です。

この処理を繰り返し処理構文の中に組み込まれているので、
G2:G18まで処理してくれたわけです。

今回は、条件分岐と繰り返し処理構文の基本のご紹介でした。