Foi de calcul VBA - Ghidul final

Acesta este ghidul final pentru lucrul cu Foi de calcul / Foi de lucru în Excel.

În partea de jos a acestui ghid, am creat o foaie ieftină cu comenzi comune pentru lucrul cu foi.

Foi vs. Fișe de lucru

Există două moduri de a face referință la Foi folosind VBA. Primul este cu obiectul Foi:

1 Foi („Sheet1”). Activați

Cealaltă este cu obiectul Worksheets:

1 Fișe de lucru („Sheet1”). Activați

99% din timp, aceste două obiecte sunt identice. De fapt, dacă ați căutat online exemple de coduri VBA, probabil că ați văzut ambele obiecte folosite. Iată diferența:

Colecția Sheets conține foi de lucru ȘI foi de diagrame.

Așadar, folosiți Foi de calcul dacă doriți să includeți Foi de lucru regulate și Foi de diagrame. Utilizați foi de lucru dacă doriți să excludeți foi de diagrame. Pentru restul acestui ghid vom folosi Foi de lucru și Fișe de lucru în mod interschimbabil.

Foi de referință

Există mai multe moduri diferite de a face referire la Foi:

  • Foaie activă
  • Nume filă foaie
  • Număr index foaie
  • Numele codului foii

Foaie activă

Foaia activă este foaia activă în prezent. Cu alte cuvinte, dacă ați întrerupt codul și ați analizat Excel, foaia este vizibilă. Exemplul de cod de mai jos va afișa o Casetă de mesaje cu numele ActiveSheet.

1 MsgBox ActiveSheet.Name

Numele foii

Probabil că sunteți cel mai familiarizat cu referirea la Foi de calcul după numele filelor:

1 Foi de calcul („TabName”). Activați

Număr index foaie

Numărul indexului foii este poziția foii din registrul de lucru. 1 este prima foaie. 2 este a doua foaie etc .:

1 Foi (1). Activați

Număr index foaie - Ultima foaie din registrul de lucru

Pentru a face referire la ultima foaie din registrul de lucru, utilizați Foi de calcul.Cont pentru a obține ultimul număr index:

1 Foi (Sheets.Count). Activați

Foaia „Numele codului”

Numele codului foii este numele obiectului în VBA:

1 CodeName.Activate

Referința foi în alte registre de lucru

De asemenea, este ușor să consultați Foi de calcul în alte registre de lucru. Pentru a face acest lucru, trebuie să utilizați obiectul Cărți de lucru:

1 Cărți de lucru („VBA_Examples.xlsm”). Foi de lucru („Sheet1”). Activați

Important: Caietul de lucru trebuie să fie deschis înainte de a putea face referire la Foi de calcul.

Activați vs. Selectați foaia

Într-un alt articol discutăm totul despre activarea și selectarea foilor. Versiunea scurtă este următoarea:

Când activați o foaie, aceasta devine foaia activă. Aceasta este foaia pe care ați vedea-o dacă v-ați uita la programul dvs. Excel. Se poate activa o singură foaie odată.

Activați o foaie

1 Foi („Sheet1”). Activați

Când selectați o foaie, aceasta devine și foaia activă. Cu toate acestea, puteți selecta mai multe foi simultan. Când sunt selectate mai multe foi simultan, foaia „de sus” este ActiveSheet. Cu toate acestea, puteți comuta ActiveSheet în foile selectate.

Selectați o foaie

1 Foi („Foaie1”). Selectați

Selectați Foi multiple

Utilizați o matrice pentru a selecta mai multe foi simultan:

1 Fișe de lucru (matrice ("Sheet2", "Sheet3")). Selectați

Foaie de lucru Variabilă

Atribuiți o foaie de lucru unei variabile vă permite să faceți referire la foaia de lucru după numele variabilei. Acest lucru poate economisi o mulțime de tastare și vă poate face codul mai ușor de citit. Există, de asemenea, multe alte motive pentru care ați putea dori să utilizați variabile.

Pentru a declara o variabilă a foii de lucru:

1 Dim ws ca foaie de lucru

Atribuiți o foaie de lucru unei variabile:

1 Set ws = Foi ("Sheet1")

Acum puteți face referire la variabila foii de lucru din codul dvs.:

1 ws.Activați

Buclați prin toate foile din registrul de lucru

Variabilele foii de lucru sunt esențiale atunci când doriți să parcurgeți toate foile de lucru dintr-un registru de lucru. Cel mai simplu mod de a face acest lucru este:

12345 Dim ws ca Foaie de lucruPentru fiecare ws din foi de lucruMsgBox ws.nameUrmătorul ws

Acest cod va parcurge toate foile de lucru din registrul de lucru, afișând numele fiecărei foi de lucru într-o casetă de mesaje. Buclarea prin toate foile dintr-un registru de lucru este foarte utilă atunci când blocați / deblocați sau ascundeți / dezveliți mai multe foi de lucru simultan.

Protecția foii de lucru

Protecția registrului de lucru

Protecția registrului de lucru blochează registrul de lucru de la modificările structurale, cum ar fi adăugarea, ștergerea, mutarea sau ascunderea foilor de lucru.

Puteți activa protecția registrului de lucru folosind VBA:

1 ActiveWorkbook.Protect Password: = "Parolă"

sau dezactivați protecția registrului de lucru:

1 ActiveWorkbook.UnProtect Password: = "Parolă"

Notă: Puteți, de asemenea, să protejați / să vă protejați fără o parolă, omițând argumentul Parolă:

1 ActiveWorkbook.Protect

Protecția foii de lucru

Protecția la nivel de foaie de lucru împiedică modificarea foilor de lucru individuale.

Protejați foaia de lucru

1 Foi de lucru („Sheet1”). Protejați „parola”

Desprotejați foaia de lucru

1 Fișe de lucru („Sheet1”). Anulați protecția „Parolei”

Există o varietate de opțiuni la protejarea foilor de lucru (permite modificări de formatare, permite utilizatorului să introducă rânduri etc.) Vă recomandăm să utilizați Macro Recorder pentru a înregistra setările dorite.

Aici discutăm despre protecția foii de lucru.

Proprietate vizibilă a foii de lucru

S-ar putea să știți deja că foile de lucru pot fi ascunse:

Există, de fapt, trei setări de vizibilitate a foii de lucru: Vizibil, Ascuns și Foarte ascuns.Foile ascunse pot fi ascunse de orice utilizator Excel obișnuit - făcând clic dreapta în fila tab-ului foii de lucru (prezentată mai sus). Foile foarte ascunse pot fi afișate numai cu codul VBA sau din Editorul VBA. Utilizați următoarele exemple de cod pentru a ascunde / afișa foile de lucru:

Afișați foaia de lucru

1 Foi de lucru ("Sheet1"). Vizibil = xlSheetVisible

Ascundeți foaia de lucru

1 Foi de lucru ("Sheet1"). Visible = xlSheetHidden

Foarte ascunde foaia de lucru

1 Foi de lucru ("Sheet1"). Vizibil = xlSheetVeryHidden

Evenimente la nivel de foaie de lucru

Evenimentele sunt declanșatoare care pot determina executarea „procedurilor de eveniment”. De exemplu, puteți face ca codul să ruleze de fiecare dată când se schimbă orice celulă dintr-o foaie de lucru sau când este activată o foaie de lucru.

Procedurile de evenimente ale foii de lucru trebuie plasate într-un modul de foaie de lucru:

Există numeroase evenimente din foaia de lucru. Pentru a vedea o listă completă, accesați un modul de foaie de lucru, selectați „Foaie de lucru” din prima listă derulantă. Apoi selectați o procedură de eveniment din al doilea meniu derulant pentru ao insera în modul.

Foaie de lucru Activare eveniment

Evenimentele de activare a foii de lucru se execută de fiecare dată când se deschide foaia de lucru.

123 Private Sub Worksheet_Activate ()Range ("A1"). SelectațiSfârșitul Sub

Acest cod va selecta celula A1 (resetând zona de vizualizare în partea stângă sus a foii de lucru) de fiecare dată când se deschide foaia de lucru.

Eveniment de schimbare a foii de lucru

Evenimentele de modificare a foii de lucru se execută ori de câte ori se modifică o valoare a celulei pe foaia de lucru. Citiți tutorialul nostru despre Evenimente de modificare a foii de lucru pentru mai multe informații.

Foaie de lucru Foaie de trișare

Mai jos veți găsi o foaie de trucuri care conține exemple de coduri comune pentru lucrul cu foi în VBA

Foaie de trăsături VBA Worksheets

Foaie de lucru VBA Cheatsheet
DescriereExemplu de cod
Referință și activarea foilor de calcul
Nume filăFoi de calcul („Introducere”). Activați
Numele codului VBAFoaie 1. Activați
Poziția indexuluiFoi (1). Activați
Selectați Foaie
Selectați FoaieFoi de calcul („Introducere”). Selectați
Setați la VariabilăDim ws ca Foaie de lucru
Setați ws = ActiveSheet
Nume / RedenumireActiveSheet.Name = "NumeNou"
Foaia următoareActiveSheet.Next.Activate
Buclați prin toate foileDim ws ca Foaie de lucru
Pentru fiecare WS din foi de lucru
Msgbox ws.name
Următorul ws
Buclați prin foi selectateDim ws Ca foaie de lucru
Pentru fiecare ws în ActiveWindow.SelectedSheets
MsgBox ws.Name
Următorul ws
Obțineți ActiveSheetMsgBox ActiveSheet.Name
Adăugați o foaieFoi. Adăugați
Adăugați foaie și numeSheets.Add.Name = "Foaie nouă"
Adăugați foaie cu numele din celulăSheets.Add.Name = interval ("a3"). Valoare
Adăugați foaie după altaSheets.Add After: = Sheets („Introducere”)
Adăugați foaie după și numeSheets.Add (After: = Sheets ("Input")). Nume = "NewSheet"
Adăugați Foaie înainte și numeSheets.Add (Before: = Sheets ("Input")). Nume = "NewSheet"
Adăugați o foaie la sfârșitul registrului de lucruSheets.Add After: = Sheets (Sheets.Count)
Adăugați o foaie la începutul registrului de lucruSheets.Add (Before: = Sheets (1)). Name = "FirstSheet"
Adăugați o foaie la variabilăDim ws Ca foaie de lucru
Set ws = Sheets.Add
Copiați foile de lucru
Mutați foaia la sfârșitul registrului de lucruFoi de calcul („Foaie1”). Mutați după: = Foi de calcul (Foi de calcul).
În noul registru de lucruFoi („Sheet1”). Copiați
Foi selectate către noul registru de lucruActiveWindow.SelectedSheets.Copy
Înainte de altă foaieFoi de calcul („Foaie1”). Copiați înainte: = Foi de calcul („Foaie2”)
Înainte de prima foaieFoi de calcul („Foaie1”). Copiați înainte: = Foi de calcul (1)
După Ultima foaieFoi de calcul („Foaie1”). Copiați după: = Foi de calcul (Foi de calcul).
Copie și numeFoi de calcul („Foaie1”). Copiați după: = Foi de calcul (Foi de calcul).
ActiveSheet.Name = "LastSheet"
Copiați și denumiți din valoarea celuleiFoi de calcul („Foaie1”). Copiați după: = Foi de calcul (Foi de calcul).
ActiveSheet.Name = Range ("A1"). Valoare
Către un alt registru de lucruFoi de calcul („Foaie1”). Copiați înainte: = Cărți de lucru („Exemplu.xlsm”). Foi de calcul (1)
Ascunde / Afișează foi
Ascundeți foaiaFoi („Sheet1”). Vizibil = False
sau
Foi de calcul („Sheet1”). Visible = xlSheetHidden
Afișează foaiaFoi de calcul („Foaie1”). Vizibil = Adevărat
sau
Foi de calcul („Sheet1”). Vizibil = xlSheetVisible
Foarte ascunde foaiaFoi de calcul („Sheet1”). Vizibil = xlSheetVeryHidden
Ștergeți sau ștergeți Foi de calcul
Ștergeți foaiaFoi de calcul („Foaie1”). Ștergeți
Ștergeți foaia (gestionarea erorilor)La eroare Reluați în continuare
Foi de calcul („Foaie1”). Ștergeți
La eroare GoTo 0
Ștergeți foaia (fără prompt)Application.DisplayAlerts = Fals
Foi de calcul („Foaie1”). Ștergeți
Application.DisplayAlerts = Adevărat
Ștergeți foaiaFoi („Sheet1”). Celule.Clar
Ștergeți numai conținutul foiiFoi („Sheet1”). Cells.ClearContents
Ștergeți foaia folosităFoi („Sheet1”). UsedRange.Clear
Protejați sau neprotejați foile
Anulați protecția (fără parolă)Foi de calcul („Foaie1”). Neprotejați
Anulați protecția (parola)Foi de calcul („Foaia1”). Anulați protecția „Parolei”
Protejați (fără parolă)Foi („Sheet1”). Protejați
Protejați (parola)Foi de calcul („Foaie1”). Protejați „Parola”
Protejați, dar permiteți accesul VBAFoi de calcul ("Sheet1"). Protejați UserInterfaceOnly: = True
Deprotejați toate foileDim ws Ca foaie de lucru
Pentru fiecare ws din foi de lucru
ws.Defectați „parola”
Următorul ws

Vei ajuta la dezvoltarea site-ului, partajarea pagina cu prietenii

wave wave wave wave wave