Cum stergi un sheet in Excel fara sa il selectezi, utilizand VBA?
Studiu de caz:
Am primit de curand de la un client o baza de date care contine link-uri la alte baze de date, pentru prelucrari complexe ulterioare.
Unul dintre sheet-uri continea era corupt, cel mai probabil, din link-uri externe, fie la alte baze de date, fie la alte fisiere. Oricare ar fi fost motivul – existau cel putin cinci utilizatori ai respectivei baze de date care ar fi putut introduce date eronate – respectiva foaie de lucru (sheet) nu putea fi accesata fara a bloca intreg soft-ul.
Pentru a sterge pur si simplu o foaie de lucru in Excel, trebuie sa dati click dreapta pe foaia de lucru respectiva si sa alegeti optiunea Delete.
ATENTIE! In cazul in care fisierul este protejat in ceea ce priveste structura (din meniul Review -> Protect workbook -> bifa pe Structure), trebuie sa stiti parola pentru a putea sterge un sheet, altfel optiunea Delete nu este activa.
Cum am rezolvat problema?
In cazul in care nu se poate selecta sheet-ul respectiv (vezi cazul exemplificat mai sus), o solutie eficienta este utilizarea unei macrocomenzi simple VBA.
PASUL 1
Accesati meniul Developer si alegeti din lista de controale disponibile din butonul Insert primul buton.
PASUL 2
Pozitionati cursorul undeva intr-un alt sheet activ al fisierului si “desenati” cu click and drag butonul.
PASUL 3
Dati click dreapta pe buton si alegeti optiunea Assign Macro
In fereastra de dialog puteti redenumi macro-ul, sa spunem ca ii punem numele sterge.
Apasati butonul New pentru a intra in modulului de editare VBA.
PASUL4
In fereastra de dialog, inscrieti urmatorul cod, intre Sub sterge() si End Sub:
Application.DisplayAlerts = False
Sheets(“denumire_sheet_de_sters”).Delete
Application.DisplayAlerts = True
Modificati in codul de mai sus, “denumire_sheet_de_sters” cu denumirea sheet-ului pe care vreti sa il stergeti fara a-l selecta.
ATENTIE! Nu stergeti Sub sterge() si End Sub. Acestea marcheaza macro-ul.
PASUL 5
Reveniti in Excel.
Rulati macro-ul (click stanga pe noul buton) si apoi stergeti butonul respectiv.
Evident, daca sunteti mai familiar cu VBA, puteti realiza macro-ul in VBA si apoi il puteti rula direct in Excel, fara a mai introduce si butonul.