Gadgetisimo » Calculatoare » Parametrizarea aplicațiilor VBA Excel. O altă abordare

Parametrizarea aplicațiilor VBA Excel. O altă abordare

Nu voi discuta despre necesitatea parametrizării aplicațiilor. De orice fel. O aplicație trebuie să fie cât mai flexibilă în privința constantelor cu care lucrează. Nu modificăm o aplicație contabilă de fiecare dată când Guvernul visează un alt procent al TVA-ului.

Ce voi prezenta este o altă abordare a stocării, accesării sau modificării parametrilor (setărilor) cu care lucrează o aplicație VBA în Excel.

Microsoft ne dă posibilitatea de a utiliza parametrii în Registry și ne oferă pentru asta patru funcții: GetSetting, GetAllSettings, SaveSetting și DeleteSetting. Setările apar în Registry sub cheia

HKEY_CURRENT_USER\Software\Microsoft\VB and VBA Program Settings

Totul perfect. Am un loc de unde pot accesa setări comune mai multor aplicații VBA Excel. Am funcții simple cu care pot face asta. Dar știm cu toții cât de disponibil este Registry la erori sau la corupere. Plus că, pentru un dezvoltator, în timpul debuging este peste mână să urmărească, în același timp, mai mulți parametri în Registry.

Ce vă propun aici este o altă abordare, care păstrează avantajele soluției clasice, dar aduce și un număr de avantaje. Pentru eleganță și ușurința utilizării vom avea o pagină separată, cu o Table care va conține parametrii.

Tabel Excel cu parametrii

Avantaje

  1. La fel ca și în cazul clasic, am funcții clare și simple pentru manipularea parametrilor
  2. Parametrii sunt stocați centralizat (dacă am nevoie) sau chiar în fișierul care conține aplicația VBA. Practic, dacă mut aplicația, mut și setările curente, nu mai trebuie să le creez la prima rulare, cu valori implicite.
  3. Coloana Explicație (care nu e obligatorie) îmi folosește când vreau să fac debuging după luni de zile. Acolo unde se poate, eu mai folosesc o coloană cu Valori posibile. De exemplu la TVA aș putea completa acolo 19, 9 și 0.
  4. Văd clar și foarte ușor modificarea parametrilor la Step Into sau la sfârșitul rulări.
  5. Pot modifica manual foarte ușor înainte sau în timpul debuging.
  6. Am o privire de ansamblu a tuturor parametrilor. Îi pot ordona cum vreau pentru că funcțiile nu țin cont de ordine. Îi pot lista, trimite pe mail sau adăuga / șterge mult mai ușor și rapid.
  7. Pot adăuga orice coloană am nevoie, orice formatare (formatare care și ea se poate constitui într-un parametru al parametrului)
  8. Pot întreține cu ușurință traducerea interfeței sau a mesajelor de eroare în cazul aplicațiilor multi-linguale. Și asta în alte tabele în aceeași pagină.
Parametrii pentru traducere interfață
Parametrii pentru traducere mesaje

La sfârșit, când aplicația este gata pentru utilizare, nu trebuie decât să ascund pagina din proprietăți.

Ascundere sheet Parametrii

Dezavantaje

Singurul dezavantaj major pe care îl văd este legat de viteză și memorie ocupată. Pe de o parte, dacă folosesc un fișier separat pentru parametrii mai multor aplicații, acesta trebuie deschis, iar, pe de altă parte, daca folosesc o pagină a fișierului care conține proiectul VBA și fişierul este mare, fiecare salvare adaugă timpi suplimentari.

Acestea fiind zise, iată cum arată funcția pentru citirea și procedura pentru modificarea unui parametru de tip Boolean:

Funcțiile sunt create presupunând că pagina Parametrii se află în fișierul care conține proiectul VBA, în această pagină există tabelul Parametrii, codul parametrului este pe coloana Cod și valoare pe coloana Valoare.

Explicații

Funcția GetParamAsBoolean(par As String) As Boolean

  • are ca parametru propriu par, care este codul parametrului, de exemplu achitat
  • funcția caută codul în tabelă (folosind funcția Excel MATCH) și obține numărul rândului pe care se află
  • apoi funcția returnează valoarea de pe rândul respectiv și coloana Valoare
  • funcția este privată pentru a nu apare în Excel la inserarea de funcții

Procedura SetParamAsBoolean(par As String, valoare As Boolean)

  • are doi parametri proprii, codul și valoarea parametrului de modificat, de exemplu achitat și TRUE
  • procedura caută rândul pe care se află codul (folosind funcția Excel MATCH)
  • apoi procedura modifică valoarea de pe rândul respectiv și coloana Valoare
  • la sfârșit, procedura execută salvarea fișierului (rândul 11, scos în evidență în codul de mai sus)

Observație: ținând cont de timpii suplimentari generați la salvare, este bine ca, dacă în aplicație executați mai multe modificări de parametri una după alta, să scoateți salvarea fișierului din procedura de modificare și să puneți salvarea în codul apelant, o singură dată, la sfârșitul modificărilor.

Surse: Freepick.com


Back To Top