Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1928to1932
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

in Workbooks einen Worksheet suchen

in Workbooks einen Worksheet suchen
21.04.2023 14:13:31
Edi

Hallo liebe Excelfreunde

Ich würde mal wieder gerne etwas lernen.
Es gibt folgende Aufgabe. Ich versuche das mal ohne Beispieldatei, da diese sehr umfangreich und natürlich streng geheim sind :)

Jeden Monat wird eine neue Datei erstellt mit einer unterschiedlichen Anzahl an Sheets.
Aber in jeder Datei gibt es einen Sheet "DPL"
und am Anfang jeden Monats sollen die Daten des Vormonats aus diesem Blatt übernommen werden. Kein Problem.
Das Makro soll mit einer Abfrage beginnen, ob die Datei des Vormonats überhaupt geöffnet ist.
Suche nach Namen fällt aus, da sich der ja auch jeden Monat ändert.

Mein Ansatz ist der, dass ich jede geöffnete Datei nach dem Blatt "DPL" durchsuche, und wenn gefunden dort nachschaue, ob es das Datum des Vormonats ist. (steht in D5)

Der Code dafür sieht bisher so aus:


Sub Übertrag()
    
    Dim wb As Integer
    Dim ws As Integer
    Dim strDateiname As String
    
    For wb = 1 To Workbooks.Count
        For ws = 1 To Workbooks(wb).Worksheets.Count
            If Workbooks(wb).Worksheets(ws).Name = "DPL" Then
                If Month(Worksheets("DPL").Cells(5, 4)) = Month(Workbooks(wb).Worksheets("DPL").Cells(5, 4)) + 1 Then
                    strDateiname = Workbooks(wb).Name
                    Exit For
                End If
            End If
        Next ws
        If strDateiname > "" Then Exit For
    Next wb
End Sub


Funktioniert auch soweit.
Meine Frage wäre, ob es nicht auch einfacher geht einen bestimmten Sheet zu suchen und zu vergleichen.
Freue mich schon auf Eure Antworten

Gruß

Edi

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

Betreff
Datum
Anwender
Anzeige
AW: in Workbooks einen Worksheet suchen
21.04.2023 14:48:22
onur
Du könntest "On Error" benutzen.

    For wb = 1 To Workbooks.Count
        On Error Resume Next
        If Month(Worksheets("DPL").Cells(5, 4)) = Month(Workbooks(wb).Worksheets("DPL").Cells(5, 4)) + 1 Then strDateiname = Workbooks(wb).Name:Exit For
        If strDateiname > "" Then Exit For
    Next wb


AW: in Workbooks einen Worksheet suchen
21.04.2023 14:55:35
onur
Das ":Exit For" am Ende der langen Zeile muss weg.


AW: in Workbooks einen Worksheet suchen
21.04.2023 14:57:13
Edi
Cool, das sieht doch schon viel eleganter aus.
Ja, das On Error muss ich mir merken.
Danke Dir

Gruß

Edi


Anzeige
Gerne !
21.04.2023 15:08:20
onur
OnError ist wie Penicillin - NIE pauschal sondern nur mit Bedacht benutzen. Heisst: nur dann benutzen, wenn du an einer bestimmten Stelle einen bestimmten Fehler erwartest. Weil: Es werden sämtliche Fehlermeldungen unterdrückt, was dann an einer ganz anderen Stelle zu wesentlich grösseren Fehlern/Problemen führen kann und du weisst nicht, was los ist. Die Fehler werden ja nicht ungeschehen gemacht, sie existieren immer noch.
Und normalerweise sofort danach (hinter der bestimmten Stelle) deaktivieren mit "On Error Goto 0". Aber da in diesem Fall der Code schon zu Ende ist, kann man es diesmal weglassen.


Anzeige
AW: Gerne !
21.04.2023 15:24:24
Edi
Super, danke für den Nachschlag.

Der Code geht danach natürlich noch weiter.
Wenn der Dateiname erst ermittelt ist, geht ja die Kopiererei los :)
Da macht das "On Error Goto 0" natürlich durchaus Sinn, auch wenn beim reinen Kopieren wohl keine Fehler zu erwarten sind.
Aber man weiß ja nie.

Viele Grüße
Edi


AW: Gerne !
21.04.2023 15:31:39
onur
Genau - dann schreib das besser direkt unter die lange Zeile.

96 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige