ListBox, multiselect in odpiranje/zapiranje Box-a

Pomoč pri delu z MS Excelom
Odgovori
dragopre
Prispevkov: 105
Pridružen: To Dec 11, 2012 11:46 pm

ListBox, multiselect in odpiranje/zapiranje Box-a

Odgovor Napisal/-a dragopre »

Še en problem imam z ListBox-om.

Problem je takle:
- Na listu imam več (10 ali več) celic z besedilom. V vsako celico moram zapisati imena udeležencev.
- Možne udeležence imam zapisane v posebni tabeli na drugem listu
- Izbiro imen sem pripravil z ListBox-i (Activex) z lastnostmi: Multiselect=fmMultiselectMulti, ColumnHesds=True, ..
- V VBA sem napisal kodo, ki ob spremembi ( "ListBox_Change" ) v "LinkedCell" sestavi besedilo iz izbranih imen
Do tu je vse OK.
Zdaj pa problem:
- ListBox-i so kar obsežni pa še 10 jih je. Zato bi jih rad "skril" ali minimiziral dokler ga ne aktiviram.
- Poskusil sem takole:
- ListBox-e sem postavil v iste vrstice, kot povezana besedila in jim dal začetno višino nekaj manjšo od višine vrstice.
Seveda se tako ne vidi podatkov.
- Zato sem s kodo v VBA spreminjam višino ListBox-ov takole:
- ob aktiviranju ("ListBox_GotFocus") postavim delovno višino
- ob deaktiviranju("ListBox9_LostFocus") postavim višino na minimum- na višino vrstice
- Tako je vedno odprt le en ListBox in se lahko prekrivajo.

Izgledalo je kar OK, potem so se pa začele težave:
- Včasih se ListBox-i odpirajo preko preko ostalih ListBox-ov, včasih pa pod njimi.
Kadar je odprt ListBox spodaj seveda ni uporaben. Poskusil sem z "ListBox.BringToFront", pa nima učinka.
- Ko zaprem in ponovno odprem zvezek so ListBox-i višji, kot sem jih definiral (Glava in ena vrstica)
- Spremembe se zgodijo ko zaprem in ponovno odprem zvezek.

Imel sem tudi idejo, da bi uporabil lastnost "ListBox.Visible" in "ListBox.activate". To bi bila boljša rešitev, vendar ne vem
kako bi aktiviral "neviden" ListBox. (Gumb, Akcija ob aktiviranju celice z besedilom, ? )

Prosim za nasvet.

Drago
dragopre
Prispevkov: 105
Pridružen: To Dec 11, 2012 11:46 pm

Re: ListBox, multiselect in odpiranje/zapiranje Box-a

Odgovor Napisal/-a dragopre »

Pozdrav
Našel sem rešitev.
- ListBox-u dam lastnost Visible = False,
- na list dam gumb
- na gumb vežem makro
- v makru dam ListBox.visible = True
- pri ListBox_LostFocus dam ListBox.Visible = False

Drago
Ps.
Res sem neroden. S samim programiranjem nimam posebnih težav (delphi),
težava je formalizem, naslavljanje, .. ker prvič delam z VBA.
Odgovori