[ mirko1949 @ 25.08.2010. 10:43 ] @
Probacu da objasnim sta bih hteo. U formi imam vise kontrola: TextBox-ova, ComboBox-ova, Commandbutton-a..... Preko sledeceg koda postizem da mi forma bude preko celog ekrana:


Private Sub UserForm_Initialize()
With Me
.Width = Application.Width
.Height = Application.Height
End With
End Sub

Ovo radim radi toga da se forma prilagodjava ekranima razlicite velicine. E sad mi je problem jer uvecanjem forme preko celog ekrana sve komande nisu rasporedjene srazmerno promeni velicine,
vec ostaju nekako zbijene u levom gornjem uglu. Da li je moguce da se promenom velicine forme srazmerno napravi novi raspored u smislu simetricnosti odnosno da i izgled nove uvecane forme
dobije estetski bolji izgled.
[ neptuncokg @ 26.08.2010. 19:14 ] @
Procedura koju koristis je "korisna" za sve nas koji hocemo formu preko celog ekrana, ali selektivno. I ja sam tragao za resenjem prilagodjavanja kontrola koje trazis, ali VBA je tu izgleda nemocan. U VB-6 postoji svojstvo za formu "WindowsState" koje resava ovaj problem, ali VBA ga nema. Na manjim formama sa malo kontrola, pomogne dodeljivanje svojstava kontrolama Left i Top, zavisno od velicine forme, ali meni je to prenaporno. Bojim se da nema univerzalnog resenja, osim prevodjenja u VB-6, onih programa koji to dozvoljavaju. Pozdrav
[ Jpeca @ 27.08.2010. 08:29 ] @
Ako ti odgovara da srazmenro uvećaš sve kontrole na formi možeš koristiti Zoom svojstvo korisničke forme .

Private Sub UserForm_Initialize()
Dim OriginalHeigh As Long
OriginalHeigh = Me.Height
Me.Width = Application.ActiveWindow.Width
Me.Height = Application.ActiveWindow.Height
Me.Zoom = Round((Me.Height / OriginalHeigh) * 100, 0)
End Sub

Ako hoćeš punu kontrolu nad time šta se uvećava i koliko na formi, onda kao što je neptuncokg već napomenuo situacija se svodi na dodavanje koda koji će izvršiti preračunavanje pozicije i dimenzija kontrola na formi, zavisno od veličine forme.

Ovo je zamorno ako imaš više formi i komplikovanije forme. Postoje neka rešenja da se ovaj posao olakša. Vidi npr. http://www.andypope.info/vba/Anchor.htm.

Za VB sam viđao neka rešanja koja to rade pristupajući kontrolama u nizu i preračunavajući ih pa možeš i to da iskoristiš tako da napraviš formu u VB i onda iz nje pristupaš Excelu.

[ mirko1949 @ 27.08.2010. 11:33 ] @
Ovo srazmerno uvecanje je odlicno. Hvala. Pogledacu jos malo tvoje ostale preporuke.
[ mirko1949 @ 27.08.2010. 17:07 ] @
Sa navedenim Pecinim kodom dobijao sam nesto manju visinu forme od ekrana pa sam dodao deo iz mog prethodnog koda tako da sada glasi:

Private Sub UserForm_Initialize()
Me.BackColor = RGB(10, 0, 1)
Me.MultiPage1.Value = 0
Dim OriginalHeigh As Long
OriginalHeigh = Me.Height
Me.Width = Application.ActiveWindow.Width
Me.Height = Application.ActiveWindow.Height
Me.Zoom = Round((Me.Height / OriginalHeigh) * 100, 0)
With Me
.Width = Application.Width
.Height = Application.Height
End With
End Sub
Jos jednom hvala na pomoci
Evo u prilogu kako to izgleda
[ neptuncokg @ 27.08.2010. 17:41 ] @
Ja bih samo jos malo da se ukljucim u ovu meni jako interesantnu temu. Ovo resenje je zaista dobro. Meni malo smetaju ove "dzambo" kontrole, ali to je stvar ukusa. Ja sam u svojoj praksi, posto sam se dosta mucio sa ovom temom, odavno problem "resio" tako sto sam na svom glavnom racunaru, na kome je rezolucija 1366 x 768 formama dodelio sojstva:
- Height = 550
- Widht = 1025
Tako uvek imam "ful formu". Na ostalim racunarima sam podesio istu rezoluciju, zbog kontinuiteta, a tamo gde je osnovna rezolucija veca od 1366 x 768, "zamolio" sam korisnike, sa jednim MsgBox-om u Workbook.Activate da pre pocetka rada privremeno podese rezoluciju na ovu. Doduse, to je samo na jednom racunaru. Bilo je negodovanja jedno dva-tri dana, i posle je sve doslo na svoje. Time sam, sto se mene tice, ovaj problem ostavio iza sebe. Negde sam naisao i na resenje, da se pri startovanju programa rezolucija automatski promeni na zeljenu, ali ga nisam koristio. Evo u primeru moje ful-forme, prilagodjene rezoluciji 1366x768. Pozdrav