Kolom breedtes in een ListBox automatisch aanpassen
Hoe het aanpassen in zijn werk gaat
Verschillende mensen hebben een truc bedacht om de kolom breedtes te
bepalen. Sommigen gebruiken constanten, waarmee het aantal te tonen
karakters wordt vermenigvuldigd. Deze truc werkt echter niet betrouwbaar
omdat de schermresolutie en het lettertype invloed hebben op het
resultaat.
De beste methode die ik ken gebruikt een (verborgen) label op het
formulier met de AutoSize eigenschap op waar. De label moet hetzelfde
lettertype hebben als de listbox. Na veranderen van de tekst van de
label, kan de breedte van de label worden afgelezen. Die breedte wordt
vervolgens gebruikt als kolombreedte.
De Functie SetWidths op het codevenster van het userform (zoals te zien op de vorige pagina) verzorgt het instellen van de kolombreedtes. Een matrix van de grootste tekst lengtes per kolom wordt aan deze functie doorgegeven. Vervolgens wordt voor iedere kolom de "caption" van het label voorzien van dat aantal karakters. Ik gebruik daarbij steeds hetzelfde karakter en omdat het lettertype vaak proportioneel is gebruik ik een letter die traditioneel een grote breedte heeft, de m. Die letter bepaald dus in grote mate de resulterende breedte. Tenslotte worden de gevonden breedtes achter elkaar gezet gescheiden door een ; en aan de "ColumnWidths" eigenschap doorgegeven van de listbox.
Het is belangrijk de eigenschappen van het label juist in te stellen; WordWrap moet Onwaar zijn en AutoSize Waar.
Het eindresultaat ziet er zo uit:
Niet slecht!?
Vragen, suggesties en opmerkingen
Heeft u vragen, suggesties of opmerkingen? Gebruik dan dit formulier.
Mocht uw vraag niet direct relevant zijn voor deze pagina, maar een algemene Excel vraag betreffen, dan adviseer ik om deze hier te stellen: excelexperts.nl/forum/index.php.