Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Sheets.Add wo ist der Fehler ?

Forumthread: Sheets.Add wo ist der Fehler ?

Sheets.Add wo ist der Fehler ?
31.10.2016 14:02:16
Max2
Hallo Leute
habe eine kleine UserForm mit 3 Buttons und einer Combobox.
Mit dem ersten Button wählt man einen Ordner aus, in der Combobox stehen dann alle CSV-Dateien, die in dem ausgewählten Ordner vorhanden sind, drinnen.
Der zweite Button gibt einem nur zwei Inputboxen die den Variablen k und l einen Wert geben.
Der dritte Button soll dann die Ausgewählte Datei öffnen und ihren Inhalt in die Datei mit dem Makro Kopieren
Code des dritten Buttons sieht wie folgt aus:

Set WbkEinfügen = ThisWorkbook
Workbooks.OpenText Filename:=strDateiName, DataType:=xlDelimited, _
TextQualifier:=xlTextQualifierDoubleQuote, Comma:=True, _
DecimalSeparator:=".", ThousandsSeparator:=" "
Set WbkKopieren = ActiveWorkbook
WbkKopieren.ActiveSheet.Range("A:ZZ").Copy
WbkEinfügen.Sheets.Add After:=Worksheets(Worksheets.Count).Name = "Scan" & "_" & k
    Set WksÜbersicht = WbkEinfügen.Sheets("Scan" & "_" & k)
WksÜbersicht.Range("A1").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End Sub
Der Fett markierte Teil des Codes gibt mir den Fehler 1004 "Die Methode Add für das Objekt Sheets ist fehlgeschlagen" zurück.
WbkEinfügen ist ja ThisWorkbook also die Datei mit der UserForm und WbkKopieren ist die geöffnete csv-Datei.
Wo hab ich den Fehler gemacht ?
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sheets.Add wo ist der Fehler ?
31.10.2016 14:20:22
Daniel
HI
naja, du willst zwar das Sheet im Workbook "wbkEinfügen" einfügen, gibst aber als Ziel (After) das letzte Sheet in der gerade aktiven Datei an und die ist eine ganz andere, nämlich "wbkKopieren"
das hier das gleiche Workbook verwendet werden muss, sollte logisch sein:
ich würde das so programmieren:
set wksÜbersicht = wbkEinfügen.Sheets.Add(After:=wbkEinfügen.Sheets(wbkEinfügen.Sheets.Count))
wksÜbersicht.Name = "Scan_" & k
wksÜbersicht.Range("A1").Pastespecial xlpastevalues

gruß Daniel
Anzeige
AW: Sheets.Add wo ist der Fehler ?
31.10.2016 14:59:47
Max2
Danke für deine Hilfe, aber das war gar nicht das Problem.
Ich hatte vor "After:=" und nach ".Count)" die Klammer vergessen, deshalb ging es nicht.
Ohne deinen Code hätte ich es wahrscheinlich ewig nicht gesehen...
So geht das ohne Probleme:
WbkEinfügen.Sheets.Add(After:=Worksheets(Worksheets.Count)).Name = "Scan" & "_" & k

Anzeige
AW: Sheets.Add
31.10.2016 16:41:43
snb
So geht's einfacher:
Sub M_snb()
With Application.FileDialog(1)
.InitialFileName = "*.csv"
If .Show Then ThisWorkbook.Sheets.Add(, Sheets(Sheets.Count), , .SelectedItems(1)).Name = " _
scan_" & ThisWorkbook.Sheets.Count + 1
End With
End Sub

Gelöst
31.10.2016 15:00:03
Max2
.
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Fehlerbehebung bei Sheets.Add in Excel VBA


Schritt-für-Schritt-Anleitung

Um ein neues Arbeitsblatt in Excel VBA hinzuzufügen, kannst du die Methode Sheets.Add verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne die Visual Basic for Applications (VBA) Umgebung:

    • Drücke Alt + F11 in Excel.
  2. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf VBAProject (DeineDatei.xlsm), wähle Einfügen und dann Modul.
  3. Kopiere und füge den folgenden Code ein:

    Sub NeuesBlattHinzufügen()
       Dim wbkEinfügen As Workbook
       Set wbkEinfügen = ThisWorkbook
       wbkEinfügen.Sheets.Add After:=wbkEinfügen.Sheets(wbkEinfügen.Sheets.Count)
       wbkEinfügen.Sheets(wbkEinfügen.Sheets.Count).Name = "Neues Blatt"
    End Sub
  4. Führe das Makro aus:

    • Drücke F5 oder wähle Run im Menü.

Mit diesem Code wird ein neues Arbeitsblatt nach dem letzten vorhanden Blatt hinzugefügt.


Häufige Fehler und Lösungen

Ein häufiger Fehler beim Arbeiten mit Sheets.Add ist der Laufzeitfehler 1004. Hier sind einige Lösungen:

  • Problem: "Die Methode Add für das Objekt Sheets ist fehlgeschlagen."

    Lösung: Achte darauf, dass du das richtige Workbook verwendest. Der Code sollte wie folgt aussehen:

    Set wksÜbersicht = wbkEinfügen.Sheets.Add(After:=wbkEinfügen.Sheets(wbkEinfügen.Sheets.Count))
    wksÜbersicht.Name = "Scan_" & k
  • Problem: Fehlende Klammern bei der Sheets.Add Methode.

    Lösung: Stelle sicher, dass du die Klammer nach den Argumenten der Methode nicht vergisst.


Alternative Methoden

Es gibt verschiedene Möglichkeiten, ein neues Blatt hinzuzufügen. Eine einfache Methode ist die Verwendung des With-Blocks:

Sub NeuesBlattMitDialog()
    With Application.FileDialog(1)
        .InitialFileName = "*.csv"
        If .Show Then ThisWorkbook.Sheets.Add(, ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count), , .SelectedItems(1)).Name = "Scan_" & ThisWorkbook.Sheets.Count + 1
    End With
End Sub

Diese Methode ermöglicht es dir, ein neues Blatt mit einem benutzerdefinierten Namen zu erstellen, basierend auf dem ausgewählten CSV-Datei-Dialog.


Praktische Beispiele

Hier sind einige Anwendungsbeispiele für sheets.add in Excel VBA:

  1. Ein Blatt nach dem letzten Blatt hinzufügen:

    ThisWorkbook.Sheets.Add After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
  2. Ein Blatt vor dem aktiven Blatt hinzufügen:

    ThisWorkbook.Sheets.Add Before:=ActiveSheet
  3. Ein Blatt mit einem spezifischen Namen hinzufügen:

    Dim neuesBlatt As Worksheet
    Set neuesBlatt = ThisWorkbook.Sheets.Add
    neuesBlatt.Name = "Neues Blatt"

Tipps für Profis

  • Verwendung von Variablen: Verwende Variablen für die Arbeitsblätter, um den Code lesbarer und wartbarer zu gestalten.

  • Fehlerbehandlung: Implementiere Fehlerbehandlungsroutinen, um mit unerwarteten Situationen umzugehen:

    On Error Resume Next
    ThisWorkbook.Sheets.Add After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
    If Err.Number <> 0 Then
      MsgBox "Fehler beim Hinzufügen des Blattes: " & Err.Description
    End If
    On Error GoTo 0
  • Optimierung des Codes: Überlege, ob du Application.ScreenUpdating auf False setzen möchtest, um die Ausführung des Codes zu beschleunigen.


FAQ: Häufige Fragen

1. Wie füge ich ein Blatt nach einem bestimmten Blatt hinzu?
Verwende den folgenden Code:

ThisWorkbook.Sheets.Add After:=ThisWorkbook.Sheets("Bestimmtes Blatt")

2. Was mache ich, wenn ich ein Blatt mit einem Namen hinzufügen möchte, der bereits existiert?
Du kannst vor dem Hinzufügen des Blattes überprüfen, ob der Name bereits verwendet wird:

Dim blattName As String
blattName = "Neues Blatt"
If Not WorksheetExists(blattName) Then
    ThisWorkbook.Sheets.Add.Name = blattName
Else
    MsgBox "Das Blatt existiert bereits."
End If

3. Wie kann ich ein Blatt ohne Dialogfeld hinzufügen?
Nutze einfach die Sheets.Add Methode, wie im obigen Beispiel gezeigt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige