Vertoon in Listbox onder voorwaarden

Status
Niet open voor verdere reacties.

Schipper1994

Gebruiker
Lid geworden
10 mrt 2021
Berichten
158
Hallo,

ik heb een bijlage die heel simpel gemaakt is om een voorbeeld te kunnen geven, in die bijlage kan je op een CMD drukken.
er komt een Form tevoorschijn met een listbox.

Nu komt heel de tabel in die listbox.
hoe kan ik ervoor zorgen dat enkel de mensen waarbij NIETS in kolom 3 staat tevoorschijn komt.

Ook wil ik dan via de CMD die in het form staat ervoor zorgen dat er JA in die 3de kolom komt bij de persoon die ik aanduid in de Listbox.


kan dit?
 

Bijlagen

  • HELPMIJ.xlsm
    23,4 KB · Weergaven: 27
Plak dit eens achter je userform (eerst alles verwijderen en dan alleen dit gebruiken).

Code:
Dim r As Range
Private Sub CommandButton1_Click()
 With ListBox1
  If .ListIndex > -1 Then
   .List(.ListIndex, 2) = "JA"
    r.Value = .List
  End If
 End With
 Unload Me
End Sub


Private Sub UserForm_Initialize()
 Application.ScreenUpdating = False
 With ActiveSheet.ListObjects(1).DataBodyRange
   .Sort .Cells(1, 3), , , , , , , 1
   .AutoFilter 3, ""
    On Error Resume Next
    Set r = .SpecialCells(12)
    ListBox1.List = r.Value
   .AutoFilter
 End With
End Sub
 
Laatst bewerkt:
Hoi Schipper1994,

Hier een mogelijke oplossing

Code:
Private Sub UserForm_Activate()
  Const Kolom1 = 1
  Const Kolom2 = 2
  Const Kolom3 = 3
  
  Dim Tabel As Variant, Teller As Long
   
  Tabel = [tabel1].Value
  
  ListBox1.Clear
  
  For Teller = LBound(Tabel, 1) To UBound(Tabel, 1)
    If Tabel(Teller, 3) = Empty Then
      ListBox1.AddItem Tabel(Teller, Kolom1)
    End If
  Next
End Sub
 
super, dit werkt al.


nu dit nog proberen in mijn eigen programmatje te verwerken.
 
Welke gebruik je?
 
ik heb in de loop van enkele jaren een mooi excel programma uitgewerkt dat volledig ingevuld word door VBA.
ik ben een leek in dit maar vind het leuk wat ik gemaakt heb door opzoekwerk en vragen te stellen.

ik merk aan jou code dat je
Code:
 With ActiveSheet.ListObjects(1).DataBodyRange
gebruikt. hier loopt het mis. het is niet de active sheet.
hoe kan ik dat nog aanpassen?
 
Vervang activesheet door Sheets("jouwsheetnaam")

Als het daarna nog verkeerd gaat zou je listobjects(1) kunnen vervangen door listobjects("jouwtabelnaam")
 
Laatst bewerkt:
Of:
Code:
Private Sub UserForm_initialize()
 x = Application.Transpose(Filter(Application.Transpose(Evaluate("if(index(tabel1,,3)="""",row(tabel1)-1,false)")), False, 0))
  ListBox1.List = Application.Index([tabel1], x, 0)
End Sub
 
ik probeer dit even dus om te zetten naar mijn programmatje.
in mijn programma is de eerste kolom wat ik wil zien in de listbox en de kolom 36 waar die JA zou inmoeten komen te staan. daar loopt ergens iets fout. heel de volgorde gaat overhoop
 
Er wordt gesorteerd inderdaad. Zorg dan dat deze regels zo staan


.List(.ListIndex, 35) = "JA"

.Sort .Cells(1, 36), , , , , , , 1

.AutoFilter 36, ""
 
super, dit werkt al.


nu dit nog proberen in mijn eigen programmatje te verwerken.

Omdat je het ook nog in je eigen sheet wilt verwerken
heb ik geprobeerd het zo eenvoudig te schrijven, zodat je het (hopelijk) kun begrijpen hoe ik het gedaan heb cq hoe de routine werkt.

Er zijn meer oplossingen en als de tabel ergggggggg groot is, is dit niet de snelste oplossing, maar gok dat je dit niet merkt.
 
.AddItem werkt inderdaad vertragend. Verder mis je nog een stuk code waarbij je de waarde vanuit de listbox terugschrijft naar de tabel
 
Magoo,

Ik heb de oplossing van JEC. gebruikt. Jou code werkt, voor de listbox maar niet achteraf met de knop om iets in die bepaalde kolom te krijgen.

JEC.,
Kan ik ook meerdere kolommen in mijn listbox krijgen. bv kolom 1(die er nu al instaat) maar ook kolom 5 ofzo?
 
Ja dan moet je de columncount op 5 zetten in je listbox eigenschappen
 
Krijg ik er dan niet in totaal 5 te zien?
In totaal wil ik 3 kolommen zien.
Kolom 1, 5 en 23 fso. Even uit men hoofd. Ik weet niet welke kolommen exact.
 
Je dan moet je alle ColumnWidths aangeven. En de onnodige op 0 zetten. Zoek maar eens op die eigenschap
 
oké, door wat opzoek werk zie ik idd dat ik door ";" ertussen te type per column kan beslissen..
toppie
dank u ..
 
hmm.
ik merk dat er iets niet helemaal goed gaat.
Dit word nu gesorteerd op iets. maar mijn excelsheet moet gesorteerd blijven volgens nummeriek die in Colomn 1 staat. dat zijn unieke nummers die opeenvolgen.

ik heb nu dit staan

Code:
Dim r As Range
Private Sub CommandButton1_Click()
 With ListBox1
  If .ListIndex > -1 Then
   .List(.ListIndex, 35) = "JA"
    r.Value = .List
  End If
 End With
 Unload Me
End Sub


Private Sub CommandButton2_Click()
Unload Me
End Sub

Private Sub UserForm_Initialize()
 Application.ScreenUpdating = False
 With Sheets("database").ListObjects(1).DataBodyRange
   .Sort .Cells(1, 36), , , , , , , 1
   .AutoFilter 36, ""
    On Error Resume Next
    Set r = .SpecialCells(12)
    ListBox1.List = r.Value
   .AutoFilter
 End With
End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan