Determina se esiste un foglio in una cartella di lavoro utilizzando VBA in Microsoft Excel

Anonim

Potrebbe esserci un momento in cui devi verificare se esiste un foglio di lavoro, che hai creato o eliminato in una cartella di lavoro in una macro/codice VBA. Possiamo farlo facilmente usando una funzione/macro. Esistono diversi modi per verificare se esiste un foglio di lavoro.

Tratteremo i seguenti modi in questo articolo:

1. Funzione definita dall'utente nota come UDF
2. Sottoroutine tramite la finestra di messaggio

Prima opzione: funzione definita dall'utente

La seguente istantanea contiene alcuni nomi di fogli e controlleremo se i nomi del foglio nella colonna A esistono.

Per scoprire se esiste un foglio specifico, dobbiamo seguire i passaggi seguenti per avviare l'editor VB

  • Fare clic sulla scheda Sviluppatore
  • Dal gruppo Codice seleziona Visual Basic

  • Copia il codice sottostante nel modulo standard
Opzione Funzione esplicita WorksheetExists(ByVal WorksheetName As String) As Boolean Dim Sht As Worksheet For Each Sht In ThisWorkbook.Worksheets If Application.Proper(Sht.Name) = Application.Proper(WorksheetName) Then WorksheetExists = True Exit Function End If Next Sht WorksheetExists = Funzione di falsa fine 

  • Per verificare, useremo UDF nella cella B2 come
  • = Foglio di lavoro esiste (A2)

  • Nell'immagine sopra, "MasterSheet" non esiste nella nostra cartella di lavoro di esempio; quindi, la formula ha dato risposta come False

Spiegazione del codice:

Questa funzione prende il valore per “WorksheetName” dalla macro che esegue altre attività. Se hai bisogno di cambiarlo secondo il tuo codice, puoi farlo.

Per ogni merda in questa cartella di lavoro. Fogli di lavoro e Successivo Sht sono rispettivamente le parti iniziale e finale del ciclo.

Quindi Se Application.Proper(Sht.Name) = Application.Proper(WorksheetName) Then

WorksheetExists = True

Controlla se il nome del foglio corrisponde al nome del foglio passato dalla macro principale. In caso affermativo, WorksheetExists è True e possiamo uscire dalla funzione. In caso contrario, WorksheetExists = False viene restituito alla macro principale. Il ciclo va dal 1° foglio al successivo fino a quando tutti i fogli sono stati controllati.

Seconda opzione: sottoroutine tramite la finestra di messaggio

Possiamo avere una normale subroutine che sta chiamando una UDF e, se viene trovato il foglio specificato, la finestra di messaggio visualizzerà, "foglio esistente"; se non viene trovato, viene visualizzato msgbox, "foglio non trovato".

Per verificare, copieremo il seguente codice nel modulo standard:

Function WorksheetExists2(WorksheetName As String, Optional wb As Workbook) As Boolean If wb Is Nothing Then Set wb = ThisWorkbook With wb On Error Resume Next WorksheetExists2 = (.Sheets(WorksheetName).Name = WorksheetName) On Error GoTo 0 End With End Function Sub FindSheet() If WorksheetExists2("Sheet1") Then MsgBox "Sheet1 is in this workbook" Else MsgBox "Spiacenti: il foglio non esiste" End If End Sub 

Dopo aver eseguito la macro "FindSheet", otterremo la seguente finestra di messaggio se il foglio esiste:

Se Sheet non esiste, otterremo la seguente finestra di messaggio:

Allo stesso modo, possiamo avere un semplice ciclo IF che controlla se il foglio esiste ed esegue successivamente determinate azioni.

Sub test() Dim ws come foglio di lavoro per ogni ws in ThisWorkbook.Worksheets If ws.Name "Main" Then ws.Range("A1").Value = ws.Name Else ws.Range("A1").Value = " PAGINA DI ACCESSO PRINCIPALE" End If Next ws End Sub 

  • Per testare la macro sopra, dobbiamo creare un nome di foglio "Principale". Questa macro è molto semplice
  • Passa attraverso ogni foglio di lavoro nella cartella di lavoro
  • Quindi controlla se il nome del foglio di lavoro non è MAIN
  • Se è PRINCIPALE, visualizza il testo, come "PAGINA DI ACCESSO PRINCIPALE" in A1 di quel foglio, altrimenti visualizza il nome del foglio nella cella A1

  • Questo è solo un altro modo per verificare se il foglio esiste. Se esiste, eseguire l'azione A, in caso contrario, l'azione B

Conclusione: Possiamo identificare se un foglio esiste o meno nella nostra cartella di lavoro; possiamo usare UDF o subroutine secondo la nostra convenienza.

Se ti è piaciuto il nostro blog, condividilo con i tuoi amici su Facebook. E puoi anche seguirci su Twitter e Facebook.

Ci piacerebbe avere tue notizie, facci sapere come possiamo migliorare, completare o innovare il nostro lavoro e renderlo migliore per te. Scrivici al sito di posta elettronica