Ar trebui să evitați să utilizați o casetă de dialog complexă atunci când una simplă face același lucru și este mai ușor pentru utilizatori să lucreze cu ea. Dacă o macrocomandă are nevoie doar de două casete de selectare și un grup de butoane de opțiuni, nu este necesar să folosiți mai multe pagini de control cu actualizare dinamică. Dar deseori, veți dori să creați căsuțe de dialog complexe pentru a oferi utilizatorilor flexibilitatea cerută de procedurile dvs.
Actualizarea unei casete de dialog pentru a reflecta alegerile utilizatorului
Este relativ ușor să schimbați un formular pentru a reflecta opțiunile pe care le alege utilizatorul. Instrumentul principal pentru a face acest lucru este evenimentul Click, la care reacționează majoritatea controalelor plasate pe un formular și la care se poate scrie cod în fereastra Code care este „în spatele” (asociată cu) formularul.
Când se face dublu clic pe un control dintr-un formular, se deschide fereastra Code pentru formularul respectiv și se afișează o procedură implicită Sub. Această procedură este asociată cu clic pe acel control.
Procedura este numită automat după numele controlului și evenimentul implicit al controlului. Dacă faceți dublu clic pe un buton de comandă, de exemplu, se deschide fereastra Cod cu evenimentul implicit Click al butonului:
Private Sub CommandButton1_Click()
End Sub
Orice cod pe care îl introduceți în această procedură va fi executat atunci când utilizatorul face clic pe acest buton de comandă.
Unele controale au alte evenimente implicite în loc de Click; evenimentul Change se folosește la căsuțe de dialog complexe și va fi descris ulterior.
Procedura din secțiunea următoare arată un exemplu de cod care actualizează o casetă de dialog în cazul în care utilizatorul face clic pe un buton din mai multe.
Afișarea unei părți ascunse dintr-un formular
Ascunderea unei părți dintr-un formular complex este o modalitate excelentă de a simplifica interacțiunea utilizatorului cu caseta de dialog. De exemplu, caseta de dialog Găsire și înlocuire (Find And Replace) din Word: când apare pentru prima dată (apăsând Ctrl + H sau cu clic pe pictograma Replace din secțiunea Edit, din fila Home a panglicii), este afișată doar partea din caseta de dialog pentru tipul cel mai obișnuit de căutare și înlocuire - doar ce se caută și cu ce se înlocuiește, împreună cu opțiunea de a înlocui pas cu pas sau tot.
Dar când sunt necesare opțiuni mai puțin obișnuite sau mai avansate pe care versiunea prescurtată a casetei de dialog Găsire și înlocuire nu le afișează implicit, se face clic pe butonul Mai multe (More) pentru a afișa partea de jos a casetei de dialog, ca în figura următoare.
Aici se află mai multe opțiuni care sunt utilizate mai rar.
Poate doriți să adoptați o abordare similară cu propriile căsuțe de dialog, ascunzând un subset de acțiuni de care, de cele mai multe ori, majoritatea utilizatorilor nu vor avea nevoie. Pentru a face acest lucru, puteți utiliza două tehnici, fie separat, fie în tandem:
Ca un exemplu simplu al acestei tehnici, se ia în considerare caseta de dialog prezentată în figura de mai jos. Când este afișată caseta de dialog, este vizibilă doar partea superioară; cu clic pe butonul Mai mult, este afișată partea de jos. Procedura care urmează după figură conține codul din spatele căsuței de dialog care face ca toate acestea să se întâmple.
Partea de sus a formularului Inventare oferă opțiunile strict necesare. Cu clic pe butonul Mai mult este afișat și restul casetei de dialog (afișată în partea de jos), care conține controale mai puțin folosite.
1. Private Sub UserForm_Initialize()
2. frmInventories.Height = 120
3. End Sub
4.
5. Private Sub cmdMore_Click()
6. If cmdMore.Caption = "Mai putin <<" Then
7. cmdMore.Caption = "Mai mult >>"
8. cmdMore.Accelerator = "M"
9. frmInventories.Height = 120
10. Else
11. frmInventories.Height = 240
12. cmdMore.Caption = "<< Mai putin"
13. cmdMore.Accelerator = "P"
14. fraOptions.Enabled = True
15. End If
16. End Sub
17.
18. Private Sub chkArtNames_Click()
19. If chkArtNames = True Then
20. optFromDocument.Enabled = True
21. optFromDocument = True
22. optAutoNames.Enabled = True
23. Else
24. optFromDocument.Enabled = False
25. optFromDocument = False
26. optAutoNames.Enabled = False
27. optAutoNames = False
28. End If
29. End Sub
30.
31. Private Sub cmdOK_Click()
32. frmInventories.Hide
33. Unload frmInventories
34. 'aici creare inventare
35. End Sub
36.
37. Private Sub cmdCancel_Click()
38. End
39. End Sub
Mai sus sunt cinci proceduri scurte care controlează comportamentul casetei de dialog:
UserForm_Initialize Inițializează caseta de dialog înainte de a fi afișată.
cmdMore_Click Rulează când este ap[sat butonul cmdMore. Acest buton gestionează caption Mai mult >> atunci când este afișată doar partea de sus a casetei de dialog și caption << Mai puțin când este afișată întreaga casetă de dialog.
chkArtNames_Click Rulează când este bifată caseta Nume fisiere.
cmdOK_Click Rulează la clic pe butonul OK.
cmdCancel Click Rulează cu clic pe butonul Cancel.
Iată ce se petrece în cod.
Proprietatea Caption funcționează, dar folosirea unei variabile de stare este considerată mai elegantă
Verificarea proprietății Caption a butonului cmdMore este o modalitate eficientă de a determina starea curentă a acestui formular (indiferent dacă este extins sau nu), dar aceasta nu este cea mai elegantă dintre tehnici. Este o formă de hard coding, considerată de mulți drept un mod greu de programare. În schimb, se poate păstra o variabilă de stare internă (o comutare Static) în sunt stocate informații despre caseta de dialog - dacă este afișată în starea completă sau în starea parțială. Utilizarea unei variabile interne de stare evită presupunerea că această legendă va rămâne întotdeauna aceeași. Codul nu ar funcționa corect, de exemplu, dacă formularul ar fi fost localizat la un moment dat (adaptat pentru o altă limbă locală, unde nu sunt folosite cuvintele Mai mult și Mai putin).
Urmărirea unei Proceduri într-un formular
Următorul nivel de complexitate în lucrul cu formularele este folosirea lor pentru a urmări diferitele etape ale unei proceduri și pentru a ghida utilizatorul cu privire la modul de lucru.
De exemplu, caseta de dialog Creare pagina web nouă pentru angajat ghidează utilizatorul printr-o procedură în patru etape pentru a crea o pagină web pentru un nou angajat.
Primul pas este identificarea angajatului care merită această onoare folosind fie lista derulantă, fie butonul Selectati alt angajat din cadrul pasului 1.
Al doilea pas este introducerea unui text introductiv, critic sau laudativ adecvat despre angajat.
Al treilea pas este de a selecta o fotografie a angajatului, care va fi inclusă în pagina web.
Al patrulea pas este salvarea paginii web într-un folder de pe intranetul companiei.
Când utilizatorul afișează prima dată caseta de dialog Creare pagina web nouă pentru angajat, va vedea versiunea casetei de dialog prezentată în figura de mai sus, cu pașii 2, 3 și 4 dezactivați și instrucțiunile pentru pasul 1 afișate în caseta Instrucțiuni din partea de sus.
Când utilizatorul urmărește instrucțiunile și selectează angajatul folosind fie lista derulantă casetă combo, fie butonul de comandă Selectati alt angajat, codul atașat la lista derulantă a casetei combo sau butonul de comandă activează cadrul pasului 2, activând caseta de text disponibilă utilizatorului.
Când utilizatorul trece la etapa a doua din caseta de dialog, apar modificări: indicațiile din cadrul etichetei Instructiuni au fost modificate și activarea casetei combo de la etapa 1 a activat cadrul din etapa 2.
Iată codul pentru evenimentul Change din caseta combo cmbSelectareAngajat; codul pentru evenimentul Click al butonului de comandă cmdSelectatiAltAngajat este similar, deși puțin mai complex.
Private Sub cmbSelectareAngajat_Change()
lblNumeAngajat = cmbSelectareAngajat.Text
fraPasul2.Enabled = True
lblInstructiuni = "Introduceti text in caseta text de la pasul 2. " & _
"De exemplu, puteti scrie cateva informatii biografice" & _
"despre angajat, detalii despre functia sa " & _
"sau contributia sa in cadrul firmei."
cmdClearEmployeeName.Enabled = True
End Sub
Butonul Selectati alt angajat din caseta de dialog se poate încheia cu trei puncte (...), ca și alte butoane de comandă.
Aceste trei puncte este convenția Windows care indică că această alegere (aici, butonul de comandă, dar și în alt context) va afișa o altă casetă de dialog în loc să execute imediat o acțiune.
Iată modificările care apar când utilizatorul completează etapa 1 din caseta de dialog:
Folosirea casetelor de dialog Multipagini și a controalelor TabStrip
VBA include un control MultiPage, care activează crearea mai multor casete de dialog pe mai multe pagini, și un control TabStrip, care permite crearea casetelor de dialog din TabStrips (similare tab-urilor de pe panglica aplicațiilor Office). Ați utilizat aproape sigur căsuțele de dialog cu mai multe pagini (dacă nu sunteți sigur care sunt acestea, apăsați Ctrl + D în Word pentru a deschide caseta de dialog Font și pentru a vedea un exemplu de astfel de casetă). Puteți accesa orice pagină (pe rând) făcând clic pe fila din partea de sus a paginii. Fiecare pagină conține un set diferit de controale și poate avea un aspect diferit adecvat scopului paginii.
Un Tab nu este o Pagină
Tab-ul este pătratul mic care se află în partea de sus a paginii, nu pe întreaga pagină. Multe persoane se referă la pagini ca „tab-uri”, deoarece tab-ul este partea pe care faceți clic pentru a accesa pagina. Este perfect în regulă să folosiți acești termeni în mod interschimbabil, dar aici tab înseamnă doar componenta și pagina pentru a face referire la acea pagină.
Casetele de dialog multipagini sunt folosite pentru a afișa o mulțime de informații într-un singur formular, fără ca acestea să umple întregul ecran. Informațiile pot fi împărțite în seturi discrete de informații conexe pentru a le încadra în pagini. Fiecare pagină poate (și ar trebui) să aibă un aspect diferit de controale care guvernează comportamentul elementelor discrete; paginile sunt în mod normal împărțite după temă sau scop.
La fel ca și caseta de dialog Font din aplicațiile Office, care are un tab Font și un tab Advanced sau ca și caseta de dialog Tools>Options din editorul VBA.
O casetă de dialog care folosește un TabStrip diferă de o casetă de dialog cu mai multe pagini, deoarece conține un control TabStrip care conține mai multe tab-uri, dar nu mai multe pagini. DIn punctul de vedere al utilizatorului, pare că sunt afișate diferite pagini, dar aspectul efectiv al controalelor din caseta de dialog nu se schimbă. Indiferent de fila de pe TabStrip care este selectată, setul de controale rămâne același, deși datele afișate în comenzi se schimbă. Această abordare este utilă pentru afișarea înregistrărilor dintr-o bază de date. Tab-urile comută doar la o altă înregistrare.
TabStrips sunt utile atunci când trebuie să afișați seturi de informații consistente, cum ar fi înregistrările cu clienții companiei. Fiecare înregistrare are același set de câmpuri (analog cu coloanele dintr-o bază de date): un număr de cont, un nume (poate mai multe), o adresă, numere de telefon, adrese de e-mail, adrese URL, istoricul comenzilor, soldul contului și altele.
Prin urmare, puteți utiliza același set de comenzi (de exemplu, casete de text și etichete) pentru a afișa informațiile pentru fiecare înregistrare. Controlul TabStrip reglementează setul de informații al clientului care este afișat în ele. Deoarece puține baze de date au un număr mic și fix de înregistrări, va trebui să populați TabStrip din mers (în timpul execuției) cu file și titluri.
În secțiunea Crearea unei casete de dialog personalizate sunt explicate proprietățile unice ale controalelor TabStrip și MultiPage.
Limitarea numărului de pagini din casetele de dialog Multipage
Puteți crea căsuțe de dialog care conțin zeci de tab-uri (file) sau zeci de pagini. Și dacă rămâneți fără spațiu orizontal pentru a afișa filele, Editorul VBA adaugă o bară de defilare pentru a permite utilizatorului să parcurgă filele. Cu toate acestea, casetele de dialog cu foarte multe tab-uri nu sunt folosite în practică. Și, fără îndoială, nu tot ceea ce este posibil este și de dorit.
Se recomandă ca numărul de pagini din căsuțele de dialog să fie maxim 10 sau 12 pagini, deoarece e posibil ca prea multe informații să copleșească utilizatorul.
Dacă aveți nevoie de mai multe pagini pentru a organiza informațiile într-o casetă de dialog, luați în considerare o modalitate alternativă de afișare. (Cel mai probabil, ar trebui să subdivizați informațiile în categorii mai mici, mai ușor de gestionat.) De exemplu, Microsoft petrece nenumărate ore timp de mai mulți ani testând grupuri de utilizatori și observând comportamentul oamenilor atunci când folosesc Word. Un rezultat este că proiectanții Microsoft subdivizează sarcinile și interacțiunea utilizatorilor în diverse subcategorii.
Faceți clic pe fila Layout (Aspect) din panglica Word. Se pot observa că numeroasele comenzi din această categorie sunt subdivizate în zone logice: Configurare pagină, Paragraf și Aranjament. Ba mai mult, două dintre aceste subcategorii - Configurare pagină și Paragraf - afișează pictograme mici (o casetă cu o săgeată neagră) în colțul din dreapta jos. Făcând clic pe aceste pictograme se deschide o casetă de dialog separată cu opțiuni suplimentare, utilizate mai rar.
Tab-urile sunt diferite. Dacă utilizați un TabStrip pentru a vă deplasa prin înregistrările dintr-un set de înregistrări al bazei de date, e posibil să fie nevoie de mai multe tab-uri (file) într-un tabStrip. Dacă numărul de file nu este absurd de mare, acest lucru nu ar trebui să fie o problemă. Cu toate acestea, o soluție mai bună de gestionare a unei baze de date ar putea fi trecerea la unul dintre cele mai robuste, controale de interfață de utilizator legate de baza de date specializate disponibile în Access, Visual Basic Express sau Visual Basic .NET. Pentru mai multe informații despre diverse produse Visual Studio 2015, consultați www.visualstudio.com/en-us
Pentru crearea unei casete de dialog multipagini, clic pe pictograma MultiPage din Toolbox, apoi click în formular unde ar trebui să apară acel control. VBA Editor plasează un control MultiPage cu două pagini și etichete numite Page 1 și Page 2. Controlul poate fi mutat și redimensionat. De obicei controlul MultiPage este mai mic decât formularul care îl conține (ca în majoritatea casetelor de dialog din aplicațiile Windows).
După crearea unui controlul MultiPage, se poate lucra pe o pagină cu clic dreapta pe tab și folosirea meniului contextual:
Sub UserForm_Initialize()
MyMulti.Value = 2
End Sub
După crearea unei casete de dialog multipagini, aici se pot adăuga diferite controale. Fiecare control trebuie să aibă un nume unic în acel formular (nu doar în caseta în care apare).
La proiectarea unei casete de dialog multipagini, se ține cont de următoarele:
Majoritatea proprietăților controlului MultiPage sunt simple, dar câteva merită menționate în mod special:
Controlul MultiPage nu trebuie să preia întreaga casetă de dialog - de fapt, majoritatea casetelor de dialog păstrează butoanele cheie de comandă, cum ar fi OK și Anulare în afara zonei multipage, astfel încât acestea să fie disponibile utilizatorului indiferent de pagina accesată de utilizator.
Acestea fiind spuse, este de obicei o idee bună să faceți un control MultiPage pe partea dominantă a unei casete de dialog. Într-o casetă de dialog complexă și aglomerată, un control MultiPage mic poate părea a fi mai mult o casetă de grup, iar utilizatorul poate omite filele, mai ales dacă acesta parcurge în grabă controalele, în căutarea unei anumite opțiuni.
Folosirea controlului TabStrip
Formularele care folosesc un TabStrip sunt substanțial diferite de căsuțele de dialog cu mai multe pagini. Un control TabStrip poate fi utilizat nu pentru a rearanja alte controale, ci doar pentru a schimba datele care apar pe măsură ce utilizatorul trece de la un set de date la altul. Cu alte cuvinte, aspectul comenzilor rămâne static. Doar valorile afișate în comenzi se schimbă de la o pagină la alta.
De exemplu, puteți utiliza o casetă de dialog cu un TabStrip pentru a vizualiza și actualiza înregistrările dintr-o sursă de date, cum ar fi un tabel Word, o foaie de calcul Excel sau o bază de date Access. Exemplul următor folosește un registru de lucru Excel în care informațiile sunt stocate pe o serie de foi de lucru.
Banda efectivă cu file dintr-un control TabStrip poate apărea mai sus, mai jos sau pe lângă controalele pe care le conține. Poziția convențională - și implicită - este în partea de sus, la fel ca la casetele de rețete și sertarele pentru fișiere reale. Dar pot exista și file verticale și în partea de jos în aplicațiile Windows excentrice. Ca și în cazul controlului MultiPage, utilizați proprietatea TabOrientation a controlului TabStrip pentru a specifica dacă TabStrip ar trebui să apară în partea de sus, jos, stânga sau dreapta a controlului său. Dar asigurați-vă că aveți un motiv destul de bun dacă vă abateți de la convenție. Poziția în partea de sus este de așteptat și are sens.
TabStrip poate conține zero, una sau mai multe file. În cele mai multe cazuri, nu prea are rost să ai o singură filă pe un TabStrip și cu atât mai puțin să nu ai deloc o filă. Dar dacă populați dinamic TabStrip cu filele din procedurile dvs. (așa cum urmează să faceți în exemplul următor) și creați o filă pentru fiecare înregistrare găsită, este posibil să vă confruntați cu o singură înregistrare și, astfel, cu o casetă de dialog. cu o singură filă - sau chiar un TabStrip fără file.
Faceți clic pe butonul TabStrip din caseta de instrumente, faceți clic în formular pentru a plasa TabStrip, apoi trageți-l la o dimensiune corespunzătoare. Rețineți că un TabStrip este doar un afișaj vizual în beneficiul utilizatorului. Spre deosebire de controlul MultiPage, stabiliți cu ajutorul codului conexiunea logică între TabStrip și celelalte controale. Puteți adăuga, redenumi, muta și șterge filele în același mod în care se lucrează cu paginile dintr-un control MultiPage.
După construirea formularului, scrieți codul care va permite TabStrip să afișeze conținutul celorlalte controale. Mai jos este prezentat codul pentru TabStrip din caseta de dialog Angajati.
Acest TabStrip se numește tabSurfer, iar codul funcționează cu evenimentul său Change - procedura evenimentului care se declanșează (este declanșat și execută codul său) atunci când utilizatorul face clic pe o nouă filă pe bandă.
1. Private Sub tabSurfer_Change()
2. If blnInitializing = False Then
3. With ActiveWorkbook.Sheets(tabSurfer.Value + 1)
4. 'incarca continutul foii de lucru care corespunde tab-ului ales
5. .Activate
6. txtFirstName.Text = .Cells(1, 2).Text
7. txtInitial.Text = .Cells(2, 2).Text
8. txtLastName.Text = .Cells(3, 2).Text
9. txtAddress1.Text = .Cells(4, 2).Text
10. txtAddress2.Text = .Cells(5, 2).Text
11. txtCity.Text = .Cells(6, 2).Text
12. txtState.Text = .Cells(7, 2)
13. txtZip.Text = .Cells(8, 2).Text
14. txtHomeArea.Text = .Cells(9, 2).Text
15. txtHomePhone.Text = .Cells(10, 2).Text
16. txtWorkArea.Text = .Cells(11, 2).Text
17. txtWorkPhone.Text = .Cells(12, 2).Text
18. txtWorkExtension.Text = .Cells(13, 2).Text
19. txtEmail.Text = .Cells(14, 2).Text
20. End With
21. End If
22. End Sub
Iată cum funcționează codul:
Folosirea imaginilor în Formulare
VBA include funcții grafice extinse care permit ca formularele să arate bine. Folosind Format>Order, controalele se pot aranja unul peste altul. Controale precum butonul de comandă au proprietăți pentru imagine, la fel ca și formularele. În figura următoare este afișat un control cu o imagine care afișează o fotografie, o textură de fundal (încărcată în proprietatea Picture a formularului) și un buton de comandă care se confundă cu fundalul (deoarece proprietatea BackStyle este setată la Transparent).
Pentru a utiliza un control Image, faceți clic pe butonul Image din caseta de instrumente, apoi faceți clic în formular unde doriți să apară controlul Image.
După ce ați plasat controlul Image, puteți să măriți și să mutați poza la fel cum ați face cu orice alt control.
Asigurați-vă că imaginea pe care o alegeți pentru un control de imagine sau pentru fundalul unui formular este disponibilă pentru toate computerele care vor afișa caseta de dialog. Dacă imaginea nu este disponibilă, ea nu apare în caseta de dialog, ceea ce afectează efectul.
Pentru a alege imaginea care va apărea în controlul Image, selectați proprietatea Picture în fereastra Proprietăți și faceți clic pe butonul cu trei puncte care apare apoi în dreapta intrării. Editorul VBA afișează caseta de dialog Load Picture. Selectați fișierul imagine și alegeți butonul Open. Proprietatea Picture din fereastra Proprietăți înregistrează tipul de imagine selectat - cum ar fi Bitmap - dar nu și numele fișierului, iar imaginea apare în controlul Image, astfel încât să puteți vedea dacă are o dimensiune adecvată.
Când specificați imaginea pentru un control Image în mod programatic (imaginea este încărcată în timp ce se execută macrocomanda, în timpul rulării), trebuie să utilizați o instrucțiune LoadPicture. Comparați acest lucru cu modul în care, la programare (timpul de proiectare), puteți utiliza pur și simplu fereastra Proprietăți pentru a atribui o imagine proprietății Picture a controlului Image. LoadPicture are următoarea sintaxă:
LoadPicture filename, [WidthDesired], [HeightDesired]
filename este un argument de tip String care specifică numele fișierului de imagine care trebuie încărcat în controlul Image.
WidthDesired este un argument de tip Long opțional care specifică lățimea imaginii în twips și
HeightDesired este un argument de tip Long opțional care specifică înălțimea imaginii.
De exemplu, următoarea comandă încarcă imaginea numită Rose.jpg care se află pe partiția c:\
Image1.Picture = LoadPicture("C:\rose.jpg")
După ce ați ales poza, aveți diverse opțiuni pentru poziționarea și formatarea acesteia:
Constante și valori pentru proprietatea PictureAlignment
Constante și valori pentru proprietatea PicturePosition
După ce ați plasat, dimensionat și formatat o imagine, există diverse posibilități aceea ce puteți face cu ea, cum ar fi utilizarea evenimentului Click al imaginii pentru a declanșa o acțiune. De exemplu, puteți afișa două grafice care ilustrează alegerea a două formate pentru un document. Apoi, utilizatorul ar putea face clic pe fotografia corespunzătoare pentru a semnala alegerea.
Crearea unei casete de dialog Modeless
Folosim versiunea VBA 7.1, dar începând cu versiunea 6, VBA oferă programatorului o opțiune de a crea o casetă de dialog nemodale - modeless, pe care utilizatorii o pot lăsa pe ecran în timp ce continuă să lucreze în aplicația lor. Cu alte cuvinte, la o casetă de dialog modală, utilizatorul trebuie să facă clic pe butonul OK sau Anulare sau să închidă caseta de dialog înainte de a putea să interacționeze cu aplicația sa.
Fără îndoială, sunteți familiarizați cu casetele de dialog modeless în lucrul cu aplicațiile Office. De exemplu, caseta de dialog (Find And Replace) din Access, Word și Excel este modeless, la fel și caseta de dialog Replace din PowerPoint.
Atunci când afișați una dintre aceste căsuțe de dialog modeless, aceasta preia focalizarea la fel ca orice casetă de dialog modală (orice tastați pe tastatură apare în fereastra cu focalizarea curentă).
Dar puteți face clic pe fereastra aplicației pentru a transfera focalizarea înapoi la acea fereastră. De exemplu, puteți continua să tastați într-un document Word, chiar dacă caseta de dialog Find And Replace rămâne vizibilă.
Crearea unei casete de dialog modeless se face prin setarea proprietății ShowModal a formularului la False în loc de setarea implicită True.
Există diferite situații în care s-ar putea să doriți să utilizați o casetă de dialog modeless, în loc de una modală. De exemplu, puteți crea o procedură și o casetă de dialog în Word care colectează informații de la utilizator pentru o notă sau un raport. Făcând caseta de dialog modeless, puteți permite utilizatorului să copieze informațiile dintr-un document deschis (sau să deschidă alte documente și să adune informații din acestea) și să le adauge în caseta de dialog, astfel utilizatorii nemaifiind nevoiți să copieze informațiile înainte de a deschide caseta de dialog și permițându-le să copieze cu ușurință mai multe elemente separate. De asemenea, puteți crea un formular modeless (poate avea forma unei bare de instrumente) pe care utilizatorii ar putea să-l țină pe ecran și să-l folosească pentru a introduce automat textul în secțiuni predefinite a trei sau patru alte documente, fără a-și pierde locul în documentul curent.
Puteți utiliza, de asemenea, căsuțe de dialog modeless pentru a afișa seturi complexe de formulare interrelaționate în care utilizatorul trebuie să copieze și să insereze informații dintr-un formular în altul sau cel puțin pentru a accesa diferite zone a două sau mai multe formulare afișate în același timp. Afișarea mai multor formulare simultan poate fi confuză pentru utilizator, dar uneori puteți considera că este necesar.
De cele mai multe ori, probabil că veți dori să utilizați casetele de dialog modale în procedurile VBA. Cu casetele de dialog modale, utilizatorii trebuie să se ocupe de caseta de dialog înainte de a putea continua să lucreze în aplicație și nu există riscul ca acestea să ajungă la mai multe căsuțe de dialog împrăștiate pe ecran și nefolosite.
Puteți folosi casete de dialog Seriale Modale
Nu puteți afișa în același timp atât formulare modale, cât și nemodale (modeless), dar puteți afișa o casetă de dialog modală într-o altă casetă de dialog modală. Când utilizatorii închid cea de-a doua casetă de dialog modală, VBA revine în mod implicit la prima casetă de dialog modală. Dar puteți scrie cod pentru a face ca după închiderea celei de a doua casete de dialog modale să se închidă automat și prima casetă de dialog.
Specificarea locației unui formular pe ecran
În mod implicit, VBA centrează pe cât posibil casetele de dialog pe mijlocul ferestrei aplicației, acesta fiind comportamentul normal pentru aplicațiile Windows. Dacă doriți să poziționați un formular în altă parte pe ecran (de exemplu, pentru a evita să ascundeți date importante de pe ecran), setați proprietatea StartUpPosition pentru formular. Tabelul următor explică setările pe care le puteți utiliza.
Setări pentru proprietatea StartUpPosition