Listbox

Status
Niet open voor verdere reacties.

JJZijlstra

Gebruiker
Lid geworden
26 nov 2013
Berichten
283
Beste lezer(s),

Het bijgevoegde bestandje biedt de mogelijkheid om per letter namen te selecteren in de eerste kolom. Naarmate je meer letters in de Textbox invoert krijgt je steeds minder namen te zien om zo bij de juiste naam te komen die je zoekt. Een paar vragen hieromtrent:

Ad 1):
Hoe kan ik naast het zien van de eerste kolom ook de overige kolommen gaan zien in mijn listbox wanneer ik een naam kies?
Lang in de bijbehorende VBA-code gezocht en verschillende mogelijkheden geprobeerd zonder succes.

Ad 2):
Hoe kan ik de headers zichtbaar maken?

Bestandje is toegevoegd. Graag hoor ik van u.

Vriendelijke groet,
Toby
 

Bijlagen

  • TestBestandje1.xlsm
    25 KB · Weergaven: 31
De headers kan je in de eigenschappen van je listbox wijzigen
 

Bijlagen

  • Kopie van(jp) TestBestandje1-1.xlsm
    30,1 KB · Weergaven: 30
Als je in het Change event van de textbox dit plaatst:

Code:
Dim i As Long
With ListBox1                                                                           'aanpassen aan jouw listbox naam
  .List = Blad1.Cells(1).CurrentRegion.Value                                                                      'aanpassen aan jou sheetname
   For i = .ListCount - 1 To 1 Step -1
     If InStr(LCase(Join(Application.Index(.List(), i + 1, 0))), LCase(ZOEKBOX.Value)) = 0 Then .RemoveItem i        'aanpassen aan jouw textbox naam
   Next i
 End With

Dan wordt er gezocht in alle kolommen...
 
@JeanPaul28
Het bestandje werkt nu goed. Dit was wat ik bedoelde. Hiervoor mijn hartelijke dank.


@mvdvlist
Ik heb nog een paar probleempjes.
Als ik in het eigenschappenvenster de Columnheaders instel op True, dan worden de Kolomkoppen niet geplaatst in de Headers, terwijl ik deze wel heb aangegeven in de Eigenschappenkolom.

Verder als ik in het Eigenschappenvenster Rowsource instel op "A2:h999" en verder aangeef dat ik 8 kolommen wil gaan gebruiken, dan komt later als ik vanuit mijn werkblad wil gaan starten de foutmelding no. 70 - met de boodschap "Toegang geweigerd". Hoe kan dit en hoe kan ik dit oplossen? Het bestandje is toegevoegd.

Groet,
Toby
 

Bijlagen

  • TestBestandje1a.xlsm
    24,9 KB · Weergaven: 37
Ten eerste:

Ik heb een aanpassing gemaakt in het Initialize Event van je formulier, zodat de headers wel worden ingelezen in de ListBox.

Je kunt niet de list inlezen via dit Event EN in de RowSource tegelijk, dat gaat fout. Het is EEN van beide.

Bijgevoegd een voorbeeldje...met de zoekfunctie zoals boven...
 

Bijlagen

  • Kopie van TestBestandje1a.xlsm
    26 KB · Weergaven: 41
@mvdvlist,
De headers worden niet gevuld. Je zet alleen de kopteksten als eerste regel in de listbox. Met bv
Code:
Private Sub UserForm_Initialize()
  ListBox1.RowSource = Blad1.Cells(1).CurrentRegion.Offset(1).Address
End Sub
Gaat hel wel goed maar lopen we tegen de beperkingen van het gebruik van RowSource aan.;)

Mijn voorkeur gaat uit naar jouw code en een paar labels boven de listbox. Maar dat is aan de TS
 
@mvdvlist,

Nog steeds is lukt het niet om de titels op de eerste regel binnen de headers te krijgen.
Als ik een naam wil zoeken dan worden de 'headers' op de eerste regel getoond maar niet op de plaats waar ze horen, nl. binnen de kaders.
Verder draait het programma uitstekend.
Hoe los ik het headerprobleem nu verder op?

Groet,
Toby
 
Ik weet niet zeker of je de tekst van je kolom koppen binnen de kaders van de headers kunt krijgen. Volgens mij zijn die alleen bedoeld om te laten zien hoeveel en van welke breedte je columns in de ListBox zijn.

Maar allicht zijn er mensen die dit wel weten..

En anders moet je eens naar het voorstel van VenA kijken in #6
 
Laatst bewerkt:
Het is een al jaren bekend euvel van de Listbox dat de kolomnamen niet in de listbox opgenomen worden. Dit is nu een echte 'bug'.
MS heeft het niet verholpen.
 
@snb,

Dat dacht ik haast ook al.
Echter heb ik te weinig ervaring, zodat ik het niet eerder gezegd heb in dit draadje.
U bedankt voor de bijdrage.

Groet,
Toby
 
Maak van je gegevenset een tabel. (is altijd een goed idee) Een paar labels boven de listbox en je hebt toch ook headers?
 

Bijlagen

  • Kopie van TestBestandje1a (1).xlsm
    24,7 KB · Weergaven: 56
@VenA,

Dit is een heel goed idee, volgens mij de gemakkelijkste mogelijkheid.

Als ik het goed begrijp:
-- eerst tabel maken.
-- in de tabel aangeven de namen van de headers, vervolgens deze aangeven met "label1" in de ontwerpfase zoals in jouw voorbeeld.
Dan worden deze in de listbox automatisch de headers.
Ik zal dit nog eens nagaan.

Groet,
Toby
 
Dat begrijp je net een beetje verkeerd.

De headers worden niet ingelezen in de listbox. Alleen de inhoud van de tabel komt in de listbox te staan.
 
@VenA,

Nog even terugkomend op uw bestandje. Dit werkt nu perfect.

Als ik het goed bestudeer en daarna een eigen geheel nieuw bestand maak m.et nieuwe gegevens en vervolgens ik uw gegevens overneem, dan wordt in mijn nieuwe (hier bijgevoegde) bestandje gevraagd om een variabele te definiëren. (naar de y en naar de j)
Als ik deze aangeef, dan wordt er later de schermboodschap "Foutcode 91 - With niet ingesteld" enz. getoond.

Waarom wordt in mijn bestandje wél naar een variabele gevraagd en in uw voorbeeld w helemaal niet. Hoe kan dit??
Het verband zie ik helaas niet tussen de geplaatste headers in het werksheet en de labels in het ontwerp.

Groet,
Toby
 

Bijlagen

  • EenvoudigeListbox.xlsm
    24 KB · Weergaven: 22
Beste JJZijlstra,

ten eerste: option explicit weghalen, of declareren...
bij de loop voor de labels: niet 1 to 8 , maar 1 to 3. Jij hebt er immers maar drie...
 

Bijlagen

  • EenvoudigeListbox.xlsm
    24,8 KB · Weergaven: 42
@VenA,

Wat mij intrigeert en wat ik probeer te ontdekken is de relatie tussen de Labels en de tekstinhoud hiervan in werksheet.

In de ontwerpfase heet het "Label 1" en in het werksheet kan ik "Bedrijf" noemen of een andere naam geven bv. "Klant" en het wordt automatisch aangepast.
Hoe kan dit?

Groet,
Toby
 
JJZijlstra,

In #15 verwijs ik naar een loopje. Die zie je in de code Userform_Initialize.
Een label heeft een NAAM en een CAPTION.
Noem dat maar het OPSCHRIFT van dat label. Dus Label1 BLIJFT Label1, maar krijgt in je formulier een ander opschrift...
In het loopje wordt er voor gezorgd dat de CAPTION van ieder label EEN voor EEN gelijk wordt aan de cel waar naar verwezen wordt in die code, in jou geval A1, B1 en C1 van je werkblad.

Weer wat huiswerk...
 
@mvdvlist,

Uw opmerkng heb ik nog eens een keer bestudeerd.
Zelf heb ik nog eens een nieuw bestandje aangemaakt met de headers en het werkt!
Hartelijk dank voor uw hulp en uitgebreide uitleg.

Vriendelijke groet,
Johan
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan