Select Case uitbreiden met automatisch combobox leeg maken

Status
Niet open voor verdere reacties.

HJ25

Gebruiker
Lid geworden
30 jan 2013
Berichten
304
Hallo,

twee vraagjes:
ik heb onderstaande code gemaakt om er voor te zorgen dat achter het juiste lokaal de juiste lokaalopstelling komt te staan, en waar zo mogelijk er een keuze gemaakt kan worden uit verschillende lokaalopstellingen. Wanneer ik nu een ander lokaal aanklik komt er automatisch dus de lokaalopstelling te staan. Wanneer ik lokaal 1 geselecteerd heb komt er "E" te staan in ComboBox65. Tot zover mooi, maar wanneer ik nu lokaal 1 wijzig in "Lokaal 2 & 3" dan moet de ComboBox eigenlijk direct leeg gemaakt worden. Bij Lokaal 2 & 3 kan namelijk gekozen worden uit "A" en "B", maar de "E" van lokaal 1 blijft staan. Hoe kan ik dit oplossen?

Nu is deze code nogal lang en maar voor één ListBox en ComboBox. Ik heb 8 keer een ListBox met daarachter een ComboBox. Moet ik deze code dan voor alle 8 maken of is er een manier om dit eenvoudiger en korter te doen?

Code:
Private Sub ListBox13_Change()
    Select Case ListBox13.Value
        Case "Lokaal 1"
            ComboBox65.Value = "E"
            ComboBox65.Locked = True
        Case "Lokaal 2"
            ComboBox65.Value = "A"
            ComboBox65.Locked = True
        Case "Lokaal 3"
            ComboBox65.Value = "A"
            ComboBox65.Locked = True
        Case "Lokaal 4"
            ComboBox65.Value = "A"
            ComboBox65.Locked = True
        Case "Lokaal 5"
            ComboBox65.Value = "A"
            ComboBox65.Locked = True
        Case "Lokaal 6"
            ComboBox65.Value = "A"
            ComboBox65.Locked = True
        Case "Lokaal 7"
            ComboBox65.Value = "B"
            ComboBox65.Locked = True
        Case "Lokaal 8"
            ComboBox65.Value = "N.v.t."
            ComboBox65.Locked = True
        Case "Lokaal 9"
            ComboBox65.Value = "N.v.t."
            ComboBox65.Locked = True
        Case "Lokaal 10"
            ComboBox65.Value = "N.v.t."
            ComboBox65.Locked = True
        Case "Lokaal 11"
            ComboBox65.Value = "B"
            ComboBox65.Locked = True
        Case "OLC"
            ComboBox65.Value = "N.v.t."
            ComboBox65.Locked = True
        Case "Lokaal 2 & 3"
            ComboBox65.RowSource = "Lokaalopstelling23"
            ComboBox65.Locked = False
        Case "Lokaal 4 & 5"
            ComboBox65.RowSource = "Lokaalopstelling45"
            ComboBox65.Locked = False
        Case "Lokaal 4, 5 & 6"
            ComboBox65.RowSource = "Lokaalopstelling456"
            ComboBox65.Locked = False
        Case Else
            ComboBox65.RowSource = ""
    End Select
End Sub
 
Dat is een beetje afhankelijk van de data en de combinaties die je kunt hebben. in principe kun je dit prima in een file opslaan als key<>value paar, bijvoorbeeld.

Wat al kan helpen is een simpele functie schrijven die je combobox en selectie reset naar de originele waarden, dan heb je in ieder geval het probleem niet dat de vorige keuze blijft staan
 
Oke bedankt! Heb je hier toevallig ook een voorbeeld van? Zo bekend ben ik namelijk niet met vba
 
Basisvoorbeeld om de code in te korten en eenmalig te definiëren
Code:
Private Sub ListBox13_Change()
'deze lijst kun je ook ergens eenmalig definiëren buiten de lus of zelfs inlezen uit een bestand / excel regio
  Dim ff As Collection
  Set ff = New Collection
  ff.Add "E", "Lokaal 1"
  ff.Add "A", "Lokaal 2"
  'etc
  
  ComboBox65.Value = ff.Item(ListBox13.Value)
end sub

deze code voldoet niet helemaal aan je vraag, maar via variants/objecten voor de value zou je kunnen bereiken wat je wilt. Helaas is er niet een eenvoudige manier om dat uit te leggen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan