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: alle Tabellenblätter durchsuchen

alle Tabellenblätter durchsuchen
25.08.2015 09:05:59
Marco
Moin Moin,
ich bin echt am verzweifeln.
Folgendes Problem:
Ich habe eine Arbeitsmappe mit 20 Tabellenblättern für je einen Lieferanten. Eine Userform zwingt den Nutzer bestimmte Angaben zu machen, die dann in das Tabellenblatt des Lieferanten übernommen werden sollen (das ist nicht das Problem). Unter anderem muss ein Lieferant über eine Combobox ausgewählt werden.
Der Eintrag der Combobox ist jedoch nicht gleich dem Tabellenblattnamen (diese heißen Lieferant 1, Lieferant 2 usw.
Die Lieferantenbezeichnung ist aber in Zelle A1 des entsprechenden Tabellenblattes angegeben. D.h. alle Tabellenblätter Zelle "A1" = Liste in der Combobox
Nun das eigentliche Problem:
Nach Abschluss aller Angaben in der Userform soll bei Klick auf OK das richtige Tabellenblatt für den ausgewählten Lieferanten aktiviert und Zelle A15 ausgewählt werden.
Ich habe es mit mehreren Schleifen versucht (do while, do until, for next, for each). Es funktioniert aber nicht. Schleifen und ich vertragen uns scheinbar nicht so gut.
hier das was ich habe:
Private Sub cmd_OK_Click()
Dim Listenauswahl As String, Überschrift As String, ws As Worksheet
Dim i As String, wsCount As String
Listenauswahl = cmb_Lieferant.Text
Überschrift = ActiveSheet.Range("A1").Value
Sheets("Startseite").Activate
If Range("C8").Value = "" Then
MsgBox "kein Lieferant vorhanden"
Exit Sub
Else
'    ActiveSheet.Next.Select
For i = 1 To wsCount
If ActiveSheet.Range("A1") = Listenauswahl Then
MsgBox "Richtigen Lieferanten gefunden"
ActiveSheet.Next.Select
Else
ActiveSheet.Next.Select
End If
Next i
'oder:
For Each ws In ThisWorkbook.Worksheets
MsgBox ActiveSheet.Name
If Listenauswahl = Überschrift Then
MsgBox "Richtigen Lieferanten gefunden"
ActiveSheet.Range("C1").Select
End If
ActiveSheet.Next.Select
Next
End If
'oder:
Do Until Listenauswahl = Überschrift
ActiveSheet.Next.Select
Range("A1").Select
Loop
'ActiveSheet.Next.Select
End If
End Sub
Vielleich nur ein kleiner Fehler. Aber ich komme einfach nicht weiter.

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: alle Tabellenblätter durchsuchen
25.08.2015 09:15:18
Matthias
Hallo Marco,
versuch mal das hier:
Dim ws As Worksheet
For Each ws in ThisWorkbook.Worksheets
If ws.Range("A15")=cmb_Lieferant.Text Then
ws.activate
Exit For
EndIf
Next ws
lg Matthias

AW: alle Tabellenblätter durchsuchen
25.08.2015 09:52:35
Marco
Genial. Funktioniert einwandfrei. Danke für eure Hilfe.
Euch allen einen schönen Tag wünscht
Marco

Anzeige
AW: alle Tabellenblätter durchsuchen
25.08.2015 09:18:03
Rudi
Hallo,
Schema:
Sub aa()
Dim ws As Worksheet
Listenauswahl = cmb_Lieferant.Text
For Each ws In Worksheets
If ws.Range("A1") = Listenauswahl Then
Application.Goto ws.Range("A15")
Exit For
End If
Next ws
End Sub

Gruß
Rudi
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
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

Alle Tabellenblätter durchsuchen in Excel


Schritt-für-Schritt-Anleitung

Um in Excel alle Tabellenblätter zu durchsuchen, kannst du den folgenden VBA-Code verwenden. Dieser Code aktiviert das richtige Tabellenblatt basierend auf der Auswahl aus einer Combobox:

Private Sub cmd_OK_Click()
    Dim Listenauswahl As String
    Dim ws As Worksheet

    Listenauswahl = cmb_Lieferant.Text

    For Each ws In ThisWorkbook.Worksheets
        If ws.Range("A1").Value = Listenauswahl Then
            ws.Activate
            ws.Range("A15").Select
            Exit For
        End If
    Next ws
End Sub
  1. Füge den obenstehenden Code in das VBA-Editorfenster deiner Excel-Datei ein.
  2. Stelle sicher, dass die Combobox cmb_Lieferant die Namen der Lieferanten enthält.
  3. Der Code sucht in allen Tabellenblättern nach dem Namen in Zelle A1 und aktiviert das entsprechende Blatt.

Häufige Fehler und Lösungen

  • Fehler: „Kein Lieferant vorhanden“

    • Stelle sicher, dass die Combobox korrekt ausgefüllt ist. Überprüfe, ob der Text in der Combobox mit dem Inhalt der Zelle A1 übereinstimmt.
  • Fehler: Das richtige Tabellenblatt wird nicht aktiviert

    • Überprüfe, ob der Code in der richtigen Subroutine steht und dass die For Each-Schleife korrekt implementiert ist.
  • Fehler: „Runtime Error 9: Index außerhalb des gültigen Bereichs“

    • Dieser Fehler tritt auf, wenn das angegebene Blatt nicht existiert. Stelle sicher, dass alle Namen korrekt sind.

Alternative Methoden

Es gibt verschiedene Ansätze, um die Excel-Suche über mehrere Tabellenblätter zu optimieren:

  1. Verwendung von Application.Goto:

    Sub aa()
       Dim ws As Worksheet
       Listenauswahl = cmb_Lieferant.Text
       For Each ws In Worksheets
           If ws.Range("A1") = Listenauswahl Then
               Application.Goto ws.Range("A15")
               Exit For
           End If
       Next ws
    End Sub
  2. Aktives Blatt wechseln: Anstatt ActiveSheet.Next.Select zu verwenden, nutze den obigen Code, der direkt das gewünschte Blatt aktiviert.


Praktische Beispiele

Nehmen wir an, du hast eine Excel-Arbeitsmappe mit 10 Lieferanten in 10 verschiedenen Tabellenblättern. Wenn du die Lieferantenbezeichnung in einer Combobox auswählst, wird das entsprechende Blatt aktiviert und die Zelle A15 markiert.

Ein Beispiel zur Demonstration:

  • Lieferant 1 hat den Namen in Zelle A1.
  • Nach der Auswahl in der Combobox wird das Blatt „Lieferant 1“ aktiviert und Zelle A15 ausgewählt.

Tipps für Profis

  • Verwende Option Explicit am Anfang deiner Module, um sicherzustellen, dass alle Variablen deklariert sind.
  • Optimiere die Suche, indem du zuerst die Anzahl der Blätter speicherst und sie nur einmal abfragst, um die Leistung zu verbessern.
  • Nutze Debug.Print für die Fehlersuche, um zu sehen, welche Werte während der Schleifen iteriert werden.

FAQ: Häufige Fragen

1. Wie kann ich alle Tabellenblätter in einer Datei durchsuchen?
Du kannst die For Each-Schleife verwenden, um über alle Blätter zu iterieren, wie im obenstehenden Code gezeigt.

2. Was ist, wenn ich mehrere Werte in der Combobox habe?
Du kannst den Code anpassen, um mehrere Suchkriterien zu berücksichtigen, indem du weitere If-Bedingungen hinzufügst.

3. Kann ich den Code anpassen, um nach anderen Zellen zu suchen?
Ja, ändere einfach den Zellbezug (z.B. A1) im Code, um die Suche an deine Bedürfnisse anzupassen.

4. Wie kann ich Fehler im VBA-Code beheben?
Nutze die VBA-Debugging-Tools, um durch den Code zu gehen und die Variablenwerte zu überprüfen.

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