Determinare se un foglio esiste in una cartella di lavoro utilizzando VBA in Microsoft Excel
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:
{vuoto} 1. Funzione definita dall’utente nota come UDF 2. Sottoprogramma tramite finestra di messaggio
Prima opzione: Funzione definita dall’utente
La seguente istantanea contiene alcuni nomi di fogli e verificheremo se i nomi dei fogli nella colonna A esistono.
Per scoprire se esiste un foglio specifico, è necessario seguire i passaggi seguenti per avviare l’editor VB Fare clic sulla scheda Sviluppatore Dal gruppo Codice selezionare Visual Basic
-
Copia il codice seguente nel modulo standard
Option Explicit Function 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 = False End Function
Per controllare, useremo UDF nella cella B2 come = WorksheetExists (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.
For Each Sht In ThisWorkbook.Worksheets e Next Sht sono rispettivamente l’inizio e la fine del ciclo.
Quindi If 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.
SecondOption: routine secondaria tramite finestra di messaggio
Possiamo avere una normale subroutine che chiama una UDF e, se viene trovato il foglio specificato, la finestra di messaggio mostrerà “foglio esistente”; se non 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 "Oops: Sheet does not exist" End If End Sub
Dopo aver eseguito la macro “FindSheet”, otterremo la seguente finestra di messaggio se il foglio esiste:
Se il foglio non esiste, verrà visualizzato il seguente messaggio:
Allo stesso modo, possiamo avere un semplice ciclo IF che controlla se il foglio esiste ed esegue determinate azioni in seguito.
Sub test() Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets If ws.Name <> "Main" Then ws.Range("A1").Value = ws.Name Else ws.Range("A1").Value = "MAIN LOGIN PAGE" 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 è PRINCIPALE Se è PRINCIPALE, visualizza il testo, come “PAGINA DI ACCESSO PRINCIPALE” in A1 di quel foglio, altrimenti visualizza il nome di il 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 i nostri blog ti sono piaciuti, condividilo con i tuoi amici su Facebook. E anche tu puoi seguirci su Twitter e Facebook.
_ Ci piacerebbe sentire la tua opinione, facci sapere come possiamo migliorare, integrare o innovare il nostro lavoro e renderlo migliore per te. Scrivici a [email protected]_