Casete de introducere date - Input Box

Casetele mesaj indică VBA care buton a fost ales de utilizator. Dar uneori este nevoie ca utilizatorul să furnizeze text, de exemplu numele sau ziua de naștere.

Pentru a obține informații de tip text de la utilizator, se folosește o casetă de tip Input box. Casetele pentru introducere date sunt afișate de obicei ca în figura următoare:

CREAREA CASETELOR PERSONALIZATE PENTRU INTERACȚIUNI COMPLEXE

Pentru a obține de la utilizator mai multe tipuri de informații, poate fi folosită o succesiune de două sau mai casete de introducere date, dar mai simplu pentru utilizator este prin crearea unei casete de dialog particularizate.

Sintaxa pentru Input Box

Sintaxa pentru a afișa o casetă de tip input box este simplă și seamănă cu sintaxa folosită la casetele mesaj:

InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context])

Iată ce înseamnă argumentele:

Prompt Șir de caractere obligatoriu care specifică textul care apare în input box. Ca și la MsgBox, prompt poate avea maxim 1024 caractere și se poate folosi constanta carriage-return (vbCr) pentru a forța trecerea pe o altă linie. Ca și argumentul prompt din MsgBox, prompt din InputBox trece automat la linia următoare dacă textul depășește 35 de caractere.

Title Un șir de caractere care specifică textul din bara de titlu a casetei input box. Dacă argumentul title nu este specificat, VBA va furniza numele aplicației.

Default Un șir de caractere care poate fi folosit pentru a specifica textul care va apărea în caseta text. Introducerea unui argument default poate fi o idee bună pentru cazurile în care utilizatorul va alege chiar acel text (deci utilizatorul va apăsa tasta Enter pentru a accepta valoarea implicită) sau pentru a afișa un text model, pentru ca utilizatorul să înțeleagă ce tip de răspuns trebuie să dea.

Iată un exemplu de text implicit care să ajute utilizatorul: într-o casetă input box care cere numele utilizatorului, se poate introduce valoarea Name preluată din colecția BuiltInDocumentProperties a obiectului ActiveDocument, astfel:

Dim strAutor As String 
strAutor = _
ActiveDocument.BuiltInDocumentProperties(wdPropertyLastAuthor)

xpos și ypos Acestea sunt valori numerice opționale pentru a specifica poziția casetei pe ecran. Valoarea xpos se referă la poziția pe orizontală și măsoară distanța de la marginea stângă a casetei până la marginea din stânga a ecranului (nu a ferestrei Word), iar ypos măsoară poziția pe verticală de la marginea de sus a casetei până la marginea de sus a ecranului. Fiecare măsurătoare se face în twips – descrierea mai jos. Dacă se omit aceste două argumente, VBA va afișa caseta input box în poziția implicită – la jumătate de ecran pe orizontală și la o treime de ecran de sus în jos.

helpfile și context Argumente opționale pentru specificarea fișierului Help și a contextului din fișierul Help pentru ca utilizatorul să deschidă fișierul de ajutor din caseta Input box. Dacă în comandă se folosește helpfile, trebuie specificat și context.

Casetele Input Boxes sunt afișate cel mai bine în centrul ecranului

Un twip este egal cu 1/1440 inch. Un monitor obișnuit folosește 96 dots per inch (dpi). Asta înseamnă 15 twips per pixel, iar la un monitor cu rezoluția de 1024 x 768 sunt 15,360 x 11,520 twips. Pentru a poziționa cu precizie casetele input box and dialog box, se pot face experimente cu diferite rezoluții de ecran până se obțin rezultate satisfăcătoare. În general, se folosește poziționarea casetei Input box în centrul ecranului, pentru că utilizatorii pot avea diferite rezoluții de ecran.

La caseta Input box se pot omite argumentele opţionale. Dar pentru a folosi un argument de la sfârșitul sintaxei, trebuie puse virgule pentru argumentele omise (sau se folosesc numele argumentelor, cum s-a descris anterior).

Spre deosebire de casetele mesaj, casetele Input Box vin cu un set predefinit de butoane - OK și Cancel, plus un buton de Help dacă se specifică argumentele helpfile și context – deci nu trebuie specificate butoanele principale pentru o casetă de introducere date. Următorul exemplu declară variabila strWhichOffice de tip String și îi atribuie rezultatul casetei Input Box din figura următoare:

Obținerea datelor dintr-o casetă Input Box

Pentru a obține datele introduse de utilizator într-o casetă input box, mai întâi se declară variabila de tip numeric sau de tip String, după cum este cazul. Aici, variabila strOras va conține ce va tasta utilizatorul în caseta input box:

Dim strOras As String
strOras = InputBox( _
"Introduceti numele orasului :", _
"Oras vizitat", "Madrid", , , _
"c:\Windows\Help\Procedure Help.chm", 0)

După ce utilizatorul a introdus o valoare sau un șir de caractere și a făcut clic pe butonul OK, codul va folosi datele ca de obicei în VBA. Pentru a fi siguri că utilizatorul a făcut clic pe butonul OK, se verifică dacă input box nu a întors un șir de lungime zero (care este returnat și dacă utilizatorul a făcut clic pe OK fără a introduce date în câmpul text), apoi execută acțiunea corespunzătoare:

strOras = InputBox _
("Introduceti numele orasului :", _
"Oras vizitat", "Madrid", , , _
"c:\Windows\Help\Procedure Help.chm", 0)
If strWhichOffice = "" Then End 

Formulare: Când Message Box și Input Box nu sunt suficiente

Casetele mesaj (message box) permit utilizatorului să ia o decizie la un moment dat sau pot prezenta utilizatorului informații importante. Dar folosirea casetelor text este limitată:

  • Se pot afișa puține informații, iar modul de afișare al lor este limitat (doar paragrafe, întreruperi de linie, tab-uri și spații).
  • Se pot folosi doar șapte seturi de butoane, care limitează informația returnată de la utilizator în cod prin casetele mesaj.

Pentru mai multă creativitate, pentru a introduce mesaje complexe în casetele de mesaje și pentru a utiliza la maxim butoanele, de obicei se creează o casetă de dialog personalizată. Casetele de dialog personalizate sunt relativ simplu de creat și sunt mai puternice și mai flexibile decât casetele de mesaje.

Pentru a evita scrierea de macrocomenzi care prezintă utilizatorului o serie de opțiuni printr-o secvență de căsuțe de mesaje, se pot folosi casetele de intrare care sunt utile pentru preluarea unei singure informații de la utilizator, dar dincolo de aceasta, limitările lor devin rapid evidente.

În loc să se folosească două sau mai multe căsuțe de intrare succesive imediate, se poate creea o casetă de dialog personalizată. Astfel, utilizatorul poate completa toate informațiile necesare într-un singur formular, în loc să completeze mai multe casete.