
Această carte vă va ajuta să stăpâniți mediul de dezvoltare integrat VBA și să învățați cum să programați în VBA folosind obiecte, proprietăți, metode și evenimente. Metodele de programare discutate sunt ilustrate prin exemple care pot fi testate imediat în practică. Puteți aplica aceste cunoștințe atât pentru crearea și îmbunătățirea aplicațiilor de birou populare, inclusiv pentru aplicațiile Office XP, cât și pentru crearea propriilor aplicații.
Cartea este concepută pentru cei care vor să învețe rapid și fără prea mult efort să învețe cum să programeze pentru Windows utilizând VBA.
Carte: VBA pentru Dummies
Recunoașterea intrărilor de taste
Recunoașterea intrărilor de taste
Utilizați evenimentele KeyPress, KeyDown și KeyUp pentru a răspunde la apăsările de taste ale utilizatorului. Evenimentul KeyPress este convenabil pentru recunoașterea cheilor cu caractere obișnuite "tipărite" (litere, numere, punctuație) când trebuie să procesați informațiile introduse într-un câmp text sau într-o casetă combo. Cu acest eveniment, multe dintre combinațiile de tip
Evenimentele KeyDown și KeyUp, pe de altă parte, recunosc aproape orice combinație de taste pe care o trimite, inclusiv freaks cum ar fi
În Capitolul 10, am discutat tehnicile de bază pentru a vă asigura că utilizatorul a introdus informațiile corecte în formular. Aici vom discuta mai multe tehnici.
În cazul câmpurilor de text și al casetelor combo, unele caractere pentru datele de intrare nu sunt permise. Utilizați procedura de tratare a evenimentelor KeyPress pentru a elimina caracterele nevalide de pe ecran atunci când le tipăriți de utilizator. Următorul cod de program vă permite să introduceți numai litere și numere:
Private Sub txtSerial Număr_KeyPress (ByVal KeyAscii _
"Întregul bloc este o condiție:
Dacă Chr (KeyAscii) <"0" Or _
(Chr (KeyAscii)> "9" Și Chr (KeyAscii) <"A") Or _
(Chr (KeyAscii)> "Z" și Chr (KeyAscii) <"a") Or _
Chr (KeyAscii)> "z" Apoi
MsgBox "Caracterul nevalid!"
KeyAscii = 0 'caracterul aruncat
Da, recunosc că condiția folosită aici sa dovedit a fi destul de lungă, dar nu funcționează. Imediat ce declarația If. Apoi, acesta găsește un caracter nevalid, este afișat un mesaj despre el. Apoi vine operatorul KeyAscii = 0; KeyAscii este argumentul pentru procedura de procesare a evenimentului KeyPress, deci este folosit ca variabilă locală în această procedură. Modificarea valorii acesteia modifică codul caracterului trecut în câmpul de text. Și din moment ce câmpul de text în sine nu acceptă un caracter care are codul 0, un caracter invalid introdus de utilizator va dispărea fără urmă.
Schimbarea valorii argumentului KeyAscii vă permite să modificați datele introduse incorect în cea corectă. De exemplu, următoarea procedură de procesare a unui eveniment poate fi utilizată pentru afișarea și stocarea textului introdus de utilizator sub formă de text scrise cu majuscule:
Private Sub txtSerial Număr_KeyPress (ByVal KeyAscii _
Operatorul care efectuează conversia a necesitat utilizarea a trei funcții imbricate una în cealaltă. Deoarece KeyAscii este un cod numeric caracter, mai întâi necesar pentru a converti codul într-un șir de caractere prin intermediul funcției Cro, traduce apoi un șir la majuscule folosind UCASE și în final convertiți din nou șir la un întreg folosind Asc.
Dacă doriți să verificați din nou valoarea unui control cu fiecare schimbare, creați o procedură de procesare a evenimentelor sau folosiți-o pe cea de la subsecțiunea anterioară. Dar, uneori, este preferabil să amânați verificarea datelor până când utilizatorul completează complet intrarea. Unii vă vor fi recunoscători pentru oportunitatea, fără ajutor extern, de a corecta datele pe care le introduc înainte de a transfera aceste date în program pentru verificare - o percep ca pe o recunoaștere indirectă a abilităților lor mentale.
Amânați verificarea are sens, de asemenea, dacă durează mult timp. Dacă trebuie să comparați datele introduse cu date dintr-o bază de date sau date de pe Internet, probabil că nu doriți să forțați utilizatorul să aștepte în timp ce programul caută date de comparație de fiecare dată când tasta este apăsată și fiecare clic al butonului mouse-ului.
Pentru a testa valoarea unui control după ce utilizatorul termină complet tastând, creați o procedură pentru procesarea evenimentului BeforeUpDate. Aceste evenimente apar atunci când utilizatorul face clic pe un alt control, apasă pe
Private Sub txtSerial Number_Change ()
Dacă Len (t xt Serial Number.Value)> 5 Apoi
MsgBox "Prea multe caractere, vă rugăm să încercați din nou."
Uneori are sens să amânați validarea datelor de control până când utilizatorul face clic pe butonul OK care închide formularul. Acest lucru trebuie făcut în cazul în care criteriile de validare utilizează valorile mai multor controale în formular. Dacă ați selectat acest tip de verificare, plasați codul de program corespunzător în procedura de procesare a evenimentului Click de pe butonul OK. Să presupunem că dezvoltați o formă care să permită utilizatorului să introducă datele pentru evenimente viitoare importante. Formularul conține o listă în care utilizatorul poate specifica cât de mult timp înainte de rechemare a evenimentului. Dacă utilizatorul planifică o întâlnire pentru ziua de mâine, dar solicită să i se amintească despre aceasta cu două zile înainte, puteți raporta interdicția de a introduce astfel de date după ce utilizatorul dă clic pe butonul OK. În acest fel, nu trebuie să solicitați utilizatorului să introducă date în comenzi într-o anumită ordine pentru a evita apariția mesajelor de eroare.