Archive for the ‘VBA’ Category

[VBA] Cum folosim Worksheet Selection Change Event?

Buna,

Haideti sa vedem cum folosim Worksheet Selection Change Event pentru a rula un cod VBA de fiecare data cand este selectata o noua celula intr-un sheet.

Vreau sa va impartasesc ca pana la sfarsitul anului trecut eram foarte sceptica cu privire la folosirea diverselor evenimente pentru rularea codurilor VBA. Insa mi s-a ridicat o minge la fileu si a trebuit sa raspund cu succes.

Sintaxa Worksheet_SelectionChange

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
End Sub

Metoda Worksheet SelectionChange trebuie inclusa in fereastra de cod a sheet-ului respectiv:

  • Deschideti editorul VB – cea mai simpla modalitate pentru a deschide editorul se realizeaza folosind combinatia de taste ALT + F11.
  • In fereastra care se deschide, alege sheet-ul in care doresti sa introduci codul.
  • In partea de cod a ferestrei, selecteaza Worksheet in partea din stanga si din lista derulanta din dreapta alege SelectionChange. Dupa acest pas, se adauga in fereastra de cod structura procedurii de care ai nevoie.

worksheet_-_stanga

event_selection

Parametrul acestei metode este Target. Acesta este un parametru de tip Range si se refera la adresa celulei sau celulelor selectate. Daca Target este in zona de celule care te intereseaza, vor rula codurile VBA pe care le-ai setat.

Read more »

Cum sa blochezi mai multe sheet-uri dintr-o data folosind VBA?

protect_sheet

Buna,

Pentru mine, MS Excel este un program versatil, pe care il folosesc in fiecare zi si care ma ajuta foarte mult.

O data cu folosirea in mod intensiv a programului, am inceput sa gasesc zone unde este rigid.

Una din partile rigide ale MS Office este cea legata de protejarea sheet-urilor. In articolul de astazi, vom vedea cum putem folosi VBA pentru a proteja mai multe sheet-uri dintr-o data.

Configurarea fisierului

La fel ca atunci, cand folosim VBA pentru deblocarea mai multor sheeturi, fisierul trebuie sa indeplineasca o conditie foarte importanta: toate sheet-urile sa fie protejate cu aceeasi formula. In cazul in care conditia este indeplinita, urmati pasii de mai jos:

  • Deschideti editorul VB – cea mai simpla modalitate pentru a deschide editorul se realizeaza folosind combinatia de taste ALT + F11.

Read more »

Cum sa deblochezi mai multe sheet-uri dintr-o data folosind VBA?

Buna,

Am revenit dupa o saptamana de concediu cu forte proaspete. Si pentru ca este inceput de saptamana, m-am gandit sa va prezint o modalitate foarte usoara prin care se pot debloca simultan toate sheet-urile dintr-un fisier.

Am realizat de curand un fisier cu aproape 30 de sheet-uri toate protejate. Cum era normal, la scurt timp am realizat ca este nevoie sa adaug informatii prin o mare parte din sheet-uri. Cand am realizat cat timp o sa pierd cu deblocarea fiecarui sheet in parte, m-am apucat sa caut diverse variante ca sa pot face asta aproape instant.

Read more »

Cum sa trimiti automat un mail printr-o apasare de buton?

Buna,

La inceputul lunii am lucrat la un raport care trebuia trimis catre mai multe persoane, si am cautat o sintaxa VBA prin care sa trimit cate un mail la fiecare persoana folosind Thunderbird. Oricat as vrea sa va spun ca am gasit, nu se poate.

Ca sa foloseste totusi optiunea de trimitere mail prin VBA am apelat la Outlook si pentru ca multe persoane m-au intrebat cum se face, astazi va voi prezenta sintaxa pentru trimiterea mailurilor folosind Outlook.

Configurarea fisierului

Pentru exemplul de azi, nu a fost nevoie de o configurare foarte complicata. Am formatat o celula pentru adaugarea adresei de mail catre care se trimite mailul si am adaugat un buton pentru trimiterea mailului. Procedura VBA pentru trimiterea mailului am alocat-o butonului Trimite mail din fisier.

Advanced Filter in VBA [Partea 4/4]

Buna,

Am revenit cu ultima partea din seria Advanced Filter. Astazi vom parcurge sintaxa vba pentru Advanced Filter si vom vedea 3 exemple pentru aceasta optiune:

 

Sintaxa VBA Advanced Filter

In VBA Advanced Filter are urmatoarea sintaxa:

expression .AdvancedFilter(Action, CriteriaRange, CopyToRange, Unique)
  • expression  - este camp obligatoriu si reprezinta obiectul de tip Range din VBA. Pentru Advanced Filter, acesta poate fi o coloana, o regiune de celule sau o zona definita prin optiunea Named Range;
  • Action - prezinta actiunea care se doreste prin aplicarea Advanced Filter. Este un camp obligatoriu si poate fi xlFilterCopydatele sunt copiate intr-o zona definita sau xlFilterInPlacefiltrare in acelasi tabel;
  • CriteriaRange – in acest camp se scrie adresa regiunii in care sunt setate criteriile pentru filtrare. Acest camp este optional. Daca este omis, filtrarea se face fara criterii;
  • CopyToRangeacest camp se foloseste in cazul xlFilterCopy si se foloseste pentru a scrie adresa regiunii unde se doreste copierea datelor dupa filtare. Acest camp este optional.
  • Unique - Acest camp se foloseste atunci cand se doreste filtrarea inregistrarilor unice. Argumentele pot fi TRUE, atunci cand se doreste filtrarea unica si FALSE cand nu se doreste acest lucru. In mod implicit, campul este setat pe FALSE.

Filtrarea in acelasi tabel (Filter in place)

La fel ca in articolele anterioare am folosit acelasi tabel. Codul VBA folosit pentru filtrarea tabelului conform unor criterii este:

Public Sub FilterInPlace()

Worksheets(“Advanced filter”).Range(“A1:C29″).AdvancedFilter _
Action:=xlFilterInPlace, _
CriteriaRange:=Worksheets(“Advanced filter”).Range(“F1:F2″)

End Sub

Read more »

Ai o intrebare despre Excel?

Foloseste formularul de intrebari de aici.

Poti oricand accesa pagina “Provocari Excel” din meniul principal.

×