Nested ``++Select Case++`` structures are difficult to understand because you can easily confuse the cases of an inner ``++Select Case++`` as belonging to an outer statement. Therefore nested ``++Select Case++`` statements should be avoided.


Specifically, you should structure your code to avoid the need for nested ``++Select Case++`` statements, but if you cannot, then consider moving the inner ``++Select Case++`` to another function.

== Noncompliant Code Example

----
Public Sub Foo(A As Integer, B As Integer)
    Select Case A
        Case 0
            ' ...
        Case 1
            Select Case B   ' Noncompliant; nested Select Case
                Case 2
                    ' ...
                Case 3
                    ' ...
                Case 4
                    ' ...
                Case Else
                    ' ...
            End Select
        Case 2
            ' ...
        Case Else
            ' ...
    End Select
End Sub
----

== Compliant Solution

----
Public Sub Foo(A As Integer, B As Integer)
    Select Case A
        Case 0
            ' ...
        Case 1
            HandleB(B)
        Case 2
            ' ...
        Case Else
            ' ...
    End Select
End Sub
----

ifdef::env-github,rspecator-view[]
'''
== Comments And Links
(visible only on this page)

include::../comments-and-links.adoc[]
endif::env-github,rspecator-view[]
