Formulare de utilizator VBA
Userform este o parte foarte importantă a programării în VBA. Vă permite să creați o interfață de utilizator cu aspect profesional pentru a comunica cu utilizatorii aplicației dvs. VBA. De asemenea, vă permite să controlați complet utilizatorul în ceea ce face cu registrul dvs. de lucru.
Puteți, desigur, utiliza celule din foaia de lucru pentru a accepta parametrii de la utilizator, dar formularul de utilizator produce o experiență de utilizator mult mai bună.
Prin extinderea înălțimii și lățimii formularului dvs. de utilizator la dimensiunea ferestrei Excel, puteți face ca aplicația dvs. să arate ca o aplicație Windows normală, utilizatorul nefiind total conștient că folosește Excel ca gazdă.
Vă sunt disponibile toate controalele normale Windows, cum ar fi meniurile derulante, casetele de listă și casetele de bifare. Aveți, de asemenea, o gamă largă de metode, evenimente și proprietăți de utilizat pentru a îmbunătăți experiența utilizatorului.
Un punct important este că atunci când afișați un formular de utilizator care este încorporat sau este modal, nu puteți edita codul în VBE și nici nu puteți accesa nicio funcționalitate Excel. Numai când formularul este închis, cursorul va apărea în codul dvs.
Forme de utilizator VBA încorporate
Excel VBA ca mai multe formulare încorporate care pot fi utilizate pentru a comunica cu utilizatorul.
Casetă de mesaje
Aceasta este forma cea mai frecvent utilizată în VBA. Afișează pur și simplu un mesaj text, eventual informând un utilizator că a introdus o intrare nevalidă sau că un proces VBA a terminat de rulat. În forma lor cea mai simplă, afișează un șir de text, dar puteți adăuga, de asemenea, o pictogramă, cum ar fi o întrebare sau un semn de exclamare, și puteți da căsuței de mesaje un titlu diferit.
Acesta este un exemplu de bază. Există un singur buton de făcut clic, iar bara de titlu spune „Microsoft Excel”
Codul pentru a produce acest lucru este foarte simplu:
123 | Sub TestMsgBox ()MsgBox „Acest proces s-a finalizat”Sfârșitul Sub |
Puteți utiliza diferiți parametri pentru a adăuga butoane, pictograme și pentru a modifica bara de titlu
123456789 | Sub TestMsgBox ()Dim Ret As VariantRet = MsgBox („Ești sigur?”, VbDa Nu Sau vbQuestion, „Cererea mea”)Dacă Ret = vbDa atunci„Procesul tău aiciAltfelIeșiți din SubEnd IfSfârșitul Sub |
Acest cod adaugă un buton „Da” și „Nu” și o pictogramă semn de întrebare și setează bara de titlu. Rețineți că puteți combina stilurile casetei de mesaje utilizând operatorul „Sau”
De asemenea, atunci când returnați o valoare dintr-o casetă de mesaj, variabila returnată trebuie definită ca o variantă sau vbMsgBoxResult, iar declarația casetei de mesaj trebuie să utilizeze paranteze,
Casetă de intrare
Există o casetă de intrare foarte simplă încorporată în VBA, deși este destul de restrictivă în ceea ce puteți face cu ea. Dacă puteți, este mai bine să creați un formular de utilizator personalizat
12345 | Sub TestInputBox ()Reduceți ca șirRet = InputBox („Vă rugăm să introduceți numele dvs.”, „Introduceți numele”)MsgBox RetSfârșitul Sub |
De asemenea, puteți adăuga o valoare implicită pentru intrare în parametri.
Obțineți numele de fișier deschis
Acest lucru vă permite să utilizați dialogul fișierului Windows în codul dvs. VBA. Utilizatorul pare foarte impresionant atunci când rulează, dar este foarte simplu de încorporat și obțineți automat toate funcționalitățile de dialog ale fișierelor cu acesta.
Codul restricționează utilizatorul să vadă numai fișiere Excel. Din păcate, ar putea să introducă un nume de fișier non-Excel în caseta Nume fișier și să facă clic pe butonul Deschidere, astfel încât veți avea nevoie de un anumit cod pentru a vă asigura că a fost selectat un fișier Excel.
Utilizați comanda „ChDir” pentru a schimba directorul implicit la propriile cerințe înainte de a afișa dialogul de fișiere
Rețineți utilizarea comodinelor în parametrul FileFilter. Fișierele Excel de afișat pot fi anterioare anului 2007, au macrocomenzi sau pot fi binare, astfel încât filtrul este „.xls *”.
123456 | Sub TestFileDialog ()Dim MyFile Ca ȘirChDir "C: \ temp"MyFile = Application.GetOpenFilename („Fișiere Excel (* .xls *), *. Xls *”, „Selectați un fișier”)MsgBox MyFileSfârșitul Sub |
Dacă este necesar, puteți permite utilizatorului să selecteze mai multe fișiere simultan folosind parametrul MultiSelect. Valoarea implicită este False (numai pentru o singură selectare)
12345678 | Sub TestFileDialog ()Dim MyFile ca variantăChDir "C: \ temp"MyFile = Application.GetOpenFilename ("Fișiere Excel (* .xls *), *. Xls *",, "Selectați un fișier",, Adevărat)Pentru fiecare f din fișierul meuMsgBox fUrmătorul fSfârșitul Sub |
Utilizatorul ține apăsată tasta Shift în dialogul de fișiere pentru a selecta mai multe fișiere.
Bucla Pentru fiecare afișează calea completă și numele fiecărui fișier selectat
Dialoguri implicite Excel
În Excel VBA, există o colecție de dialoguri pe care o puteți utiliza pentru a afișa orice dialog Excel standard. Dezavantajul este că nu puteți accesa parametrii pe care utilizatorul i-a ales sau schimba aspectul dialogului, dar aceste dialoguri pot fi utile în direcționarea utilizatorului către o funcție Excel standard și permițându-i să aleagă parametri specifici în cadrul dialogului.
Un bun exemplu în acest sens este afișarea dialogului „Tipărește” din VBA:
123 | Sub TestPrintDialog ()Application.Dialogs (xlDialogPrint) .ShowSfârșitul Sub |
Când deschideți parantezele din colecția Dialogs, veți vedea o listă cu un număr mare de constante pentru dialogurile încorporate. Merită să experimentați unele dintre aceste opțiuni din codul dvs.
Inserarea unui nou formular de utilizator
Puteți crea propriile formulare de utilizator personalizate prin inserarea unui formular de utilizator în Visual Basic Editor (VBE)
Faceți acest lucru selectând Inserați | UserForm din bara de meniu VBE.
Faceți clic pe „UserForm” și un nou formular gol va apărea gata pentru a vă dezvolta
Forma propriu-zisă (afișată ca „UserForm1”) arată destul de mică, dar puteți folosi mânerele din jurul său pentru a le mări sau a o face și mai mică, trăgând mânerele cu cursorul.
Există o fereastră de proprietăți în colțul din stânga jos al ecranului. Deoarece accentul se pune direct pe formularul în sine, acesta conține toate proprietățile pentru formularul specific formularului respectiv.
Rețineți că atunci când începeți să adăugați controale, cum ar fi casetele combinate și butoanele de comandă, toate aceste controale au propriul set de proprietăți și pot fi foarte diferite în ceea ce puteți face cu fiecare dintre ele.
Proprietățile pe care le vedeți în prezent se aplică numai formularului în sine.
Proprietatea „Nume” este numele utilizat pentru a defini obiectul formularului în cadrul codului VBA. Poate doriți să utilizați ceva mai semnificativ pentru numele obiectului, astfel încât, atunci când vă revizuiți codul, să fie evident ce formă este utilizată.
Proprietatea „Nume” se va reflecta și în fereastra „Project Explorer” din colțul din stânga sus al ecranului
Veți dori să modificați bara de titlu a formularului dvs. cu ceva diferit de „UserForm1” și puteți face acest lucru tastând noul dvs. text la proprietatea „Subtitrare”
Puteți face un număr mare de modificări la modul în care formularul dvs. este văzut de utilizator. Puteți modifica culorile, adăuga imagini de ex. un logo corporativ, schimbați poziția folosind „Stânga” și „Sus”, modificați dimensiunea folosind „Înălțime” și „Lățime”, schimbați indicatorul mouse-ului și multe altele
Toate aceste proprietăți pot fi, de asemenea, modificate programatic pentru orice control pe care l-ați adăugat la formular. De exemplu, un utilizator poate selecta dintr-o listă de control și poate doriți să dezactivați sau să ascundeți alte controale în funcție de alegerea utilizatorului
Folosind Caseta de instrumente
Veți observa că atunci când faceți clic pe formularul în sine, va apărea o fereastră pop-up. Dacă faceți clic în altă parte, de ex. din panoul de proprietăți, acesta va dispărea, dar va reapărea atunci când faceți clic pe formular.
Cutia de instrumente oferă mecanica reală a proiectării formularului. Acest lucru vă permite să adăugați la formularul dvs. comenzile normale Windows pe care utilizatorii le cunosc.
Veți observa că pe formular există o rețea de puncte. Acesta este un „snapgrid”, astfel încât atunci când adăugați un control la formular, acesta va alinia automat poziția la rândurile și coloanele punctelor. Acest lucru ajută enorm la alinierea comenzilor, astfel încât să nu aveți un aspect zdrențuit al comenzilor
Dacă faceți clic pe un control și apoi decideți să nu îl utilizați, făcând clic pe pictograma „Săgeată” din colțul din stânga sus al casetei de instrumente, cursorul va reveni la normal.
Puteți adăuga controale suplimentare în caseta de instrumente utilizând Instrumente | Comenzi suplimentare din meniul VBE. Există un număr considerabil dintre acestea disponibile, dar în funcție de versiunile dvs. Windows și Excel, acestea nu funcționează întotdeauna, astfel încât este necesară o experimentare.
De asemenea, este posibil ca utilizatorii dvs. să nu aibă acces la unele dintre aceste controale suplimentare sau să ruleze versiuni mai vechi de Windows și Excel, ceea ce poate cauza probleme. În organizațiile mari, mai ales dacă sunt globale, nu există un PC standard de construcție pe care să vă puteți baza!
Adăugarea unui buton de ieșire la formularul dvs.
Un buton de comandă este simplu de adăugat la formular. Acesta arată la fel ca butoanele pe care le vedeți în alte formulare Windows, de obicei ca buton „OK” sau „Anulare”.
Faceți clic pe pictograma Buton de comandă din caseta de instrumente. Aceasta este a doua pictogramă din stânga, pe rândul de jos al pictogramelor. Vedeți imaginea de mai sus. Are literele „ab” pe ea.
Puteți ține apăsat butonul mouse-ului și trageți controlul pe formular sau puteți muta cursorul în formular, unde se va schimba în cursor „încrucișat” și puteți poziționa și dimensiona butonul
Dacă trageți controlul către formular, veți obține dimensiunea implicită a butonului. Mutarea cursorului la formular vă permite să modificați dimensiunea butonului trăgând cursorul „cruce” peste formular
Formularul dvs. va arăta astfel:
Butonul va avea text implicit ca subtitrare, dar va trebui să îl modificați în funcție de propriile cerințe. Puteți face clic pe textul din buton („CommandButton1”) și acest lucru vă va permite să editați subtitrarea direct.
De asemenea, îl puteți modifica în fereastra de proprietăți (colțul din stânga jos al ecranului). Veți vedea o proprietate numită „Subtitrare” și puteți modifica valoarea pentru aceasta. Schimbați acest lucru în „Exit”
Ca și în cazul proprietăților formularului, proprietatea „Nume” definește numele care va fi utilizat în codul dvs. VBA. Poate doriți să utilizați un nume care este mai semnificativ și mai evident în codul dvs. Puteți introduce acest lucru împotriva proprietății „Nume”.
Puteți repoziționa butonul trăgându-l pe formular și îl puteți redimensiona făcând clic pe mânerele butoanelor (casete pătrate albe) și glisând mânerele pentru a-l face mai mare sau mai mic
De asemenea, puteți redimensiona butonul modificând valorile Înălțime și Lățime din fereastra de proprietăți
Puteți vizualiza formularul dvs. în Excel făcând clic pe triunghiul verde din bara de instrumente VBE sau apăsând F5
Puteți apela formularul dvs. din codul VBA într-un modul utilizând metoda „Afișare”
123 | Sub ShowForm ()UserForm 1. AfișațiSfârșitul Sub |
Formularul dvs. de utilizator este efectiv un obiect global și poate fi apelat de oriunde din codul dvs.
În prezent, butonul de comandă nu face nimic, deoarece nu există un cod VBA în spatele acestuia. Trebuie să scrii asta singur! Tot ce se poate întâmpla în acest moment este că puteți face clic pe X „Închidere” X în colțul din dreapta sus al formularului.
Pentru a adăuga cod VBA, faceți dublu clic pe butonul din formular
Aceasta vă va duce la fereastra normală a codului VBA și va afișa evenimentul implicit de clic.
Folosiți metoda „Ascundeți” pentru a închide formularul și puteți adăuga, de asemenea, orice alt cod, cum ar fi o casetă de mesaj pentru a confirma utilizatorului ce s-a întâmplat.
Rețineți că fereastra de cod are două drop-down-uri în partea de sus. Primul vă permite să selectați comenzile formularului, iar al doilea arată toate evenimentele disponibile pentru a adăuga cod. Cel evident pentru un buton este evenimentul „Click”, dar există altele precum „Double Click” sau „Mouse Move”
Când rulați formularul acum, butonul face ceva. Formularul dispare și se afișează o casetă de mesaj care confirmă faptul că formularul este închis
Desigur, puteți mări codul de ieșire. Poate doriți să afișați un alt formular sau să luați măsuri cu privire la parametrii pe care utilizatorul i-a introdus în formularul dvs.
Adăugarea unui control de etichetă la un formular
Comenzile pentru etichete sunt pentru a solicita utilizatorului ce fel de date trebuie să introducă la un control din formular, de ex. casetă text, meniu vertical, etc. O etichetă nu are chenare în mod implicit, dar acestea pot fi adăugate prin fereastra de proprietăți, dacă este necesar.
Ca un control, acestea sunt citite doar utilizatorului și sunt pur și simplu un mod de a pune text pe formular, indiferent dacă este un titlu îndrăzneț sau o instrucțiune despre ce să introduceți sau să alegeți.
Pentru a adăuga o etichetă, faceți clic pe pictograma „A” din caseta de instrumente (rândul superior, al doilea din stânga) și faceți dublu clic pe ea sau mutați cursorul la formular și selectați poziția și dimensiunea.
Folosind proprietatea „Subtitrare” din fereastra de proprietăți sau făcând clic pe controlul etichetei, puteți introduce textul pentru controlul etichetei.
Rețineți că textul se va înfășura în funcție de dimensiunea controlului etichetei și, dacă șirul de text este prea lung, nu va apărea complet pe formular, deci trebuie să fiți atenți la dimensionarea controlului etichetei.
Folosind fereastra de proprietăți, puteți schimba aspectul controlului etichetei, cu diferite culori, fonturi, stil de spate de ex. dacă suprapune o imagine și doriți să fie transparentă
Nu trebuie creat niciun cod pentru un control de etichetă. Scopul principal este de a adăuga text la formular, astfel încât utilizatorul să poată vedea cum funcționează toate celelalte controale
Adăugarea unui control text la formular
Un control de text este utilizat pentru a permite utilizatorului să introducă text, de exemplu, introducând un nume sau comentarii
Controlul textului este adăugat din caseta de instrumente făcând clic pe pictograma controlului textului (rândul superior, al treilea din stânga) și făcând dublu clic sau glisând controlul în poziția din formularul dvs.
Controlul textului este adesea confundat cu controlul etichetei, dar controlul textului este cel pentru introducerea utilizatorului
Textul „Introduceți numele dvs.” este un control de etichetă, așa cum s-a descris anterior, iar acum avem o casetă de text albă pregătită de utilizator pentru a introduce ceva în
Folosind fereastra de proprietăți, puteți modifica culorile, fonturile, efectele speciale sau puteți utiliza caractere de parolă pentru caseta dvs. de text. Este disponibilă o flexibilitate enormă
O proprietate foarte importantă pentru o casetă de text este proprietatea „MultiLine”. Dacă doriți ca utilizatorul să introducă o cantitate mare de text în controlul textului, de ex. comentarii, atunci proprietatea „MultiLine” trebuie setată la True.
Este implicit False, ceea ce înseamnă că oricât de mare ar fi caseta de text, textul introdus va rămâne pe o singură linie continuă și va derula din caseta de text. Nu se va înfășura în cutie.
Nu există nicio fereastră pop-up când faceți clic dreapta pe caseta de text când rulează, dar CTRL + V va funcționa pentru Lipire, iar CTRL + C va funcționa pentru Tăiere, în cazul în care utilizatorul dorește să taie și să lipească text în și din alte aplicații
Din nou, trebuie să scrieți propriul cod pentru a face față textului pe care utilizatorul l-a introdus. Poate doriți să îl transferați într-o celulă dintr-o foaie de lucru.
Puteți adăuga acest cod în evenimentul „Modificare” pentru caseta de text
123 | Private Sub TextBox1_Change ()Foi de calcul („Foaie1”). Interval („A1”). Valoare = TextBox1.ValueSfârșitul Sub |
De asemenea, poate doriți să introduceți un cod de validare pentru a verifica dacă utilizatorul nu introduce gunoi, ceea ce va avea efecte dezastruoase asupra aplicației dvs.
Evenimentul de schimbare nu este bun pentru acest lucru, deoarece este apelat de fiecare dată când utilizatorul tastează un caracter nou. Utilizatorul ar putea începe să tastați un șir de text și să constate instantaneu că a încălcat regulile dvs. de validare înainte de a finaliza un text valid.
Folosiți evenimentul „Exit”. Aceasta se declanșează atunci când utilizatorul mută focalizarea pe un alt control al formularului, ceea ce înseamnă că utilizatorul nu mai introduce date.
123456 | Private Sub TextBox1_Exit (ByVal Anulați ca MSForms.ReturnBoolean)Dacă IsNull (TextBox1.Value) Sau Len (TextBox1.Value) <4 ApoiMsgBox „Numele este nevalid”, vbCriticalTextBox1.SetFocusEnd IfSfârșitul Sub |
Când utilizatorul face clic pe un alt control din formular, acest cod testează fie o valoare nulă în caseta de text, fie mai puțin de 4 caractere. Dacă testul este adevărat, atunci apare o casetă de mesaj cu o pictogramă critică pentru a informa utilizatorul că numele este nevalid, iar focalizarea este mutată înapoi în caseta de text jignitoare pentru ca utilizatorul să o corecteze.
Rețineți că, chiar dacă utilizatorul face clic pe butonul Ieșire, evenimentul de ieșire a casetei de text va fi efectuat mai întâi, deci acest lucru împiedică ieșirea utilizatorului fără a corecta intrarea
Inițializați și activați evenimentele pe un formular
Când VBA creează și construiește pentru prima dată un formular, acesta declanșează un eveniment „Initialize”. Cu toate acestea, deoarece formularul este afișat și în acest moment, acesta declanșează și un eveniment „Activare”. De atunci înainte, de fiecare dată când formularul apare folosind metoda „Afișează” sau apare ca parte a unei ierarhii de formulare, atunci se declanșează evenimentul „Activare”, dar nu evenimentul „Inițializare”
Evenimentul „Inițializați” se întâmplă o singură dată, dar evenimentul „Activați” se poate întâmpla de multe ori
În formularul dvs. vă recomandăm să configurați valorile implicite din foaia de lucru din comenzile de intrare, de ex. casete de text, astfel încât acestea să apară la prima utilizare a formularului, dar utilizatorul poate suprascrie valorile implicite și aceste noi valori vor rămâne în loc atât timp cât codul rulează
12345678 | Private Sub UserForm_Initialize ()TextBox1.Value = Foi ("Sheet1"). Interval ("A1"). ValoareDacă TextBox1.Value = ”” AtunciTextBox1.Visible = FalseAltfelTextBox1.Visible = AdevăratEnd IfSfârșitul Sub |
Puteți găsi evenimentul „Inițializați” în al doilea meniu derulant din fereastra de cod și numele formei de utilizator în primul meniu derulant.
Acest cod va utiliza valoarea din celula A1 din „Sheet1” ca valoare implicită în caseta de text creată anterior în acest articol. Când formularul apare pentru prima dată, va apărea valoarea implicită. Utilizatorul poate apoi suprascrie valoarea implicită și aceasta va fi păstrată. Dacă CellA1 este necompletat, caseta de text va fi ascunsă altfel va fi vizibilă
Valoarea implicită ar putea fi, de asemenea, codificată greu:
1 | TextBox1.Value = „John Smith” |
De asemenea, vă recomandăm să vă asigurați că valorile pe care le-a introdus utilizatorul reapar să apară ori de câte ori utilizatorul declanșează acel formular în acea sesiune specială Excel. Codul VBA poate scrie cu ușurință valorile înapoi în celule din registrul de lucru folosind evenimentul „Exit” de pe un control și le poate reinstala folosind evenimentul „Activare” din formular
123 | Private Sub TextBox1_Exit (ByVal Cancel ca MSForms.ReturnBoolean)Foi de calcul („Foaie1”). Interval („A10”). Valoare = TextBox1.ValueSfârșitul Sub |
123 | Private Sub UserForm_Activate ()TextBox1.Value = Foi ("Sheet1"). Interval ("A10"). ValoareSfârșitul Sub |
Acest cod va face valorile utilizatorului persistente și va asigura, de asemenea, că acestea sunt salvate cu restul registrului de lucru
Salvarea cererii și a formularelor
Când salvați registrul de lucru Excel care conține formularele dvs., toate formularele și codul lor VBA sunt salvate, de asemenea. Cu toate acestea, toate valorile pe care le dețin formularele în timp ce sunt afișate se vor pierde.
Este important să scrieți cod, astfel încât atunci când utilizatorul iese din registrul de lucru sau din formular, valorile să fie scrise înapoi în celulele din registrul de lucru și astfel să fie păstrate.
Forme modale și non-modale
Formularul în sine are o proprietate „Show Modal”. Aceasta este setată implicit la True, dar poate fi schimbată la False (non-modal)
Dacă un formular este modal, înseamnă că niciuna dintre funcționalitățile Excel nu poate fi accesată în timp ce formularul este afișat. Aceasta include codul dvs. în fereastra VBE. Puteți vizualiza codul, dar cursorul și tastatura sunt dezactivate.
Într-un formular nemodal, puteți accesa toate funcționalitățile Excel, inclusiv fereastra VBE, în timp ce formularul este afișat.
Acest lucru este important din punctul de vedere al controlului comportamentului utilizatorului
Închiderea unui formular
Oricât de bine îți scrii codul pentru a forța utilizatorul să coboare un anumit traseu, acesta îl poate ocoli cu ușurință dând clic pe „Închide” X în colțul din dreapta sus al formularului
Puteți preveni acest lucru modificând evenimentul „QueryClose” al formularului
1234 | Private Sub UserForm_QueryClose (Anulați ca întreg, CloseMode ca întreg)Anulare = AdevăratMsgBox „Această acțiune este dezactivată”Sfârșitul Sub |
Evenimentul „QueryClose” se declanșează atunci când utilizatorul dă clic pe X „Închidere” a formularului. Acest cod anulează acțiunea, astfel încât utilizatorul este forțat să utilizeze butonul „Ieși” și codul pe care îl ai în spate.
Activarea și dezactivarea comenzilor
Toate comenzile din formularul dvs. au o proprietate numită „Activat”, care este setată la Adevărat sau Fals. Dacă este Fals, atunci controlul este gri. Poate fi văzut, dar nu poate fi folosit.
Există, de asemenea, o proprietate numită „Vizibil”, care este din nou setată la Adevărat sau Fals.
Puteți scrie cod fie pentru a face un anumit control inutilizabil, fie pentru a-l face total invizibil pentru utilizator. Folosind o declarație „Dacă”, puteți alege circumstanțele în care trebuie să faceți acest lucru
De exemplu, puteți dezactiva butonul „Exit” inițial, până când utilizatorul a introdus o valoare în TextBox1 (nume)
123 | Private Sub UserForm_Initialize ()CommandButton1.Enabled = FalseSfârșitul Sub |
1234567 | Private Sub TextBox1_Change ()Dacă Len (TextBox1.Value)> 0 AtunciCommandButton1.Enabled = AdevăratAltfelCommandButton1.Enabled = FalseEnd IfSfârșitul Sub |
Acest cod folosește formularul „Inițializează” evenimentul pentru a dezactiva butonul de ieșire (butonul de comandă 1) când apare formularul pentru prima dată și apoi folosește evenimentul „Modificare” de pe TextBox1 (nume) pentru a activa butonul Ieșire dacă a fost introdus sau dezactivat ceva dacă cutia este goală.
Evenimentul „Modificare” este declanșat de fiecare dată când un caracter nou este introdus sau șters din caseta de text. Dacă utilizatorul încearcă să introducă text pentru a activa butonul și apoi șterge tot textul, butonul va fi dezactivat instantaneu