Hoe maak je een nieuw blad met vba-code?
Zodra u VBA begint te leren, is een van de coolste dingen die u kunt doen het schrijven van VBA-code om een nieuw werkblad in een werkmap in te voegen.
Wel, er is al een sneltoets om een nieuw werkblad in te voegen of je kunt ook de normale optie gebruiken, maar het voordeel van het gebruik van VBA-code is dat je met één klik meerdere werkbladen kunt toevoegen en ook kunt definiëren waar je wilt toevoegen Het.
Hiervoor moet u de methode Sheets.Add gebruiken, en in dit artikel leren we hoe u deze kunt gebruiken om een of meer werkbladen aan een werkmap toe te voegen.
Spreadsheets.Add-methode
Sheets.Add ([Before], [After], [Count], [Type])
- Voor: om een nieuw blad vóór een blad toe te voegen.
- Na: Om het nieuwe blad vóór een blad toe te voegen.
- Aantal: aantal toe te voegen vellen.
- Type: Type blad dat u wilt toevoegen ( LINK )
Schrijf VBA-code om een nieuw blad aan een werkmap toe te voegen
Open de Visual Basic-editor en volg deze stappen.
- Eerst moet u de Spreadsheets.Add-methode invoeren.
- Vervolgens moet u definiëren waar u het nieuwe blad wilt toevoegen (voor of na).
- Het volgende is het invoeren van het aantal werkbladen.
- Uiteindelijk het type vel.
Verschillende manieren om nieuwe werkbladen aan een werkmap toe te voegen met behulp van VBA-code
Hieronder vindt u verschillende manieren om een nieuw blad aan een werkmap toe te voegen:
1. Voeg een enkel vel toe
Om één blad toe te voegen, kunt u de onderstaande code gebruiken, waarbij u geen argumenten heeft opgegeven.
Sub SheetAddExample1() ActiveWorkbook.Sheets.Add End Sub
Deze code vertelt Excel om een blad toe te voegen aan de actieve werkmap, maar aangezien u geen argumenten heeft, worden de standaardwaarden gebruikt en wordt een werkblad (xlWorksheet) toegevoegd vóór het actieve blad.
Hier is een andere manier om dit te schrijven, zie de onderstaande code.
Sub SheetAddExample2() Sheets.Add End Sub
Omdat u zich al in de actieve werkmap bevindt, kunt u ook de onderstaande code gebruiken. Hij doet hetzelfde.
2. Voeg meerdere bladen toe
Om meerdere bladen tegelijk toe te voegen, stelt u eenvoudigweg het COUNT-argument in met het aantal bladen dat u wilt toevoegen.
Sub AddSheets3() Sheets.Add Count:=5 End Sub
Het aantal bladen dat u instelt is nu 5, dus wanneer u deze code uitvoert, worden de vijf nieuwe bladen onmiddellijk aan de werkmap toegevoegd.
3. Voeg een blad met een naam toe
Als u het blad een andere naam wilt geven nadat u het hebt toegevoegd, kunt u de volgende code gebruiken:
Sub AddNewSheetswithNameExample1() Sheets.Add.Name = "myNewSHeet" End Sub
In de bovenstaande code hebben we het object name ( LINK ) gebruikt waarmee u de naam van een blad kunt opgeven.
4. Voeg een blad toe met een naam uit een cel
U kunt ook de waarde uit een cel halen die u als bladnaam wilt gebruiken.
Sub AddNewSheetswithNameExample2() Sheets.Add.Name = Range("A1") End Sub
In de bovenstaande code wordt cel A1 gebruikt om de naam van het nieuwe blad op te halen.
5. Voeg een blad toe na/voor een specifiek blad
Omdat deze argumenten al aanwezig zijn in Spreadsheets.Add, kunt u het blad opgeven om ervoor of erna een nieuw blad toe te voegen.
Sub AddSheetsExample5() Sheets.Add Before:=Worksheets("mySheet") Sheets.Add After:=Worksheets("mySheet") End Sub
In de bovenstaande code heb je nu twee regels code die je voor en na een argument in de Sheet.Add-methode hebt gebruikt. Dus wanneer u deze code uitvoert, worden er twee bladen toegevoegd, één vóór en één na “mySheet”.
6. Voeg aan het begin een nieuw blad toe
Met behulp van het argument ‘vóór gebruik’ kunt u ook een blad toevoegen aan het begin van de bladen in de werkmap.
Wat we dus eigenlijk gaan doen is het bladnummer opgeven in plaats van de bladnaam.
Sub AddSheetsExample6() Sheets.Add Before:=Sheets(1) End Sub
In de bovenstaande code heb je bladnummer (1) gebruikt, dat VBA vertelt het blad toe te voegen vóór het blad dat op de eerste positie in alle werkbladen staat. Op deze manier wordt het nieuwe blad altijd aan het begin toegevoegd.
7. Voeg aan het einde een nieuw blad toe (na het laatste blad)
Als u aan het einde een nieuw blad wilt toevoegen, moet u de code op een andere manier schrijven. Hiervoor moet u dus weten hoeveel bladen er in de werkmap staan, zodat u aan het einde een nieuw blad kunt toevoegen.
Sub AddSheetsExample8() Sheets.Add After:=Sheets(Sheets.Count) End Sub
In de bovenstaande code retourneert Sheet.Count het aantal bladen dat u in de werkmap heeft, en aangezien u het argument after instelt, wordt het nieuwe blad toegevoegd na het laatste blad in de werkmap.
8. Voeg meerdere bladen toe en gebruik bereiknamen
De volgende code telt regels in het bereik A1:A7. Daarna wordt het herhaald om bladen toe te voegen op basis van het aantal bereik en worden de bereikwaarden gebruikt om het blad een naam te geven bij het toevoegen ervan.
Sub AddSheetsExample9() Dim sheets_count As Integer Dim sheet_name As String Dim i As Integer sheet_count = Range("A1:A7").Rows.Count For i = 1 To sheet_count sheet_name = Sheets("mySheet").Range("A1:A7").Cells(i, 1).Value Worksheets.Add().Name = sheet_name Next i End Sub
Maar met de bovenstaande code is het mogelijk dat de naam van het blad dat u wilt toevoegen al bestaat of dat u een lege cel in het naambereik heeft.
In dit geval moet u een code schrijven die kan controleren of het blad met dezelfde naam al bestaat of niet en of de cel waaruit u de bladnaam wilt halen leeg is of niet.
Als alleen aan beide voorwaarden wordt voldaan, moet een nieuw blad worden toegevoegd. Laat ik het in twee stappen uiteenzetten:
Allereerst moet u een door de gebruiker gedefinieerde Excel-functie schrijven om te controleren of een blad met dezelfde naam al bestaat of niet.
Function SheetCheck(sheet_name As String) As Boolean Dim ws As Worksheet SheetCheck = False For Each ws In ThisWorkbook.Worksheets If ws.Name = sheet_name Then SheetCheck = True End If Next End Function
Ten tweede moet je wat code schrijven met deze functie en deze code moet ook controleren of de naamcel leeg is of niet.
Sub AddMultipleSheet2() Dim sheets_count As Integer Dim sheet_name As String Dim i As Integer sheet_count = Range("A1:A7").Rows.Count For i = 1 To sheet_count sheet_name = Sheets("mySheet").Range("A1:A10").Cells(i, 1).Value If SheetCheck(sheet_name) = False And sheet_name <> "" Then Worksheets.Add().Name = sheet_name End If Next i End Sub
Nu heb je in de bovenstaande code de VBA IF-instructie gebruikt en in deze instructie heb je een bladcontrolefunctie die de bladnaam controleert en dan heb je een voorwaarde om te controleren of de naamcel een lege waarde heeft.