Autosize columns ListBox1

Închis
Avatar utilizator
raresmc
Mesaje: 44
Membru din: Dum Sep 06, 2009 8:58 pm
Localitate: Vila-Real,Spania

Autosize columns ListBox1

Mesaj de raresmc » Mie Sep 23, 2009 2:39 pm

In UserForm1 am ListBox1 ce se populeaza cu date din tabeluil din Sheet1.
Insa in unele celeule din ListBox1 nu se vad toate caracterele din cauza ca lungimea coloanei din listbox1 este mai mica fata de numarul de caractere a celulei din sheet1.Pentru a ma face mai explicit am atasat o imagine cu problema mea.
Ce cod trebuie scris si unde pentru a redimensiona coloanele din ListBox1 in functie de numarul de caractere al celulelor din Sheet1?
Sin título.jpg
Va rog frumos daca se poate sa ma ajutati.
Multumesc anticipat.
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.

Avatar utilizator
gecs
Moderator
Moderator
Mesaje: 2311
Membru din: Sâm Aug 15, 2009 10:05 am
Localitate: Bucuresti

Re: Autosize columns ListBox1

Mesaj de gecs » Mie Sep 23, 2009 3:15 pm

In procedura atasata evenimentul Initialize al UserForm-ului folosesti proprietatea "ColumnWidths" a ListBox-ului respectiv:

Cod: Selectaţi tot

Private Sub UserForm_Initialize()
    Me.ListBox1.ColumnWidths = "144;64;64;68;64;64;144"
End Sub
Latimea implicita a coloanelor e de 72 de puncte (1''). Din pacate nu cred ca se poate imagina o formula de calcul in functie de numarul de caractere, asa ca singura varianta pe care eu o vad posibila si acceptabila e aceea sa folosesti mai intai valoarea -1 in proprietatea "ColumnWidths" din fereastra Properties (asta va seta latimea implicita pentru toate coloanele - 72 puncte), sa afisezi form-ul, sa faci scroll pe tot pachetul de date si sa apreciezi pentru fiecare coloana cam cate puncte latime ar trebui sa aiba. Prin 2-3 incercari, probabil ca vei ajunge la o forma care sa te multumeasca.

Dr.Windows
Moderator
Moderator
Mesaje: 4570
Membru din: Vin Iul 31, 2009 7:32 am

Re: Autosize columns ListBox1

Mesaj de Dr.Windows » Mie Sep 23, 2009 3:52 pm

In plus, daca vrei o "redimensionare automata" in functie de numarul maxim de carectare de pe fiecare coloana, am gasit aici un tutorial care poate iti va fi de folos: Showing An Array On A Form; Autosizing ColumnWidths Of A ListBox iar din sectiunea a 3-a "Module Code and Conclusion" poti descarca si fisierul XLS "demo".

Avatar utilizator
raresmc
Mesaje: 44
Membru din: Dum Sep 06, 2009 8:58 pm
Localitate: Vila-Real,Spania

Re: Autosize columns ListBox1

Mesaj de raresmc » Mie Sep 23, 2009 4:44 pm

Multumesc de ajutorul acordat, insa cea de a doua varianta propusa nu functioneaza.Cea de a doua varianta care nu functioneaza m-ar interesa pe mine.
Daca are cineva timp sa-si bata capul cu problema mea facand un exemplu functional i-as fi recunoscator.
Va multumesc.

Avatar utilizator
raresmc
Mesaje: 44
Membru din: Dum Sep 06, 2009 8:58 pm
Localitate: Vila-Real,Spania

Re: Autosize columns ListBox1

Mesaj de raresmc » Mie Sep 23, 2009 5:07 pm

Am gasit un exemplu functional la problema mea.
Multumesc tuturor.
Daca cineva a gasit o varianta mai simpla pentru rezolvarea acestei problema va rog frumos nu ezitati sa o atasati.
Multumesc.
Autosize columns ListBox.xls
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.

Dr.Windows
Moderator
Moderator
Mesaje: 4570
Membru din: Vin Iul 31, 2009 7:32 am

Re: Autosize columns ListBox1

Mesaj de Dr.Windows » Mie Sep 23, 2009 5:30 pm

raresmc scrie:Am gasit un exemplu functional la problema mea.
Pai este exact fisierul "demo" de care iti spusesem pentru acel tutorial... ;)
Din pacate ceva mai bun (sau mai "scurt") inca nu am gasit... In plus exemplul de acolo nu tine cont si de dimensiunea fontului iar pentru asta, asa cum a spus si Gecs, e greu de gasit o formula care sa tina cont de lungimea si inaltimea textului... dar mai cautam... pana la urma poate se gaseste ceva si mai bun...

Avatar utilizator
raresmc
Mesaje: 44
Membru din: Dum Sep 06, 2009 8:58 pm
Localitate: Vila-Real,Spania

Re: Autosize columns ListBox1

Mesaj de raresmc » Joi Sep 24, 2009 6:51 pm

Am un exemplu mai putin complicat care face acelasi lucru:autodimensioneaza coloanele listbox-ului in functie de lungimea coloanei tabelului din Sheet1
ColListbox.xls
Anuntati-ma daca ceva nu functioneaza corect.
Pe curand , toate cele buna va doresc.
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.

Închis

Înapoi la “Visual Basic for Application (VBA) cu Excel - Intrebari tehnice”