10/31/2017

Excel。マクロ016。条件分岐 If Then Else End If

Excel。マクロ016。条件分岐 「If Then Else End If」

<VBA>

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

とはいえ、少しずつでいいので、慣れていくといいですね。

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

If Then Else End Ifは、
「もしこの条件を満たしていたら、実行。そうでなければ、こっちを実行」
という処理を行うことができます。

IF関数と同じですね。
真の場合は、こうして。偽の場合は、こうして。というイメージ。

ステートメントとしては、
If 条件式 Then
   処理内容1
Else
   処理内容2
End If
です。

では、次の表を使って

数量が5以上だったら、文字の色を赤色にして、
それ以外だったら、文字の色を青色にするというマクロVBAを作っていきましょう。

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

If 条件式 Then
   処理内容1
Else
   処理内容2
End If
というステートメントだけだと、アクティブのセルのみで、
一度しか動いてくれません。

ですから、For to Nextを組み合わせて使うことで、範囲全体を処理してくれます。

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

数量が5以上だったら、文字の色が赤色で、
それ以外は文字の色が青色に設定されていますね。

注意しないといけない点は、
IF関数になれていると、どうしても、偽の場合は、何もしない。

例えば、空白のままとしたら、””(ダブルコーテーション×2)で表現しますが、

マクロVBAのIf Then Else End Ifを使うのではなくて、
Elseを必要としません。

その点を注意して、
If Then End IfとIf Then Else End Ifを使い分ける必要があります。

また、このIf Then Else End Ifの利点ですが、
Excelの条件付き書式を使っても同じことが出来ますが、
ファイルサイズが大きくなる問題と、コピーした時に、
条件付き書式がセルに残ったまま貼り付いてしまう点など問題を
回避することが出来ますし、
If Then Else End Ifだけで、
ExcelのIF関数と条件付き書式を合わせて実行出来る点からも、
マクロVBAになれると作業効率自体でも改善を図ることができます。

例えば、H列に、判定という列を作って、
支店が東京だったら、本店という文字を表示して、文字の色は赤色
支店が東京以外だったら、支店という文字を表示して、文字の色は青色
というように設定してみましょう。

Sub 条件分岐アレンジ()
    Dim i As Long
    For i = 2 To 18
        If Cells(i, 3).Value = "東京" Then
         Cells(i, 8).Value = "本店"
         Cells(i, 8).Font.Color = vbRed
        Else
         Cells(i, 8).Value = "支店"
         Cells(i, 8).Font.Color = vbBlue
        End If
    Next
End Sub

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

H列に指示どおりの結果が算出されましたね。

このように、通常のExcelでも出来るのですが、
マクロVBAでも出来る・作れるというカードを持っていると、
いいのかもしれませんね。