Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: neues Blatt einfügen, wenn Bedingung erfüllt

neues Blatt einfügen, wenn Bedingung erfüllt
28.11.2006 20:37:46
Martin
Hallo,
ich suche nach einer Möglichkeit in VBA, neue Tabellenblätter in die Arbeitsmappe einzufügen, wenn einer oder mehrere Werte in der Spalte A vorhanden sind.
Beipiel:
Spalte A enthält Werte wie Apfel, Birne, Pflaume, blau, grün, rot usw.
Spalten B - variabel enthalten jeweils ebenfalls Daten.
Wenn in Spalte A nun der Wert Apfel oder Birne gefunden wird, soll ein neues Blatt mit Namen "Obst" hinter dem letzten vorhandenen Blatt eingefügt werden.
Ein 2. Blatt mit Namen "Farben" soll eingefügt werden, wenn der Wert blau oder grün in Spalte A gefunden wird. Die jeweiligen Werte in Spalte A kommen in der Regel mehrfach vor, es soll aber nur je 1 Blatt eingefügt werden. In diese Blätter sollen anschließend die kompletten Zeilen mit Wert "Apfel" oder "Birne" bzw. "blau" oder "grün" unter Beibehaltung aller Formate kopiert werden.
Könnte mir bitte jemand dabei helfen ?
Danke, Martin
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: neues Blatt einfügen, wenn Bedingung erfüllt
28.11.2006 21:16:28
ramses
Hallo
Da EXCEL ein Tabellenkalukationsprogramm ist und keine Hellseherischen Funktionen, auch nicht mit VBA :-), bietet. ist das was du willst nicht zu lösen.
Ich gehe davon aus, dass du nicht blaue Äpfel oder grüne Pflaumen auswerten willst
Woher soll EXCEL wissen, wann es bei welchen Einträgen welche Tabelle erstellen soll ?
Gruss Rainer
Anzeige
AW: neues Blatt einfügen, wenn Bedingung erfüllt
28.11.2006 21:48:58
Martin
Hallo Rainer,
vielleicht habe mich etwas unklar ausgedrückt, bin als Fragesteller in Punkto VBA noch nicht erfahren. Ich probiers mal nochmal:
Die Spalte A dient im meinem Makro, mit dem ich eine umfangreiche Excelltabelle verarbeite als Sortierspalte. In Spalte A stehen eben solche Sortierbegriffe wie Apfel, Birne, Pflaume, blau, rot, grün, usw. Über diese Sortierbegriffe möchte ich anschließend alle Zeilen in das neu anzulegende Tabellenblatt "Obst" kopieren, die in Spalte A den Sortierbegriff Apfel oder Birne oder Pflaume enthalten. Gleiches soll mit den Sortierbegriffen aus dem Bereich Farbe passieren. Alle Zeilen mit Sortierbegriff blau oder rot oder grün sollen in das neu anzulegende Tabellenblatt "Farben" kopiert werden.
Bislang hatte ich die Tabellenblätter über den nachfolgen Code eingefügt und anschließend die Zeilen über ein If Bedingung in das jeweilge Blatt kopiert.
' neue Blätter in Arbeitsmappe jeweils rechts einfügen
'
ActiveSheet.Name = "Gesamtliste"
Worksheets.Add after:=Sheets(Worksheets.Count)
ActiveSheet.Name = "Obst"
ActiveWorkbook.Sheets("Obst").Tab.ColorIndex = 6
Worksheets.Add after:=Sheets(Worksheets.Count)
ActiveSheet.Name = "Farben"
ActiveWorkbook.Sheets("Farben").Tab.ColorIndex = 3
' Identifizieren und Kopieren der Produkte entsprechend der Produktcluster in verschiedene Blätter
Do Until IsEmpty(Cells(aRow, 1))
If Cells(aRow, 1).Value = "Apfel" Or _
Cells(aRow, 1).Value = "Birne" Or _
Cells(aRow, 1).Value = "Pflaume" Then
aRowT = aRowT + 1
Worksheets("Gesamtliste").Rows(aRow).Copy Destination:=Worksheets("Obst").Rows
(aRowT)
End If
aRow = aRow + 1
Loop
Problem bei dieser Methode ist allerdings, wenn kein entsprechender Begriff aus dem Bereich Obst gefunden wurde, ein leeres Tabellenblatt vorhanden ist. Dieses möchte ich gerne vermeiden, indem nur die Tabellenblätter eingefügt werden, für die auch die definierten Suchbegriffe in Spalte A gefunden wurden.
Ich hoffe nun ist meine Anforderung etwa besser beschrieben und es gibt eine Lösung dafür!
Martin
Anzeige
AW: neues Blatt einfügen, wenn Bedingung erfüllt
28.11.2006 21:57:55
Martin
Hallo Rainer,
vielleicht habe mich etwas unklar ausgedrückt, bin als Fragesteller in Punkto VBA noch nicht erfahren. Ich probiers mal nochmal:
Die Spalte A dient im meinem Makro, mit dem ich eine umfangreiche Excelltabelle verarbeite als Sortierspalte. In Spalte A stehen eben solche Sortierbegriffe wie Apfel, Birne, Pflaume, blau, rot, grün, usw. Über diese Sortierbegriffe möchte ich anschließend alle Zeilen in das neu anzulegende Tabellenblatt "Obst" kopieren, die in Spalte A den Sortierbegriff Apfel oder Birne oder Pflaume enthalten. Gleiches soll mit den Sortierbegriffen aus dem Bereich Farbe passieren. Alle Zeilen mit Sortierbegriff blau oder rot oder grün sollen in das neu anzulegende Tabellenblatt "Farben" kopiert werden.
Bislang hatte ich die Tabellenblätter über den nachfolgen Code eingefügt und anschließend die Zeilen über ein If Bedingung in das jeweilge Blatt kopiert.
' neue Blätter in Arbeitsmappe jeweils rechts einfügen
'
ActiveSheet.Name = "Gesamtliste"
Worksheets.Add after:=Sheets(Worksheets.Count)
ActiveSheet.Name = "Obst"
ActiveWorkbook.Sheets("Obst").Tab.ColorIndex = 6
Worksheets.Add after:=Sheets(Worksheets.Count)
ActiveSheet.Name = "Farben"
ActiveWorkbook.Sheets("Farben").Tab.ColorIndex = 3
' Identifizieren und Kopieren der Produkte entsprechend der Produktcluster in verschiedene Blätter
Do Until IsEmpty(Cells(aRow, 1))
If Cells(aRow, 1).Value = "Apfel" Or _
Cells(aRow, 1).Value = "Birne" Or _
Cells(aRow, 1).Value = "Pflaume" Then
aRowT = aRowT + 1
Worksheets("Gesamtliste").Rows(aRow).Copy Destination:=Worksheets("Obst").Rows
(aRowT)
End If
aRow = aRow + 1
Loop
Problem bei dieser Methode ist allerdings, wenn kein entsprechender Begriff aus dem Bereich Obst gefunden wurde, ein leeres Tabellenblatt vorhanden ist. Dieses möchte ich gerne vermeiden, indem nur die Tabellenblätter eingefügt werden, für die auch die definierten Suchbegriffe in Spalte A gefunden wurden.
Ich hoffe nun ist meine Anforderung etwa besser beschrieben und es gibt eine Lösung dafür!
Martin
Anzeige
Noch offen...
28.11.2006 22:08:38
ramses
Hallo
Sorry,... aber das ist mir nicht klar genug.
Daher stelle ich die Frage auf offen.
Gruss Rainer
AW: neues Blatt einfügen, wenn Bedingung erfüllt
28.11.2006 22:11:32
Matthias
Hallo Martin,
ich würde die Zuordnungen (Apfel->Obst, rot->Farbe usw. in einem (evtl. versteckten) Tabellenblatt anlegen, das ist flexibler als es fest im Code zu verankern, Nicht dass ich glaube, dass rot irgendwann einmal Obst sein wird, aber es könnten ja neue Begriffe dazukommen.
Und wenn das Blatt leer ist, blende es doch einfach aus. Lass einen Zähler mitlaufen und schreibe am Schluss:
Sheets("Obst").Visible = (Zähler > 0)
Gruß Matthias
Anzeige
AW: neues Blatt einfügen, wenn Bedingung erfüllt
30.11.2006 11:26:33
Martin
Hallo Matthias,
den Tipp die leeren Tabellenblätter auszublenden bzw. zu löschen habe ich erstmal umgesetzt. So geht es natürlich auch. Aber neue Tabellenblätter nur dann einzufügen, wenn in der Suchspalte A entsprechende Suchbegriffe gefunden wurden finde ich einfach eleganter als eine definierte Anzahl Blätter einzufügen und anschließend die leeren wieder zu löschen.
Ideal wäre es wenn der bisher benutzte Code:
Do Until IsEmpty(Cells(aRow, 1))
If Cells(aRow, 1).Value = "Apfel" Or _
Cells(aRow, 1).Value = "Birne" Or _
Cells(aRow, 1).Value = "Pflaume" Then
aRowT = aRowT + 1
Worksheets("Gesamtliste").Rows(aRow).Copy Destination:=Worksheets("Obst").Rows
(aRowT)
End If
aRow = aRow + 1
Loop
für das identifizieren und anschließende Kopieren der Zeilen zusätzlich noch folgendes könnte:
- prüfen ob das Worksheet ("Obst") bereits existiert
- wenn ja die gewünschten Zeilen kopieren
- wenn nein einmalig ein Worksheet ("Obst") anlegen und dann Zeilen kopieren
- danach weiter Abfrage bzgl. der Sortierbegriffe "blau, grün usw."
Also nahezu Laie bzgl. VBA weiß ich aber nicht, ob sowas überhaupt geht.
Vielen Dank für die Hilfe!
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Neues Blatt in Excel einfügen bei erfüllter Bedingung


Schritt-für-Schritt-Anleitung

  1. Öffne die Excel-Arbeitsmappe, in der du das neue Blatt einfügen möchtest.

  2. Aktiviere den VBA-Editor mit ALT + F11.

  3. Füge ein neues Modul hinzu: Rechtsklicke im Projekt-Explorer auf "VBAProject" und wähle „Einfügen“ > „Modul“.

  4. Kopiere den folgenden VBA-Code in das Modul:

    Sub NeuesBlattEinfügen()
        Dim aRow As Long
        Dim aRowT As Long
        Dim wsObst As Worksheet
        Dim wsFarben As Worksheet
        Dim wsExist As Boolean
    
        ' Initialisiere Zeilen und Blätter
        aRow = 1
        aRowT = 1
        wsExist = False
    
        ' Überprüfe, ob das Blatt "Obst" bereits existiert
        On Error Resume Next
        Set wsObst = ThisWorkbook.Sheets("Obst")
        If Not wsObst Is Nothing Then
            wsExist = True
        End If
        On Error GoTo 0
    
        ' Neues Blatt "Obst" einfügen, wenn nicht existent
        If Not wsExist Then
            Set wsObst = ThisWorkbook.Worksheets.Add(after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
            wsObst.Name = "Obst"
        End If
    
        ' Identifizieren und Kopieren der Obstzeilen
        Do Until IsEmpty(Cells(aRow, 1))
            If Cells(aRow, 1).Value = "Apfel" Or Cells(aRow, 1).Value = "Birne" Or Cells(aRow, 1).Value = "Pflaume" Then
                wsObst.Rows(aRowT).Value = Cells(aRow, 1).EntireRow.Value
                aRowT = aRowT + 1
            End If
            aRow = aRow + 1
        Loop
    
        ' Überprüfe, ob das Blatt "Farben" bereits existiert
        wsExist = False
        On Error Resume Next
        Set wsFarben = ThisWorkbook.Sheets("Farben")
        If Not wsFarben Is Nothing Then
            wsExist = True
        End If
        On Error GoTo 0
    
        ' Neues Blatt "Farben" einfügen, wenn nicht existent
        If Not wsExist Then
            Set wsFarben = ThisWorkbook.Worksheets.Add(after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
            wsFarben.Name = "Farben"
        End If
    
        ' Identifizieren und Kopieren der Farbenzeilen
        aRow = 1
        aRowT = 1
        Do Until IsEmpty(Cells(aRow, 1))
            If Cells(aRow, 1).Value = "Blau" Or Cells(aRow, 1).Value = "Grün" Then
                wsFarben.Rows(aRowT).Value = Cells(aRow, 1).EntireRow.Value
                aRowT = aRowT + 1
            End If
            aRow = aRow + 1
        Loop
    End Sub
  5. Starte das Makro, um die neuen Blätter „Obst“ und „Farben“ basierend auf den Bedingungen in Spalte A einzufügen.


Häufige Fehler und Lösungen

  • Excel neues Blatt einfügen geht nicht: Stelle sicher, dass du die richtigen Berechtigungen zur Erstellung von Blättern in der Arbeitsmappe hast.
  • Excel Tabellenblatt einfügen geht nicht: Überprüfe, ob du eventuell den Namen des Blattes bereits verwendet hast. Excel erlaubt keine doppelten Blattnamen.
  • Leeres Tabellenblatt: Wenn kein passender Wert gefunden wird, wird trotzdem ein leeres Blatt erstellt. Um das zu vermeiden, kannst du die Existenz des Blattes vor dem Hinzufügen prüfen, wie im obigen Code gezeigt.

Alternative Methoden

Eine alternative Methode besteht darin, die gewünschten Werte in einer separaten Liste zu verwalten und diese dann dynamisch in den VBA-Code einzufügen. So behältst du die Flexibilität, neue Begriffe hinzuzufügen, ohne den Code ändern zu müssen.


Praktische Beispiele

Stell dir vor, du hast eine Excel-Tabelle mit verschiedenen Obst- und Farbbegriffen in Spalte A. Wenn du den obigen VBA-Code ausführst, wird automatisch ein neues Blatt für die gefundenen Obst- und Farbbegriffe erstellt und die entsprechenden Zeilen werden in die jeweiligen Blätter kopiert.


Tipps für Profis

  • Verwende Datenüberprüfung, um sicherzustellen, dass nur die gewünschten Begriffe in Spalte A eingegeben werden.
  • Dokumentiere deinen Code mit Kommentaren, damit du später leichter Änderungen vornehmen kannst.
  • Experimentiere mit Fehlerbehandlungsroutinen, um sicherzustellen, dass das Skript auch bei unerwarteten Eingaben stabil bleibt.

FAQ: Häufige Fragen

1. Wie füge ich in Excel ein neues Blatt ein, wenn die Bedingung nicht erfüllt ist?
Wenn die Bedingung nicht erfüllt ist, wird das Blatt nicht erstellt. Du kannst den Code so anpassen, dass er nur dann ein Blatt hinzufügt, wenn die gewünschten Werte gefunden werden.

2. Warum kann ich kein neues Tabellenblatt einfügen?
Überprüfe, ob möglicherweise ein bestehendes Blatt mit demselben Namen existiert oder ob du in einer geschützten Arbeitsmappe arbeitest, die keine Änderungen zulässt.

3. Wie kann ich ein leeres Blatt in Excel löschen?
Klicke mit der rechten Maustaste auf das leere Blatt und wähle „Löschen“, oder verwende VBA, um leere Blätter automatisch zu entfernen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige