Probleem met If...Then

  • Onderwerp starter Onderwerp starter HJ25
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

HJ25

Gebruiker
Lid geworden
30 jan 2013
Berichten
304
Ik heb onderstaande code achter ListBox5 gehangen maar ik krijg steeds een foutmelding. Wat is hier mis mee?
Wanneer ListBox5 P1 of P2 is dan moet ListBox6 leeg zijn en wanneer ListBox5 "P3" is dan moet in ListBox6 een lijst komen. Wanneer in ListBox5 niks ingevuld is moet ListBox6 ook leeg zijn.

Code:
Private Sub ListBox5_Change()
If ListBox5.Value = "P1" Or "P2" Then
ListBox6.RowSource = ""
Else
ListBox6.RowSource = "Lijst2"
End If
End Sub
 
Code:
Private Sub ListBox5_Change()
If ListBox5.Value = "P1" Or [COLOR="#FF0000"]Listbox5.value =[/COLOR] "P2" Then
ListBox6.RowSource = ""
Else
ListBox6.RowSource = "Lijst2"
End If
End Sub
 
Ik zou er dan dit van maken:

Code:
Private Sub ListBox5_Change()
    Select Case ListBox5.Value
        Case "P1", "P2"
            ListBox6.RowSource = ""
        Case Else
            ListBox6.RowSource = "Lijst2"
    End Select
End Sub
 
Bedankt gast0224 en edmoor! De oplossing van gast0224 vind ik het makkelijkst, omdat ik nog maar net werkt met VBA. Toch beiden bedankt;)
 
gast0224 heeft n.a.v. je vraag ook helemaal gelijk.
Alleen geeft mijn voorbeeld veel meer mogelijkheden in het selectief bekijken van meerdere waarden van 1 object.
Wellicht toch iets om eens naar te kijken als je beginnend bent.
 
Laatst bewerkt:
Oke bedankt voor het melden! Dus eigenlijk kan je met jouw oplossing achter "P1" en "P2" gewoon nieuwe dingen er achter zetten waar hij dan ook op controleerd?
Enige dat nog aangepast moet worden is dat wanneer ListBox5 nog niet ingevuld is dat ListBox6 dan ook nog leeg is. Is dat eenvoudig met een extra regel in de vba code op te lossen of wordt de hele code daar anders van?
 
Dat kan inderdaad met mijn oplossing. Met een If Then Else structuur zou je een wat complexere code krijgen die eenvoudig door de Select Case kan worden opgelost. Wanneer ListBox6 leeg gemaakt moet worden als ListBox5 leeg is kun je dat simpel in mijn voorbeeld aanpassen door de regel Case "P1", "P2" te wijzigen in:
Case "P1", "P2", ""
 
Laatst bewerkt:
Ik ben maar eens gaan kijken naar jouw code en die werkt ook prima! Het enige dat nog niet werkt is wanneer ik probeer ListBox6 leeg te krijgen wanneer er in ListBox5 nog niks geselecteerd is. Ik heb gewoon jouw code gekopieerd en de wijziging er in gezet die je hiervoor aangaf dus ik heb onderstaande code. Helaas werkt het dus nog niet wanneer ik het scherm open en in ListBox5 nog niks heb selecteerd...
Code:
Private Sub ListBox5_Change()
    Select Case ListBox5.Value
        Case "P1", "P2", ""
            ListBox6.RowSource = ""
        Case Else
            ListBox6.RowSource = "Lijst2"
    End Select
End Sub
 
Je zou even in debug mode moeten kijken wat er precies gebeurd.
Het zou kunnen dat er spaties in ListBox5 staan en dan klopt de vergelijking met "" niet.
Je kunt het proberen door Select Case ListBox5.Value te veranderen in
Select Case Trim(ListBox5.Value)
 
Laatst bewerkt:
of
Code:
Private Sub ListBox5_Change()
    ListBox6.List= [Lijst2]

    Select Case ListBox5.Value
    Case "P1", "P2", ""
      ListBox6.clear
    End Select
End Sub

PS. Vermijd rowsource, omdat het problemen kan geven met ingevoerde waarden.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan