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.
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.
Exemplu Schimbare fundal background
In continuare, as vrea sa folosim Worksheet SelectionChange intr-un exemplu. Cu ajutorul acestei metode vom scrie un cod VBA care va schimba fundalul celulelor selectate din zona B7:G13.
Dupa ce ai adaugat structura metodei Worksheet SelectionChange conform pasilor de mai sus, trebuie sa incepi sa scrii codul necesar pentru schimbarea fundalului celulelor selectate din zona B7:G13.
- Pentru a vedea daca celula selectata de tine este in zona care te intereseaza trebuie sa verifici acest lucru folosind un IF. Tot acum folosim si metoda Intersect care verifica daca adresa lui Target este zona B7:G13.
If Not Application.Intersect(Target, Range(“B7:G13”)) Is Nothing Then
- Daca celula este in zona care te intereseaza, vom folosi urmatorul cod pentru a reseta la culoarea initiala a tuturor celulelor din zona B7:G13. Daca nu facem acest lucru, vom ajunge ca toate celule din zona B7:G13 sa fie albastre.
With Range(“B7:G13”).Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorDark1
.TintAndShade = -4.99893185216834E-02
.PatternTintAndShade = 0
End With
- Urmeaza ultimul pas in care modificam culoarea de fundal a celulei sau celulelor selectate. Tot acum inchidem IF-ul deschis mai sus cu End If.
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 15773696
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
Un alt fisier in care am folosit metoda Worksheet SelectionChange este in sheet-urile de raportare din Balanta personala de venituri si cheltuieli.
Downloadeaza acest exemplu
Daca ti-am starnit interesul, te invit sa descarci fisierul.
Comentarii si sugestii
Impartaseste experienta ta sau alte sfaturi utile legate folosirea codurilor VBA declansate de un eveniment din sheet.