#010 複数のIIf関数を簡略化する方法 VBA

IIf関数は、クエリーのフィールドの演算式でも If〜Else〜End If の構文のように使えますし、モジュールのコードでも1行で If〜Else〜End If を記述できるので便利なのですが、複数の分岐条件がある場合には複雑になるので決して使い勝手がいいものではありません。
例: = IIf(A < 50, 0, IIf(A < 70, 1, 2))
※変数Aが50未満なら0、50以上70未満なら1、70以上なら2を返す。
モジュールの場合にはあえて IIf関数 を使わなくても If〜Else〜End If や Select Case でも対応できるのですが、さらに次のようなSwitch関数を使えば、複数のIIf関数を使うような場合にも同様の条件分岐をシンプルに表現することができます。
= Switch(A < 50, 1, A < 70, 2, A >= 70, 3)
また、ここでの変数Aが 1, 2, 3.... のように値の場合には Choose関数 によってさらにシンプルになります。
= Choose(A, "A", "B", "C")
※変数Aが1のとき"A"を、2のとき"B"を返す。


このChoose関数は、何らかのプロパティの値に応じてある変数に値をセットするような場合に便利です。例えばフォームの[スクロールバー]プロパティの値(数値)に応じて、文字列変数にその内容を漢字で設定するような場合、次のように使うことができます。
Private Sub コマンド1_Click()
   Dim strScrolProp As String

  strScrolProp = Choose(Me.ScrollBars + 1, "なし", "水平のみ", "垂直のみ", "水平/垂直")

  Debug.Print strScrolProp

End Sub
どうですか?。If〜Else〜End If や Select Case よりはるかにシンプルだと思いませんか?。
| Index | Prev | Next |

この情報は参考になりましたか?、問題は解決しましたか?、もしまだなら......
T'sWareのワンポイトテクニカルアドバイスをご利用ください。3000円/件〜でご支援します。
スタンドアロンからSQL Server対応まで、オーダーメイドのシステムを短納期・安価でお届けします
 

Copyright © T'sWare All rights reserved