Select Case ステートメントと If-Then-Else ステートメントでの標準設定の動作の定義

Select Case ステートメントや If-Then-Else ステートメントでは、標準設定の処理を定義しておかないと、予期しない結果が返される可能性があります。

ベスト・プラクティス

予期しない結果が返されないようにするには、Select Case や If-Then-Else ステートメントでは、標準設定の動作を必ず定義します。

次の例では、コード内ですでに定義した Select Case ステートメントと If-Then-Else ステートメントでは対応できない状況に適用するために、標準設定の動作が正しく定義されているコードと誤ったコードを紹介します。

誤った方法

このサブルーチンでは、不具合のステータスが Open、New、Reopen のいずれかの場合にのみ BG_USER_01 フィールドを表示しようとしています。ただし、ステータスが Closed または Fixed の不具合の IsVisible プロパティが True に設定された状態でこのサブルーチンのインスタンスが呼び出されると、ステータスが Closed または Fixed の不具合でもフィールドが表示されてしまいます。このような動作が発生するのは、Closed と Fixed のステータスを処理する Case ステートメントが定義されていないためです。

例:

Sub Bug_FieldChange(FieldName)
    If FieldName="BG_STATUS" Then
        Select Case Bug_Fields(FieldName).Value
            Case "Open", "New", "Reopen" _
	     Bug_Fields("BG_USER_01").IsVisible = True
        End Select
    End If
End Sub

 

正しい方法

すべての可能性に対処したサブルーチンです。

例:

Sub Bug_FieldChange(FieldName)
    If FieldName="BG_STATUS" Then
        Select Case Bug_Fields(FieldName).Value
            Case "Open", "New", "Reopen"
                Bug_Fields("BG_USER_01").IsVisible = True
            Case Else
                Bug_Fields("BG_USER_01").IsVisible = False
        End Select
    End If
End Sub