Bepaal of een blad bestaat in een werkmap met VBA in Microsoft Excel

Anonim

Er kan een tijd zijn dat u moet controleren of een werkblad dat u hebt gemaakt of verwijderd in een werkmap in een VBA-macro / code, bestaat. We kunnen dit eenvoudig doen met behulp van een functie / macro. Er zijn meerdere manieren om te controleren of een werkblad bestaat.

In dit artikel behandelen we de volgende manieren:

1. Door de gebruiker gedefinieerde functie bekend als UDF
2. Subroutine via berichtvenster

Eerste optie: door gebruiker gedefinieerde functie

De volgende momentopname bevat enkele bladnamen en we zullen controleren of de namen van het blad in kolom A bestaan.

Om te zien of er een specifiek blad bestaat, moeten we de onderstaande stappen volgen om de VB-editor te starten

  • Klik op het tabblad Ontwikkelaar
  • Selecteer in de codegroep Visual Basic

  • Kopieer onderstaande code in de standaard module
Optie Expliciete functie 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 Functie afsluiten End If Next Sht WorksheetExists = False End-functie 

  • Om dit te controleren, gebruiken we UDF in cel B2 als
  • = Werkblad Bestaat (A2)

  • In de bovenstaande afbeelding bestaat "MasterSheet" niet in onze voorbeeldwerkmap; daarom heeft de formule het antwoord gegeven als False

Code Verklaring:

Deze functie neemt de waarde voor "Werkbladnaam" van de macro die andere activiteiten uitvoert. Als u het volgens uw code moet wijzigen, mag dat.

Voor elke Sht In ThisWorkbook.Worksheets en Volgende Sht zijn respectievelijk het begin- en eindgedeelte van de lus.

Vervolgens Als Application.Proper(Sht.Name) = Application.Proper(WorksheetName) Dan

WorksheetExists = True

Controleert of de bladnaam overeenkomt met de bladnaam die door de hoofdmacro is doorgegeven. Als dit het geval is, is WorksheetExists True en kunnen we de functie verlaten. Anders wordt WorksheetExists = False teruggestuurd naar de hoofdmacro. De lus gaat van het 1e blad naar het volgende totdat alle bladen zijn gecontroleerd.

Tweede optie: subroutine via berichtvenster

We kunnen een normale subroutine hebben die een UDF aanroept en als het gespecificeerde blad wordt gevonden, wordt in het berichtvenster 'blad bestaat' weergegeven; indien niet gevonden, verschijnt msgbox, 'blad niet gevonden'.

Ter controle kopiëren we de volgende code in de standaardmodule:

Functie WorksheetExists2(WorksheetName As String, Optioneel wb As Workbook) As Boolean Als wb Niets is, stel dan wb = ThisWorkbook in met wb On Error Hervat volgende WorksheetExists2 = (.Sheets(WorksheetName).Name = WorksheetName) On Error GoTo 0 End With End Functie Sub FindSheet() If WorksheetExists2("Blad1") Dan MsgBox "Blad1 staat in deze werkmap" Anders MsgBox "Oeps: Blad bestaat niet" End If End Sub 

Na het uitvoeren van de macro "FindSheet", krijgen we het volgende berichtvenster als het blad bestaat:

Als Sheet niet bestaat, krijgen we het volgende berichtvenster:

Evenzo kunnen we een eenvoudige IF-lus hebben die controleert of het blad bestaat en daarna bepaalde acties uitvoert.

Sub test() Dim ws als werkblad voor elke ws in dit werkboek.Werkbladen If ws.Name "Hoofd" Dan ws.Range("A1").Value = ws.Name Else ws.Range("A1").Value = " HOOFD INLOGSPAGINA" Einde indien volgende ws Einde Sub 

  • Om de bovenstaande macro te testen, moeten we een bladnaam "Hoofd" maken. Deze macro is heel eenvoudig
  • Het loopt door elk werkblad in de werkmap
  • Vervolgens wordt gecontroleerd of de naam van het werkblad niet MAIN is
  • Als het HOOFD is, wordt tekst weergegeven, zoals "HOOFD AANMELDEN PAGINA" in A1 van dat blad, anders wordt de naam van het blad weergegeven in cel A1

  • Dit is gewoon een andere manier om te controleren of het blad bestaat. Als het bestaat, voer dan actie A uit, zo niet, actie B

Conclusie: We kunnen identificeren of een blad in onze werkmap bestaat of niet; we kunnen UDF of subroutine gebruiken volgens ons gemak.

Als je onze blogs leuk vond, deel deze dan met je vrienden op Facebook. En je kunt ons ook volgen op Twitter en Facebook.

We horen graag van je, laat ons weten hoe we ons werk kunnen verbeteren, aanvullen of vernieuwen en het voor jou beter kunnen maken. Schrijf ons op de e-mailsite