#034 | True/Falseをうまく使ってコードをシンプルに | VBA | |
VBAではお馴染みの If〜Then〜Else ステートメント を使う場合、もし "If a > 10 Then" とあったとしたら普通は『もしaが10より大きければ』と考えると思いますが、この構文は本来は「If <条件式> Then で<条件式>の部分が真(True)と評価されたらThen以降のステートメントを実行する」というものなので、『もし"aが10より大きい"が真(True)ならば』と解釈することもできます。いくつかの場面でこの真(True)か偽(False)かの考え方を頭に入れてコーディングすることによって、VBAのコードをシンプルにすることができます。 例えば、 If a = True Then Debug.Print "TRUE"
というコードを『もし"a = True"が真(True)ならば』と見た場合、Trueかどうかの判断がダブっていることが分かります。ここでは単純に『もしaが真(True)ならば』と考えているわけですから、次のように書き換えることによってコードをシンプルにすることができます。
If a Then Debug.Print "TRUE"
また、「If a = False Then Debug.Print "FALSE"」とある場合には、「If Not a Then Debug.Print "FALSE"」と書き換えることができます。 続いて、この真(True)か偽(False)かの考え方をFunctionプロシージャに当てはめてみましょう。 Function TrueOrFalse(a) As Boolean
このコードでは、"a > 10"の部分は真(True)か偽(False)のいずれであるかを判断しているわけですから、やはり返り値へのTrue/Falseの代入はコードがダブっていると考えることができます。そこで次のように非常にシンプルな形に書き換えることができます。
If a > 10 Then TrueOrFalse = True Else TrueOrFalse = False End If End Function Function TrueOrFalse(a) As Boolean
TrueOrFalse = (a > 10) End Function さらにこの考え方は、真(True)か偽(False)のいずれかしか値を持たないフォーム上のコントロールなどのプロパティにも適用できます。例えば、チェックボックス(chkData)がもしチェックされたらテキストボックス(txtData)を使用可能にし、チェックが外されたら使用不可にしたいような場合、チェックボックスの[AfterUpdate/更新後処理]イベントプロシージャを使って次のようにコーディングすることができます。 Private Sub chkData_AfterUpdate()
Me!txtData.Enabled = Me!chkData End Sub |
|||
|
Copyright © T'sWare All rights reserved |