Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: sheet an richtiger stelle einfügen VBA

sheet an richtiger stelle einfügen VBA
04.11.2018 11:09:55
David
Hallo,
ich möchte über VBA ein neues Sheet anlegen.
In dem Workbook gibt es bereits einige Sheets, die nach Datum sortiert sind.
DAs VBA soll nun in allen sheets das datum nachlesen, mit dem Datum des neu anzulegenden vergleichen und wenn bereits ein sheet mit einem höheren datum existiert das neue davor anlegen (ansonsten an das ende des workbooks)
mir gelingt es leider nicht das richtige sheet auszuwählen.
Hier mein Versuch:
Vielleicht kann mich mal jemand auf die Sprünge helfen.
Danke Euch!
David
' neues blatt anlegen und mit daten bef?llen
Sub create_worksheet(Veranstaltung As String, Datum As Date, Zeit_shop As String, Zeit_vorort As String, v_name As String, Verantwortlich As String)
Dim insert_location As String
Dim wochentag As String
' neues blatt an richtiger Stelle einf?gen
For Each ws In ActiveWorkbook.Sheets
ws.Cells(8, 4).NumberFormat = "dd.mm.yyyy"
If ws.Cells(8, 4).Value > Datum Then
insert_location = ActiveSheet.Name:
End If
Next ws
If insert_location = "" Then
Worksheets("Master").Copy After:=Sheets(Sheets.Count)
Else
Worksheets("Master").Copy Before:=Sheets(insert_location)
End If
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: sheet an richtiger stelle einfügen VBA
04.11.2018 11:13:01
Hajo_Zi
Füge es doch ein und dann sortieren.
http://hajo-excel.de/gepackt/vba/register_sortieren.zip

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Die Beiträge werden auch ignoriert, es erfolgt keine Antwort.
Anzeige
AW: sheet an richtiger stelle einfügen VBA
04.11.2018 11:27:52
Herbert
Hallo David,
so wie Hajo es schon sagte: Füge das neue Sheet einfach ein und sortiere dann die gesamte Arbeitsmappe. Und damit geht es auch:
Sub TabellenSortierenAufsteigend()
Dim x, y, Anzahl
Dim ws As Worksheet
Set ws = ActiveSheet
Anzahl = ActiveWorkbook.Worksheets.Count
For x = 1 To Anzahl
For y = x To Anzahl
If Worksheets(y).Name  Worksheets(x).Name Then
Worksheets(y).Move Before:=Worksheets(x)
End If
Next y
Next x
Set ws = Nothing
End Sub
Servus
Anzeige
AW: sheet an richtiger stelle einfügen VBA
04.11.2018 12:09:11
David
Hallo,
Danke für eure Antworten
im Nachhinein zu Sortieren ist natürlich auch eine Möglichkeit.
In meinem Falle sortiere ich nicht nach WS name sonder nach einen Datum in den sheets.
Ich habe daher folgende Anpassung gemacht:
Set ws = ActiveSheet
Anzahl = ActiveWorkbook.Worksheets.Count
For x = 1 To Anzahl
For y = x To Anzahl
If Worksheets(y).Cells(8, 4) > Worksheets(x).Cells(8, 4) Then
Worksheets(y).Move Before:=Worksheets(x)
End If
Next y
Next x
Set ws = Nothing
Aber irgendwie tut das gar nichts :(
Anzeige
AW: sheet an richtiger stelle einfügen VBA
04.11.2018 12:40:12
Herbert
Schau mal deinen und meinen Code genau an! Und, fällt dir was auf? Genau! Du schreibst
If Worksheets(y).Cells(8, 4) > Worksheets(x).Cells(8, 4) Then

und ich
If Worksheets(y).Name > Worksheets(x).Name Then

Servus
Anzeige
AW: sheet an richtiger stelle einfügen VBA
04.11.2018 14:10:29
David
Hallo Herbert,
da habe ich mich vermutlich unklar ausgedrückt.
Das ich einen veränderten Code verwendet habe ist mir schon klar.
Ich will aber auch nicht die Namen der sheets vergleichen sondern den jeweiligen Inhalt der Zellen.
Die Sortierung erfolgt nicht nach dem Namen der Sheets.
Daher meine Anpassung.
Grüße,
David
Anzeige
AW: sheet an richtiger stelle einfügen VBA
04.11.2018 14:22:39
Daniel
Hi
im Prinzip ist dein Code schon gut und richtig, du hast nur nicht beachtest, dass du die Schleife mit Exit For abbrechen solltest, sobald du das erste größere Datum gefunden hast.
wenn die Schleife bis zum Ende weiter läuft, wird dein neues Blatt immer an der vorletzten Stelle eingefügt, wenn mehrere Sheets mit größerem Datum vorhanden sind.
If ws.Cells(8, 4).Value > Datum Then
insert_location = ActiveSheet.Name
Exit for
End If
Gruß Daniel
Anzeige
AW: sheet an richtiger stelle einfügen VBA
04.11.2018 18:00:18
David
Hallo Daniel,
perfekt! Daran lag es. Vielen Dank.
Jetzt tut mein Sheet, so wie ich es will.
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Einfügen eines neuen Sheets an der richtigen Stelle mit VBA


Schritt-für-Schritt-Anleitung

Um ein neues Sheet in einem bestehenden Workbook über VBA an der richtigen Stelle einzufügen, folge diesen Schritten:

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

  2. Erstelle ein neues Modul und füge den folgenden Code ein:

    Sub create_worksheet(Veranstaltung As String, Datum As Date, Zeit_shop As String, Zeit_vorort As String, v_name As String, Verantwortlich As String)
        Dim insert_location As String
        Dim ws As Worksheet
        ' Neues Blatt an richtiger Stelle einfügen
        For Each ws In ActiveWorkbook.Sheets
            ws.Cells(8, 4).NumberFormat = "dd.mm.yyyy"
            If ws.Cells(8, 4).Value > Datum Then
                insert_location = ws.Name
                Exit For
            End If
        Next ws
        If insert_location = "" Then
            Worksheets("Master").Copy After:=Sheets(Sheets.Count)
        Else
            Worksheets("Master").Copy Before:=Sheets(insert_location)
        End If
    End Sub
  3. Ersetze „Master“ durch den Namen des Sheets, das du kopieren möchtest.

  4. Führe das Makro aus und übergib die entsprechenden Parameter, um das neue Sheet an der richtigen Stelle einzufügen.


Häufige Fehler und Lösungen

  • Problem: Das neue Sheet wird immer an der vorletzten Stelle eingefügt.

    • Lösung: Stelle sicher, dass du die Schleife mit Exit For abbrichst, sobald das erste größere Datum gefunden wird.
  • Problem: Fehlermeldung „Typen unverträglich“.

    • Lösung: Überprüfe, ob die Zellen, die du vergleichst, auch tatsächlich Datumswerte enthalten.

Alternative Methoden

Falls du das Einfügen eines neuen Sheets nicht über VBA erledigen möchtest, kannst du auch manuell vorgehen:

  1. Neues Sheet einfügen: Klicke mit der rechten Maustaste auf das gewünschte Sheet und wähle „Einfügen“.
  2. Nach Datum sortieren: Nach dem Einfügen kannst du die Sheets von Hand sortieren, indem du sie per Drag & Drop an die gewünschte Stelle ziehst.

Praktische Beispiele

Hier ist ein Beispiel, wie du das VBA-Skript anpassen kannst, um den Inhalt der Zellen zu vergleichen:

Sub SortSheetsByDate()
    Dim x As Integer, y As Integer, Anzahl As Integer
    Dim ws As Worksheet
    Set ws = ActiveSheet
    Anzahl = ActiveWorkbook.Worksheets.Count
    For x = 1 To Anzahl
        For y = x To Anzahl
            If Worksheets(y).Cells(8, 4).Value > Worksheets(x).Cells(8, 4).Value Then
                Worksheets(y).Move Before:=Worksheets(x)
                Exit For
            End If
        Next y
    Next x
    Set ws = Nothing
End Sub

In diesem Beispiel wird das Sheet gemäß dem Datum in Zelle D8 sortiert.


Tipps für Profis

  • Verwende Set ws = ActiveSheet am Anfang deines Codes, um das aktive Sheet festzulegen.
  • Nutze die Objekte Worksheets und Sheets bewusst. Beachte die Unterschiede zwischen vba worksheets vs sheets, um Missverständnisse zu vermeiden.
  • Dokumentiere deinen Code gut, um später mögliche Anpassungen und Fehler leichter nachvollziehen zu können.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass das neue Sheet immer an der richtigen Stelle eingefügt wird?
Achte darauf, die Schleife korrekt zu implementieren und verwende Exit For, um die Schleife abzubrechen, wenn das erste größere Datum gefunden wurde.

2. Ist es notwendig, das Datum in einem bestimmten Format zu haben?
Ja, stelle sicher, dass das Datum in den Zellen im Format "dd.mm.yyyy" vorliegt, um falsche Vergleiche zu vermeiden.

3. Kann ich das Skript für andere Werte als Datum verwenden?
Ja, du kannst das Skript anpassen, um andere Kriterien für das Einfügen und Vergleichen von Sheets zu verwenden.

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