Blätter einer Mappe durchsuchen funktioniert nicht

Bild

Betrifft: Blätter einer Mappe durchsuchen funktioniert nicht
von: Werner Mauss
Geschrieben am: 15.09.2015 12:36:14

Hallo Zusammen,
ich habe eine Excelmappe (Excel 2013) mit ca. 85 Blättern.
Um die richtigen Blätter zu finden, prüfe ich, aus einer anderen Excelmappe heraus, alle Blätter in einer for-i-next Schleife zunächst auf Existenz eines Schlüsselwortes in einer bestimmten Zelle (A3). Das Schlüsselwort besteht aus zwei Zeichen (FF, NF, SF).
Das Verrückte ist, dass dieses durchsuchen bei den ersten Blättern noch funktioniert und dann gibt die Suchfunktion irgendwann einen Zellinhalt aus, der in der Zelle im gerade durchsuchten Blatt schlicht nicht vorhanden ist, sprich die Zelle ist leer aber die Funktion gibt "SF" aus:
test2 = Workbooks(filename_src).Worksheets(i).Range(criteria_cell).Value
Ich habe die Variablen in der o.g. vba Zeile, die die Zelle ausliest, probeweise durch Werte ersetzt, trotzdem enthält test3 den o.g. nicht existierenden Inhalt.
test3 = Workbooks("test1.xlsm").Worksheets(36).Range("A3").Value
Ich habe dann das betroffene Blatt Nr. 36 gelöscht und ein neues mit demselben Namen (oder einem anderen) erzeugt, das brachte ebenfalls keine Änderung.
Wenn ich hingegen den o.g. vba Code auf eine ganz neu angelegte Excelmappe mit ca. 40 Blättern anwende (wieder aus einer zweiten Arbeitsmappe heraus), dann funktioniert er genau wie erwartet, d.h. die Blätter werden entsprechend dem Eintrag in der Zelle A3 richtig erkannt.
Eine neue Arbeitsmappe anzulegen ist wegen den Inhalten der Blätter der Arbeitsmappe aber leider keine praktikable Möglichkeit.
Ich hoffe nun, dass es auf Basis des geschilderten Problems vielleicht jemanden gibt, dem dazu etwas einfällt.
Im Voraus Danke für Eure Hilfe!
Grüße
Werner

Bild

Betrifft: AW: Blätter einer Mappe durchsuchen funktioniert n
von: Matthias
Geschrieben am: 17.09.2015 16:37:46
Hallo Werner,
.Worksheets(36). arbeitet mit einem Index (hier 36), kein Name. Dies ist abhängig von der Reihenfolge der Blätter wie du sie angeordnet hast (hier das 36. Blatt von links, ausgeblendete Blätter eingeschlossen!). Eventuell liegt da der Fehler.
Wenn das ganze mit dem Index trotzdem nicht funktioniert, kannst du aber auch eine For-Schleife nutzen:

Dim wks As Worksheet
For Each wks in Workbooks("Test1.xlsm")
    'Blätter die nicht berücksichtigt werden sollen
    If wks.Name = "Auswertung" OR wks.Name = "Übersicht" Then Goto Marke1
    'Prüfung ob A3 SF,NF oder FF enthält
    test3 = wks.Range("A3").value
    If test3 = "SF" OR test3 = "NF" Or test3 = "FF") Then
        '... deine Aufgaben abarbeiten
    End If
Marke1:
Next wks
lg Matthias

Bild

Betrifft: AW: Blätter einer Mappe durchsuchen funktioniert n
von: Daniel
Geschrieben am: 17.09.2015 16:50:02
Hi
hierzu ergänzend:
Wenn du deine Tabellenblätter nach Nummern benannt hast (dh du hast die Zahlen 1-x auf die jeweiligen Reiter geschrieben) und du willst sie über diesen Namen ansprechen (dh du willst das Blatt, auf dessen Reiter "36" steht) dann musst du in der Klammer die 36 als Text angeben:

Worksheets("36")

schreibst du die 36 als Zahl hin, bekommst du das 36. Tabellenblatt aus der Liste (Reihenfolge der Tabs von links)
Worksheets(36)
wenn du jetzt die nach Zahlen benannten Blätter über eine Variable in einer Schleife ansprechen willst, dann ist die Schleifenvariable natürlich eine Zahl. Wenn du trotzdem die Blätter entsprechend ihrer Benennung über die Schleife ansprechen willst, dann musst du diese Zahl in einen Text wandeln, das geht dann so
i = 36
Worksheets(CStr(i))
oder
Worksheetrs(i & "")

denn mit
Workheets(i)

bekommst du dann wieder das 36. Blatt der Liste.
Gruß Daniel

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Blätter einer Mappe durchsuchen funktioniert nicht"