Hinzufügen eines neuen Arbeitsblatts zu einer Arbeitsmappe mit VBA.
Die Methode Add
der Sammlung Workheets
wird verwendet, um ein neues Arbeitsblatt zu erstellen.
Das neue Arbeitsblatt wird das aktive Blatt.
Alternativ können Sie auch die Sammlung Sheets
verwenden, die das gleiche Ergebnis liefert.
In ähnlicher Weise können Sie Charts.Add
verwenden, um ein Diagramm hinzuzufügen.
In seiner einfachsten Form wird er so aufgerufen:
ActiveWorkbook.Worksheets.Add 'abreviated: Worksheets.Add or Sheets.Add
ActiveWorkbook
Methode zur Bereitstellung der übergeordneten Workbook
Objekt, dessen Sheets
Sammlung verwendet wird.
Dim wb As Workbook
: Set wb = ActiveWorkbook
, sehr wahrscheinlich mit einem anderen Objektzuweisungsausdruck.
Das Sammlungsobjekt Sheets
in der obigen Abbildung stammt aus dem Verfahren Workbook Worksheets
.
Die Prozedur gibt einen Wert vom Typ Worksheet zurück, der optional der Variablen ws
zugewiesen wird.
Dim ws As Worksheet
Set ws = ActiveWorkbook.Worksheets.Add(Type:=xlWorksheet)
With
Anweisungsblock platziert. Die Verwendung der With-Syntax macht die Codestruktur übersichtlicher und hat Leistungsvorteile.
Wenn Vor und Nach weggelassen werden, wird das neue Blatt vor dem aktiven Blatt eingefügt.
Vorher / Nachher: wo das neue Blatt eingefügt werden soll
Verwenden Sie als Argument Before
oder After
ein Blattobjekt, um anzugeben, wo das neue Blatt hinzugefügt werden soll.
Da Sie ein Blatt aus derselben Arbeitsmappe angeben müssen, zu der Sie etwas hinzufügen wollen, ist es sinnvoll, eine Variable Workbook
zu verwenden: wb
Ein neues Blatt am Anfang der Arbeitsmappe hinzufügen
Dim wb As Workbook
Set wb = ActiveWorkbook
wb.Sheets.Add Before:=wb.Sheets(1)
wb.Sheets(1)
ist der Weg, um das erste Blatt in der Arbeitsmappe zu erhalten - wo Sie Before
einfügen möchten.
Ein neues Blatt nach dem letzten hinzufügen
Sie können den folgenden Code verwenden, um ein neues Blatt am Ende einer Arbeitsmappe hinzuzufügen.
Dim wb As Workbook
Set wb = ActiveWorkbook
wb.Sheets.Add After:=wb.Sheets(wb.Sheets.Count)
wb.Sheets.Count
gibt Ihnen die Indexnummer des letzten Blatts in der Arbeitsmappe - wo Sie Nach
einfügen möchten
.
Count (Zählen Sie)
Die Anzahl der hinzuzufügenden Blätter.
ActiveWorkbook.Worksheets.Add(Count:=1)
Das Argument Typ: Worksheet, Chart oder Template (Arbeitsblatt, Diagramm oder Vorlage)
Wenn nichts angegeben wird, wird ein Arbeitsblatt eingefügt (außer natürlich im Fall von Charts.Add
).
ActiveWorkbook.Sheets.Add 'add a Worksheet
ActiveWorkbook.Sheets.Add(Type:=xlChart) 'a chart
Worksheets.Add Type:=xlChart
gibt
Ein neues Blatt aus einer Vorlage erstellen
Die Möglichkeit, eine Datei als Quelle für die hinzuzufügenden Blätter zu verwenden, ist leistungsstark. Sie erlaubt es Ihnen:
- ein vollständiges formatiertes Layout liefern, das möglicherweise mehrere Blätter umfasst - eine Vorlage
- Daten aus einer Quelldatei importieren
Die Quelldatei muss keine Excel-Vorlage sein, jeder Dateityp, der mit Excel geöffnet werden kann, genügt, z.B.
Sheets.Add Type:="C:\Code VBA\Demo\Layout.xlsx"
Sheets.Add Type:="C:\Code VBA\Demo\Data240614.csv"
Fügen Sie ein neues Blatt hinzu und nennen Sie es
Erstellen Sie zunächst das neue Blatt und benennen Sie es dann um.
Dim ws As Worksheet
Set ws = ActiveWorkbook.Worksheets.Add
Dim strName As String: strName = "new name"
ws.Name = strName
Ein neues Blatt mit Namen erstellen, falls nicht vorhanden
Prüfen Sie zunächst, ob das Blatt existiert. Wenn nicht, können Sie es erstellen.
Dim wb As Workbook
Set wb = ActiveWorkbook
Dim strSheetName As String: strSheetName = "the name"
If Not SheetExists(SheetName:=strSheetName, Workbook:=wb) Then
Set ws = ActiveWorkbook.Worksheets.Add
ws.Name = strSheetName
End If
SheetExists
ist in der Codebibliothek enthalten, die in Code VBA enthalten ist
und wäre zu finden unter Menü Object » wb » Fragments » .
Erstellen Sie ein neues Blatt mit dem heutigen Datum
Verwenden Sie die Format- oder die FormatDateTime-Funktion, um auf einfache Weise die erforderliche Namenszeichenfolge zu erhalten.
Dim ws As Worksheet
Set ws = ActiveWorkbook.Worksheets.Add
Dim strName As String: strName = "new name"
ws.Name = Format(Date, "yymmdd")
Ein neues Blatt auf der Grundlage eines Zellwerts erstellen
Der folgende Code zeigt, wie das neue Blatt seinen Wert aus einer Zelle eines bereits vorhandenen Arbeitsblatts erhält.
Dim wb As Workbook
Set wb = ActiveWorkbook
Dim wsWithValue As Worksheet
Dim strSheet As String: strSheet = "Sheet1"
Set wsWithValue = wb.Sheets(Index:=strSheet)
Dim ws As Worksheet
Set ws = wb.Worksheets.Add
Dim strRange As String: strRange = "A1"
Dim rng As Range
Set rng = wsWithValue.Range(Cell1:=strRange)
Dim strName As String: strName = rng.Value
ws.Name = strName
strRange
-
aber hier habe ich mich dafür entschieden, dass alle Schritte so explizit wie möglich sind, was den Code auch am vielseitigsten und erweiterbarsten macht.
Ein neues Blatt erstellen und Daten kopieren
Schließlich werden Sie höchstwahrscheinlich einige Daten in das neue Arbeitsblatt einfügen. Im Folgenden gehe ich davon aus, dass die Daten aus einer anderen Datenquelle stammen, die zuerst geöffnet wurde
Dim wbDestination As Workbook
Set wbDestination = ActiveWorkbook
Dim wsDestination As Worksheet
'add the new worksheet
Set wsDestination = wbDestination.Worksheets.Add
Dim strRangeDestination As String: strRangeDestination = "B2"
Dim rngDestination As Range
Set rngDestination = wsDestination.Range(Cell1:=strRangeDestination)
'get acces to the source
Dim wbSource As Workbook
Set wbSource = Workbooks.Open(Filename:="C:\Code VBA\Demo\Data.xlsx")
Dim wsSource As Worksheet
Dim strSheetSource As String: strSheetSource = "Sheet1"
Set wsSource = wbSource.Sheets(Index:=strSheetSource)
Dim strRangeSource As String: strRangeSource = "A1"
Dim rngSource As Range
Set rngSource = wsSource.Range(Cell1:=strRangeSource)
'copy the value
rngDestination.Value = rngSource.Value
Autor: Mark Uildriks Referenz: Sheets.Add(Excel) | Microsoft Learn