0

I currently have too many if statements; what is the best solution to coding hiding and unhiding about textboxes, I think I have 8 or more combinations here is the current code I have when trying this it only works with the last if statement combinations are as follows A-D, and all combinations between.:

If Combo308.Value = "A" Then
    Combo305.Visible = True
    Option103.Visible = True
    Else
     Combo305.Visible = False
    Option103.Visible = False
    End If


 If Combo308.Value = "B" Then
    Combo306.Visible = True
    Option105.Visible = True
    Else
    Combo306.Visible = False
    Option105.Visible = False
    End If


 If Combo308.Value = "D" Then
    Combo309.Visible = True
    Option111.Visible = True
    Text310.Visible = True
    Option113.Visible = True
    Combo311.Visible = True
    Option115.Visible = True
    Text312.Visible = True
    Option117.Visible = True
     Text313.Visible = True
    Option119.Visible = True
    Combo314.Visible = True
    Option121.Visible = True
    Text315.Visible = True
    Option123.Visible = True
    Text316.Visible = True
    Option125.Visible = True
    Text317.Visible = True
    Option127.Visible = True
     Text318.Visible = True
    Option129.Visible = True
     Text319.Visible = True
    Option131.Visible = True
    Else
    Combo309.Visible = False
    Option111.Visible = False
    Text310.Visible = False
    Option113.Visible = False
    Combo311.Visible = False
    Option115.Visible = False
    Text312.Visible = False
    Option117.Visible = False
    Text313.Visible = False
    Option119.Visible = False
    Combo314.Visible = False
    Option121.Visible = False
    Text315.Visible = False
    Option123.Visible = False
    Text316.Visible = False
    Option125.Visible = False
    Text317.Visible = False
    Option127.Visible = False
     Text318.Visible = False
    Option129.Visible = False
    Text319.Visible = False
    Option131.Visible = False
    End If

If Combo308.Value = "A,B" Then
    Combo305.Visible = True
    Option103.Visible = True
    Combo306.Visible = True
    Option105.Visible = True
    Else
     Combo305.Visible = False
    Option103.Visible = False
    Combo306.Visible = False
    Option105.Visible = False
    End If

If Combo308.Value = "A,B,C" Then
    Combo305.Visible = True
    Option103.Visible = True
    Combo306.Visible = True
    Option105.Visible = True
    Combo307.Visible = True
    Option109.Visible = True
    Else
    Combo305.Visible = False
    Option103.Visible = False
     Combo306.Visible = False
    Option105.Visible = False
    Combo307.Visible = False
    Option109.Visible = False
    End If
braX
  • 11,506
  • 5
  • 20
  • 33
skooter
  • 1
  • 2
  • 2
    Possible duplicate of [Forms/ VBA - activating controls based on status](https://stackoverflow.com/questions/44706387/forms-vba-activating-controls-based-on-status) – Andre Feb 17 '19 at 08:54
  • Apply tags - loop form controls - check if tag matches option. Above all: assign meaningful names to your controls. This code is unreadable. – Andre Feb 17 '19 at 08:55
  • Another example: https://stackoverflow.com/questions/3344649/how-to-loop-through-all-controls-in-a-form-including-controls-in-a-subform-ac – Andre Feb 17 '19 at 08:55

1 Answers1

0

I guess you need first hide all controls, then unhide a selection:

Combo305.Visible = False
Option103.Visible = False
' etc. - all controls in question.

Select Case Combo308.Value
    Case "A" 
        Combo305.Visible = True
        Option103.Visible = True
    Case "B" 
        Combo306.Visible = True
        Option105.Visible = True
    Case "D" 
        ' etc.
        '
    Case "A,B,C" 
        Combo305.Visible = True
        Option103.Visible = True
        Combo306.Visible = True
        Option105.Visible = True
        Combo307.Visible = True
        Option109.Visible = True
End Select

And do rename all your controls to have meaningful names.

Gustav
  • 53,498
  • 7
  • 29
  • 55