La proiectarea unui formular este mai simplă manipularea de grupuri de controale. Prin gruparea a două sau mai multe controale, se poate lucra cu ele unitar la mărime, poziționare, formatare sau ștergere. (De reținut că această tehnică de grupare nu are nimic în comun cu crearea de butoane radio într-un control Frame, caz în care se creează o colecție exclusivă de butoane radio.)
Gruparea controalelor
Pentru a grupa controale, acestea se selectează cu Shift+clic, Ctrl+clic sau încadrarea lor într-un dreptunghi, apoi clic dreapta și alegerea opțiunii Group din meniul contextual. Alternativ, se selectează controalele, apoi clic pe butonul Group de pe bara cu instrumente UserForm (această bară nu este afișată implicit) sau se alege Format > Group.
VBA creează un grup nou care conține controalele și plasează o bordură cu mânere în jurul controalelor, ca în figura următoare.
La selectarea unui set de controale (cu Shift+clic, Ctrl+clic sau încadrarea lor cu mausul, într-un dreptunghi), controalele sunt grupate temporar. Ele pot fi manipulate ca grup, dar după ce sunt deselectate, de exemplu cu clic pe fundalul formularului, gruparea dispare. Însă când se grupează folosind opțiunea Group, controalele rămân grupate până se degrupează cu Ungroup.
Degruparea controalelor
Pentru a degrupa controalele, clic dreapta pe oricare control din grup și se alege opțiunea Ungroup din meniul contextual. Alternativ, se selectează grupul de controale cu clic pe oricare alt control din grup, apoi clic pe butonul Ungroup de pe bara cu instrumente UserForm, sau din meniu Format > Ungroup. VBA elimină bordura cu mânere din jurul grupului și afișează borduri și mânere în jurul fiecărui control.
Redimensionarea controalelor grupate
Controalele dintr-un grup pot fi redimensionate rapid prin selectarea grupului și tragerea de mânerele din jurul grupului.
De exemplu, se poate selecta mânerul din mijloc, partea din dreapta și trage spre interior pentru a scurta controalele, ca în figura următoare.
Controalele vor fi redimensionate proporțional cu modificarea întregului grup.
Când controalele sunt grupate, se poate folosi fereastra Properties pentru a modifica rapid proprietățile care sunt comune tuturor elementelor (cum ar fi Font). Dar redimensionarea unui grup poate prezenta probleme – rezultatele pot fi nedorite. În general, redimensionarea funcționează când a fost grupat un număr de controale de același tip, ca în figura de mai sus. De exemplu, redimensionarea unui grup format din câteva butoane de comandă sau butoane radio funcționează, dar nu este o idee bună redimensionarea unui grup care conține casete text, butoane de comandă și casete combo box.
Ștergerea controalelor grupate
Un grup poate fi șters cu clic dreapta și alegerea opțiunii Delete din meniul contextual sau apăsarea tastei Delete.
Lucrul cu un Control din Grup
Chiar dacă au fost grupate mai multe controale, se poate lucra individual cu fiecare din ele, dacă este nevoie. Se selectează întregul grup. Apoi clic pe controlul care trebuie modificat. VBA afișează o bordură în jurul grupului (care indică faptul că grupul există) și o altă bordură în jurul unui anumit control, care indică că acel control este selectat.
Astfel se poate modifica controlul selectat individual ca și cum nu ar fi fost grupat. De exemplu, i se poate modifica proprietatea ForeColor, și doar la acel buton se va face modificarea. După ce se termină modificările, clic pe un alt control din grup pentru a-l selecta sau clic pe fundalul formularului pentru a deselecta controalele și a reface grupul.
Alinierea controalelor
Chiar dacă se folosește caracteristica Snap To Grid, uneori este nevoie ca să se alinieze manual controalele. Pentru aliniere, controalele trebuie să fie degrupate. Metoda cea mai simplă de aliniere a controalelor este prin selectarea a două sau mai multe controale, apoi clic dreapta pe unul dintre ele și alegerea unei opțiuni din submeniul Align: Lefts, Centers, Rights, Tops, Middles, Bottoms sau To Grid. Aceste opțiuni funcționează astfel:
VBA aliniază bordurile sau mijloacele la poziția curentă a controlului principal – cel care are mânere albe în jurul lui. După selectarea controalelor care vor fi aliniate, se selectează și controlul principal, astfel încât acesta să aibă mânere albe. Apoi se alege opțiunea dorită.
Se verifică dacă au fost alese opțiunile potrivite
Se verifică dacă opțiunea de aliniere aleasă are sens pentru controalele selectate. VBA va alinia controalele într-un mod neadecvat, dacă așa i se spune să facă. De exemplu, dacă se selectează o serie de butoane de opțiune sau căsuțe de text și se alege aliniere sus (Top) din submeniul Aliniere, VBA va aranja toate controalele una peste alta, ceea ce le va face inutilizabile. (Pentru a reveni la poziția dinainte, apăsați Ctrl + Z.)
VBA Editor oferă câteva comenzi de plasare în meniul Format:
Ordinea tab order dintr-un formular (sau dintr-un control cadru (Frame) aflat în formular) este ordinea în care VBA selectează controale atunci când utilizatorul mută focusarea apăsând tasta Tab (pentru a sări la următorul control) sau tastele Shift+Tab (pentru a muta la controlul anterior).
La apăsarea taste Tab, Windows mută focusarea la următorul control din acea fereastră.
La un moment dat, doar un control poate avea focusare. De exemplu, dacă un formular are cinci casete text, doar una are focus (poate fi completată) și va afișa caracterele tastate de utilizator. La fel, doar un buton dintr-un set de butoane poate avea focusare/ poate fi activ, iar când utilizatorul apasă tasta Enter, butonul activ va fi declanșat. Sau utilizatorul poate da clic pe un alt buton pentru a activa acel buton.
VBA afișează o indicație vizuală care arată controlul care este activ. În jurul butonului de comandă sau a butonului radio activ se poate vedea un cadru punctat, iar în caseta text activă se poate vedea cursorul care clipește.
Fiecare cadru adăugat la formular are o anumită ordine a controalelor pe care le conține: Cadrul însuși apare în ordinea formularului, iar controalele din cadru apar în ordine pentru acel cadru.
Ordinea pentru controalele din formular se alege astfel încât să ușureze munca utilizatorului. De obicei, aranjarea se face de la stânga la dreapta și de sus în jos.
Folosind tasta Tab, utilizatorul nu va mai trebui să treacă de la tastatură la maus pentru a alege următorul control din formular.
Acest mod de aranjare este util la completarea mai multor câmpuri prin tastarea în casete text (de exemplu casete pentru nume, adresă, telefon etc.). La apăsarea tastei Tab este activat următorul control. (Mai ușor, la apăsarea tastei Enter în caseta de text va muta la următorul control din ordinea stabilită anterior.) La final, după completarea ultimei casete text, se poate închide rapid caseta de dialog dacă butonul OK urmează imediat după ultima casetă completată.
VBA atribuie ordinea de accesare a controalelor în ordinea introducerii lor. Dar ordinea poate fi modificată ulterior. Se recomandă verificarea ordinii controalelor înainte de a pune formularul la dispoziția utilizatorilor.
Se apasă tasta F5, apoi se apasă repetat tasta Tab pentru a examina ordinea accesării controalelor. Alternativ, se poate deschide caseta de dialog Tab Order (a se vedea figura de mai jos) cu clic dreapta pe fundalul formularului sau a cadrului și alegerea opțiunii Tab Order din meniul contextual. Sau se poate selecta formularul sau cadrul și alege View > Tab Order.
De obicei, ordinea de accesare (tab order) se stabilește după crearea formularului (adăugarea ulterioară a unui control poate duce la modificarea ordinii). Iată cum se poate modifica ordinea din formular sau cadru: