Tussenvoegen combobox als een soort filter om per naam te wijzigen

Status
Niet open voor verdere reacties.

Offthefield

Gebruiker
Lid geworden
27 apr 2005
Berichten
369
Ik ben bezig met het uitbreiden van mijn werklijsten programma, de bedoeling is om
er nog een combobox tussen te plaatsen, om zo te kunnen selecteren op persoon,
hierdoor moet erin de listbox alleen de gegevens van deze persoon (nummer beginnende met S(imon),
(N)ico, (R)uud )komen te staan. Zodat als ik bv "Simon" moet hebben, zijn gegevens sneller kan wijzigen,
of is het misschien slimmer om per persoon een nieuwe sheet te maken?

Heeft iemand een idee, hoe ik dit kan aanpassen?

Alvast hartelijk dank
 

Bijlagen

  • PLANNING.xls
    62,5 KB · Weergaven: 35
zoiets?

Code:
Private Sub cmbOptie_change()
ListBox1.Clear
    For Each cl In Sheets(1).Range("A2:A" & Rows.Count)
        If cl.Offset(, 3).Value = cmbOptie.Value Then ListBox1.AddItem cl
    Next
End Sub
 
Bedankt SjonR voor de hele snelle reactie,

Ik heb het voorbeeld van jouw tussengevoegd met verandering van sheets(1) naar sheets("WERKLIJSTEN"),
maar hij komt direct met een error, kan je zien wat ik fout doe

Alvast bedankt
 

Bijlagen

  • PLANNING.xls
    68 KB · Weergaven: 40
maak deze regel eens onklaar: (staat in userform_initialize)
Code:
ListBox1.RowSource = "A2:A" & Range("A65536").End(xlUp).Row
 
SjonR, Fantastisch!!!, alles werkt perfect

Ik wil nog 1 klein item veranderen en dat is, als ik ze toch allemaal wil hebben in de listbox,
hoe moet ik dat aangeven?
 
zo dan?

Code:
Private Sub UserForm_Initialize()

  With cmbOptie
    .AddItem "Alles"
    .AddItem "Nico"
    .AddItem "Simon"
    .AddItem "Ruud"
    .Text = "Alles"
  End With

cmbOptie.SetFocus
End Sub


Private Sub cmbOptie_change()
X = Sheets("WERKLIJSTEN").Range("A" & Rows.Count).End(xlUp).Row
ListBox1.Clear
If cmbOptie.Value = "Alles" Then
    For Each cll In Sheets("WERKLIJSTEN").Range("A2:A" & X)
        ListBox1.AddItem cll
    Next
Else
    For Each cl In Sheets("WERKLIJSTEN").Range("A2:A" & X)
        If cl.Offset(, 3).Value = cmbOptie.Value Then ListBox1.AddItem cl
    Next
End If
End Sub
 
Laatst bewerkt:
Echt geweldig SjonR,

Ik kan weer verder, ook een mooie leidraad voor andere programma's, nogmaals hartelijk dank
 
Gebruik liever geen additem, en laat het werkblad tijdens een geladen Userform buiten gebruik.

Code:
Private Sub UserForm_Initialize()
With cmbOptie
 .List = Array("Alles", "Nico", "Simon", "Ruud")
 .ListIndex = 0
End With
End Sub




Private Sub cmbOptie_change()
sv = Sheets("WERKLIJSTEN").Cells(1).CurrentRegion.Columns(1).Offset(1).SpecialCells(2).Resize(, 4).Value
With ListBox1
    .List = sv
 If cmbOptie.ListIndex > 0 Then
    For i = .ListCount - 1 To 0 Step -1
     If .List(i, 3) <> cmbOptie.Value Then .RemoveItem i
    Next i
  End If
 End With
End Sub

Hier met 'Remove' maar kan ook in een array.
 
Sorry, voor de late reactie

Het probleem is opgelost door de info van jullie

Nogmaals hartelijk dank
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan