Hoe controleer ik of een blad bestaat met vba?
Als u een blad wilt maken, verwijderen, verplaatsen of kopiëren, moet u weten of dit blad bestaat of niet.
Om code te schrijven om te controleren of het blad bestaat of niet, hebt u een lus nodig die door elk blad in de werkmap loopt en overeenkomt met de naam die u heeft opgegeven. Maar het punt is: je kunt hiervoor twee verschillende lussen gebruiken ( For Next en For Each ), en vandaag zullen we beide gebruiken.
In deze zelfstudie bekijken we verschillende manieren om dit te doen. Zorg er dus voor dat het tabblad Ontwikkelaars op uw lint staat en open de VBA-editor om deze code te schrijven.
Controleer of er een blad bestaat in de huidige werkmap
Met deze lus kunt u naar alle bladen in de werkmap verwijzen en ze één voor één doorlopen om de bladnaam te matchen met de naam van het blad waarnaar u wilt zoeken.
Volg deze stappen:
- Declareer eerst een variabele die u voor het blad wilt gebruiken bij het uitvoeren van de lus en sla de naam op van het blad waarnaar u wilt zoeken.
- Schrijf vervolgens een regel code voor een invoervak waarin u de naam invoert van het blad waarnaar u wilt zoeken.
- Start daarna uw lus met het trefwoord For Each. En gebruik de variabele om naar elk werkblad in de werkmap te verwijzen.
- Vanaf hier moet u een IF THEN ELSE -instructie schrijven om de bladnaam te matchen met de naam die u in het invoervak hebt ingevoerd, vervolgens een berichtvenster weergeven als de overeenkomst is gevonden en de procedure afsluiten.
- Aan het einde wordt een berichtvenster weergegeven waarin u wordt geïnformeerd als er geen overeenkomst is gevonden.
Handige links: Een macro uitvoeren – Macrorecorder – Visual Basic Editor – Handboek voor persoonlijke macro’s
Volledige code:
Sub vba_check_sheet() Dim sht As Worksheet Dim shtName As String shtName = InputBox(Prompt:="Enter the sheet name", _ Title:="Search Sheet") For Each sht In ThisWorkbook.Worksheets If sht.Name = shtName Then MsgBox "Yes! " & shtName & " is there in the workbook." Exit Sub End If Next sht MsgBox "No! " & shtName & "is not there in the workbook." End Sub
Laat me uitleggen hoe het werkt: Wanneer u deze code uitvoert, verschijnt er een bericht waarin u de naam moet invoeren van het blad waarnaar u wilt zoeken.
Daarna doorloopt het elk blad om de naam te matchen met de naam die u hebt ingevoerd, en als de naam overeenkomt met een blad, wordt er één bericht weergegeven en een ander bericht als er geen overeenkomst is.
Hier is nog een code om te controleren of een blad bestaat of niet.
Sub vba_check_sheet() Dim sht As Worksheet Dim shtName As String Dim i As Long i = Sheets.Count shtName = InputBox(Prompt:="Enter the sheet name", _ Title:="Search Sheet") For i = 1 To i If Sheets(i).Name = shtName Then MsgBox "Yes! " & shtName & " is there in the workbook." Exit Sub End If Next i MsgBox "No! " & shtName & " is not there in the workbook." End Sub
Deze code maakt gebruik van de FOR NEXT-lus en gebruikt het totale aantal bladen in de werkmap, en op basis daarvan doorloopt u elk blad dat overeenkomt met de naam die u hebt ingevoerd.
Controleer of een blad bestaat in een gesloten werkmap
In de volgende code hebt u een lus die zoekt naar de bladnaam in een gesloten werkmap. Om naar het bestand te verwijzen, hebben we het bestandsadres gebruikt.
Sub vba_check_sheet() Dim wb As Workbook Dim sht As Worksheet Dim shtName As String shtName = InputBox(Prompt:="Enter the sheet name", _ Title:="Search Sheet") Application.ScreenUpdating = False Set wb = Workbooks.Open _ ("C:UsersDellDesktopsample-file.xlsx") For Each sht In wb.Worksheets If sht.Name = shtName Then wb.Close SaveChanges:=True MsgBox "Yes! " & shtName & " is there in the workbook." _ , vbInformation, "Found" Exit Sub End If Next sht Application.ScreenUpdating = False MsgBox "No! " & shtName _ & " is not there in the workbook.", _ vbCritical, "Not Found" End Sub
Wanneer u deze macro uitvoert, wordt het bestand achterin geopend wanneer u schermupdates hebt uitgeschakeld, en zodra alle bladen zijn doorlopen, heeft u de code om schermupdates in te schakelen. ‘scherm.
Opmerking: Zoals u kunt zien, hebben we in het bestandslocatieadres de bestandsextensie, wat betekent dat u de juiste bestandsextensie nodig heeft om ernaar te verwijzen.