You want to "filter" a list (List B) based on the selection from another list (List A), but the lists are long and writing the If/Then or Select Case statements are repetitive, and difficult to maintain. Is there a better way?
Solution:
You can use ArrayLists and For Each Statements to do this, as shown in this example.
Here an illogic form is used, and when a value is selected from List A, then List B and C are reset to include only values less than or equal to the current selected List A value.
Example file:
Dynamic MultiValue Lists iLogic 2015.ipt 68 KB
Example code:
'reset List B list to default
MultiValue.SetList("List_B", 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16)
'reset List C list to default
MultiValue.SetList("List_C", 2,4,6,8,10,12,14,16)
Dim B_List As New ArrayList
B_List = MultiValue.List("List_B")
Dim C_List As New ArrayList
C_List = MultiValue.List("List_C")
Dim Temp_List As New ArrayList
Temp_List.Clear
For Each oItem in B_List
If List_A >= oItem Then
Temp_List.Add(oItem)
End If
Next
MultiValue.List("List_B") = Temp_List
Temp_List.Clear
For Each oItem in C_List
If List_A >= oItem Then
Temp_List.Add(oItem)
End If
Next
MultiValue.List("List_C") = Temp_List