こんにちは、Ryoです。
VBAを利用して処理を行う中で分岐処理を行うことは多々あるかと思いますが、簡単な内容であればIIf関数を利用して分岐処理を行うことができますので、今回はその内容について書いていきます。
1.サンプル概要
以下の表に対し、セルD列の値を条件に応じてフォント色の変更を行いますので、100,000を超える値は青字、未満であれば赤字に変更する処理としています。
実行結果として下の画像の通りです。
以上がサンプル概要になります。
2.サンプルコード
Sub Sample1() Dim i As Integer Range("D2").Select For i = 1 To 5 With ActiveCell 'セルの値が100,000未満であれば赤字、 '100,000を超える場合は青字とする .Font.Color = IIf(.Value > 100000, _ RGB(0, 0, 255), RGB(255, 0, 0)) .Offset(1, 0).Select End With Next i End Sub
IIf関数の構文:IIf(expr, truepart, falsepart)
この関数は引数exprに指定した条件に応じて処理を実施するものです。引数truepartはTrueで実行する内容、引数falsepartはFalseでの実行内容を指します。
サンプルコードでは条件式ActiveCell.Value>100000に対してTrueであれば。フォント色を青字、Falseであれば赤字とするものです。
例えば上記に追加して300,000を超える値はフォント色を緑にするという処理を追加したい場合はIIf関数をネストすることで対処できますのでご参考までに。ただしIf文と同じでネストし過ぎると非常にわかり難い記述になるのでご注意ください。
Sub Sample2() Dim i As Integer Range("D2").Select For i = 1 To 5 With ActiveCell 'セルの値が100,000未満であれば赤字、 '100,000を超える場合は青字、 '300,000を超える場合は緑文字とする .Font.Color = IIf(.Value > 100000, _ IIf(.Value > 300000, RGB(0, 255, 0), _ RGB(0, 0, 255)), RGB(255, 0, 0)) .Offset(1, 0).Select End With Next i End Sub
3.まとめ
条件分岐処理なのでIfやSelect Caseステートメントを使うことが一般的ですが、今回ご紹介したように関数を利用して分岐処理を行うこともできます。
用途によってはIIf関数で処理した方が良い場合もあるので知っておくと便利ですから機会があればぜひご活用くださいませ。
以上、分岐処理に関数を利用する方法についてでした!今回の記事が何かの参考になれば幸いです。
Ryo