Determinați dacă există o foaie într-un registru de lucru folosind VBA în Microsoft Excel

Anonim

Ar putea exista un moment în care trebuie să verificați dacă există o foaie de lucru, pe care ați creat-o sau ștearsă într-un registru de lucru într-un cod / macrocomandă VBA. Putem face acest lucru cu ușurință folosind o funcție / macro. Există mai multe moduri de a verifica dacă există o foaie de lucru.

Vom acoperi următoarele moduri în acest articol:

1. Funcție definită de utilizator cunoscută sub numele de UDF
2. Sub rutină prin caseta de mesaje

Prima opțiune: Funcția definită de utilizator

Următorul instantaneu conține câteva nume de foi și vom verifica dacă numele foii din coloana A există.

Pentru a afla dacă există o anumită foaie, trebuie să urmăm pașii de mai jos pentru a lansa editorul VB

  • Faceți clic pe fila Dezvoltator
  • Din grupul de coduri, selectați Visual Basic

  • Copiați codul de mai jos în modulul standard
Opțiune Explicit Funcție Foaie de lucru Există (ByVal WorksheetName As String) Ca Boolean Dim Sht Ca foaie de lucru pentru fiecare Sht în ThisWorkbook.Worksheets If Application.Proper (Sht.Name) = Application.Proper (WorksheetName) Then WorksheetExists = True Exit Function End If Next Sht WorksheetExists = Funcție de finalizare falsă 

  • Pentru a verifica, vom folosi UDF în celula B2 ca
  • = Exista foaie de lucru (A2)

  • În imaginea de mai sus, „MasterSheet” nu există în exemplul de carte de lucru; prin urmare, formula a dat răspunsul ca fiind fals

Explicatie cod:

Această funcție preia valoarea „WorksheetName” din macro-ul care efectuează alte activități. Dacă trebuie să îl modificați conform codului dvs., puteți.

Pentru fiecare Sht din ThisWorkbook.Worksheets și Următorul Sht sunt părțile de început și respectiv de sfârșit ale buclei.

Atunci Dacă Application.Proper (Sht.Name) = Application.Proper (WorksheetName) atunci

WorksheetExists = Adevărat

Verifică dacă numele colii se potrivește cu numele colii transmis din macrocomanda principală. Dacă da, WorksheetExists este adevărat și putem ieși din funcție. În caz contrar, WorksheetExists = False este returnat înapoi la macro-ul principal. Bucla merge de la prima foaie la următoarea până când toate foile au fost verificate.

A doua opțiune: rutină secundară prin caseta de mesaje

Putem avea un subrutin normal care apelează un UDF și, dacă se găsește foaia specificată, se va afișa caseta de mesaj, „foaie există”; dacă nu este găsit, apare mesajul msgbox, „foaia nu a fost găsită”.

Pentru a verifica, vom copia următorul cod în modulul standard:

Funcție WorksheetExists2 (WorksheetName As String, Optional wb As Workbook) Ca Boolean Dacă wb nu este nimic, apoi setați wb = ThisWorkbook With wb On Error Reîncepeți Next WorksheetExists2 = (.Sheets (WorksheetName) .Name = WorksheetName) On Error GoTo 0 End With End Function Sub FindSheet () Dacă WorksheetExists2 ("Sheet1"), atunci MsgBox "Sheet1 este în acest registru de lucru" Else MsgBox "Hopa: foaia nu există" Sfârșit dacă Sfârșit Sub 

După rularea macro-ului „FindSheet”, vom primi următoarea casetă de mesaj dacă există foaia:

Dacă foaia nu există, vom primi următoarea casetă de mesaj:

În mod similar, putem avea o buclă IF simplă care verifică dacă foaia există și efectuează anumite acțiuni ulterior.

Subtest () Dim ws Ca foaie de lucru pentru fiecare ws din ThisWorkbook.Worksheets If ws.Name "Main" Then ws.Range ("A1"). Value = ws.Name Altfel ws.Range ("A1"). Value = " PAGINA PRINCIPALĂ DE LOGIN "Termină dacă Următorul este Terminat Sub 

  • Pentru a testa macro-ul de mai sus, trebuie să creăm un nume de foaie „Main”. Această macro este foarte simplă
  • Se parcurge fiecare fișă de lucru din registrul de lucru
  • Apoi verifică dacă numele foii de lucru nu este MAIN
  • Dacă este MAIN, afișează text, cum ar fi „PAGINA PRINCIPALĂ DE LOGIN” în A1 a acelei foi, altfel afișează numele foii în celula A1

  • Acesta este doar un alt mod de a verifica dacă foaia există. Dacă există, efectuați acțiunea A, dacă nu, acțiunea B

Concluzie: Putem identifica dacă există sau nu o foaie în registrul nostru de lucru; putem utiliza UDF sau subrutină conform convenției noastre.

Dacă ți-au plăcut blogurile noastre, împărtășește-le prietenilor tăi de pe Facebook. Și, de asemenea, ne puteți urmări pe Twitter și Facebook.

Ne-ar plăcea să aflăm de la dvs., să ne anunțați cum putem îmbunătăți, completa sau inova munca noastră și să o îmbunătățim. Scrieți-ne pe site-ul de e-mail