VBA - Een werkblad aan een werkmap toevoegen

VBA - Een werkblad aan een werkmap toevoegen

Invoering

Afhankelijk van het resultaat dat u wilt bereiken, kunt u het volgende gebruiken:
  • Kopieer methode => Voor een kopie van een bestaand blad
  • Methode toevoegen => Een nieuw leeg blad toevoegen aan uw werkmap.

U moet ook controleren of de naam van het nieuwe blad compatibel is. Dat wil zeggen, de naam van het blad moet niet identiek zijn aan een bestaand blad of verboden tekens bevatten. In beide gevallen moeten de verificatiemethoden hetzelfde zijn.

Kopieer methode

Kopieer een blad. De gegevens en het formaat van het nieuwe blad zullen identiek zijn aan het bronblad.

Syntaxis

expressie. Kopie ( voor, na )

Expression kan een werk blad of werkblad zijn.

De parameters Before en After zijn optioneel. U kunt slechts één van deze twee parameters opgeven. Ze zijn van het type Variant en kunnen ofwel het plaatje vóór of na het exemplaar dat u wilt kopiëren lokaliseren. Als de parameter wordt weggelaten, wordt het werkblad automatisch naar een nieuwe werkmap gekopieerd.

Wat gebeurt er dan?

Bij het maken van een nieuw blad met de methode Kopiëren:
  • Het blad wordt op de gewenste locatie gemaakt (vóór of na een ander blad in de werkmap)
  • Het wordt hernoemd op basis van de naam van het bronblad. Voorbeeld: Blad1 => Blad1 (2)
  • Het is identiek aan het gekopieerde blad.
  • Het wordt het actieve blad. Als het werkblad naar een nieuwe werkmap wordt gekopieerd, wordt dit de actieve werkmap.

Voorbeelden van gebruik

Kopieer de "Sheet1" na "Sheet3"

 Werkbladen ("Sheet1"). Copy After: = Worksheets ("Sheet3") 

Kopieer de "Sheet4" voor de "Sheet2":

 Spreadsheets ("Sheet4"). Copy Before: = Sheets ("Sheet2") 

Kopieer het "herhalingenblad" in een nieuwe werkmap

 Werkbladen ( "samenvatting"). Copy 

Kopieer het blad geïndexeerd als 1 op de laatste positie van de werkmap, ongeacht de naam van het laatste blad:

 Sheets (1). Copy After: = Sheets (Sheets.Count) 

Kopieer het blad geïndexeerd als 10 aan het begin van de werkmap, ongeacht de naam van het laatste blad:

 Platen (10). Kopie vooraf: = vellen (1) 

U wilt meerdere bladen van uw actieve werkmap kopiëren naar een nieuwe werkmap:

 Spreadsheets (Array ("Sheet1", "Sheet3", "Sheet5")). Kopiëren 

De methode toevoegen

Creëert een nieuwe spreadsheet (afbeelding of macro). Het nieuwe werkblad wordt het actieve blad.

Dit nieuwe blad bevat geen gegevens of opmaak.

Syntaxis

expressie. Toevoegen ( voor, na, tellen, typen )

Expression kan een werk blad of werkblad zijn.

De parameters Before, After, Count en type zijn optioneel.

Either and Before - U kunt slechts één van deze parameters opgeven. Ze zijn van het type Variant en kunnen ofwel het plaatje vóór of na het exemplaar dat u wilt kopiëren lokaliseren.

De parameter Telling is ook een variant. Het staat voor het aantal vellen dat u wilt toevoegen.

De parameter Type vertegenwoordigt het type blad dat u wilt toevoegen.

  • xlWorkSheet - voegt een werkblad toe
  • xlChart - voegt een grafiekblad toe
  • xlExcel4MacroSheet - voegt een macroblad toe (Excel4)
  • xlExcel4IntlMacroSheet - voeg een macroblad toe
  • xlDialogSheet - voegt een dialoogvenster toe.

NB: Vergeet niet om uw parameters te hernoemen of de syntaxis zal de onderstaande fout retourneren:

 ActiveWorkbook.Sheets.Add Before: = Worksheets (Worksheets.Count),, 1, xlChart 

Voorbeelden van gebruik

Plaats een blad na het laatste blad in de werkmap:

 Sheets.Voeg toe aan: = werkbladen (Worksheets.Count) 

Voegt drie vellen toe aan de "eerste positie" van de actieve werkmap:

 ActiveWorkbook.Sheets.Add Before: = Worksheets (1), Count: = 3 

Voegt een grafiekblad toe in een werkmap met de naam "Wbk18" (Open!) Na het blad met de naam "Sheet4"

 WorkBooks ("Wbk18"). Sheets.Voeg toe aan: = werkbladen ("Sheet4"), Type: = xlChart 

Het blad testen

Controleer of het blad al bestaat in de werkmap

 'Test si la feuille existe déjà Functie Feuil_Exist (strWbk As String, strWsh As String) As Boolean' Gestionnaire d'erreur On Error Resume Next '"Test" Feuil_Exist = (Workbooks (strWbk) .Sheets (strWsh) .Name = strWsh) Eindfunctie 

Controleer of de bestandsnaam verboden tekens bevat

 'Test si la chaine contient un caractère à éviter Functie Valid_Name (strName As String, strChr As String) As Boolean Dim i As Byte, Tb_Car () As String, strProhib As String strProhib = "/ \: *?" "|" 'Liste des caractères à éviter Tb_Car = Split (StrConv (strProhib, vbUnicode), Chr $ (0))' Boucle sur tous les caractères à éviter 'Opmerking: le -1 est dû au Split de la chaine par le séparateur Chr (0 ) 'En effet, la chaine se terminant par un Chr (0) il convient d'exclure ce dernier caractère For i = LBound (Tb_Car) To UBound (Tb_Car) - 1' Test si la chaîne contient un caractère prohibé If InStr (strName, Tb_Car (i))> 0 Dan 'Si oui: Return False Valid_Name = False' ET Retourne le caractère prohibé strChr = Tb_Car (i) Exit Functie End If Next i 'Si OK: Return True Valid_Name = Echte eindfunctie 

De verificatiefunctie oproepen

De code is hetzelfde voor zowel de methode Kopiëren of Toevoegen.
 Sub Principale () Dim strNewName As String, strCara As String strNewName = "NewSheet" If Valid_Name (strNewName, strCara) = False Then MsgBox "Le nom:" & strNewName & "est invalide." & vbCrLf & _ "Un nom de feuille ne peut pas contenir le caractère:" & strCara, vbCritical Exit Sub End If If Feuil_Exist (ThisWorkbook.Name, strNewName) = True Then MsgBox "Le nom:" & strNewName & "est invalide. " & vbCrLf & _ "Ce nom de feuille est déjà utilisé dans ce classeur.", vbCritical Exit Sub End If ThisWorkbook.Sheets.Add 'Ou: ThisWorkbook.Sheets ("Feuil1"). Copy After: = Sheets (Sheets.Count) ActiveSheet.Name = strNewName End Sub 

Enkele handige tips voor Office 2013

Office 2013 brengt twee complementaire methoden op de eerder geziene methoden:
  • Kopieer een bereik van cellen naar een blad en meerdere bladen
  • De Add2-methode voor verzamelingen van diagramobjecten.

Kopieer een celbereik met de FillAcrossSheets-methode

Deze methode is alleen beschikbaar voor Office 2013. U wilt het cellenbereik kopiëren van "Blad1" naar "Blad3", "Blad5" en "Blad7".

 Sheets = Array ("Sheet3", "Sheet5", "Sheet7") Sheets (Sheets) .FillAcrossSheets Worksheets ("Sheet1"). Range ("A1: C5") 

De parameters van deze methode zijn:

  • Bereik: vereist
  • Type: optioneel
  • xlFillWithAll: de inhoud en indelingen kopiëren.
  • xlFillWithContents: de inhoud kopiëren.
  • xlFillWithFormats: indelingen kopiëren.

De Add2-methode

Deze methode is alleen beschikbaar voor Office 2013. Deze methode is van toepassing op verzamelingen diagramobjecten en retourneert een " Runtime " -fout bij gebruik met de objecten Sheets en WorkSheets. Geen info meer op Microsoft.com behalve de syntaxis:

expressie. Toevoegen ( Before, After, Count, NewLayout )

Expression representeert een Worksheet-object

De parameters zijn identiek aan de methode Toevoegen, vervang eenvoudig de parameter Type door NewLayout. Als NewLayout is ingesteld op True, wordt de afbeelding ingevoegd met behulp van de nieuwe regels.

Vorige Artikel Volgende Artikel

Top Tips