Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Mit VBA worksheets durchsuchen

Mit VBA worksheets durchsuchen
05.03.2007 15:22:41
Micha
Ich möchte anhand VBA alle worksheets innerhalb einer Arbeitsmappe nach einem Namen durchsuchen lassen.
Jetzt stellt sich für mich die Frage wie ich angebe, dass er durch die worksheets regelrecht hüpfen soll?
Danke und Gruß
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mit VBA worksheets durchsuchen
05.03.2007 15:34:00
IngGi
Hallo Micha,
folgendes Makro gibt die Zelle A1 aller Tabellenblätter der Arbeitsmappe im Direktfenster aus:
Sub test()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
Debug.Print ws.Range("A1")
Next 'ws
End Sub
Wenn du mit "Namen allerdings" benannte Bereiche meinst, diese sind Objekte der Arbeitsmappe, nicht der Tabellenblätter und können nach demselben Muster folgendermaßen durchgearbeitet werden:
Sub test()
Dim na As Name
For Each na In ThisWorkbook.Names
Debug.Print na.RefersTo
Next 'na
End Sub
Die Eigenschaft RefersTo gibt dabei den Namen des Tabellenblattes und die Zellreferenz nach dem Muster Tabellenblattname!$A$1 zurück, so dass aus dieser Info auch das Tabellenblatt ausgelesen werden kann.
Gruß Ingolf
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Mit VBA Worksheets durchsuchen


Schritt-für-Schritt-Anleitung

Um alle Worksheets in einer Excel-Arbeitsmappe mit VBA zu durchsuchen, kannst Du das folgende Makro verwenden. Damit wird jede Zelle A1 in jedem Worksheet ausgedruckt.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Klicke auf "Einfügen" und wähle "Modul", um ein neues Modul zu erstellen.
  3. Füge den folgenden Code ein:
Sub test()
    Dim ws As Worksheet
    For Each ws In ThisWorkbook.Worksheets
        Debug.Print ws.Range("A1")
    Next ws
End Sub
  1. Schließe den VBA-Editor und kehre zu Excel zurück.
  2. Drücke ALT + F8, wähle test und klicke auf "Ausführen".

Dieses Skript verwendet For Each ws In ThisWorkbook.Worksheets, um durch alle Worksheets zu iterieren.


Häufige Fehler und Lösungen

  • Fehler: "Objekt erforderlich"
    Lösung: Stelle sicher, dass Du die richtige Syntax und Objektreferenzen verwendest. Überprüfe, ob das Arbeitsblatt existiert.

  • Fehler: "Debug.Print gibt nichts aus"
    Lösung: Überprüfe, ob die Zelle A1 in jedem Worksheet tatsächlich einen Wert hat. Wenn nicht, wird nichts im Direktfenster angezeigt.


Alternative Methoden

  1. Durch Namen benannte Bereiche durchsuchen:

Wenn Du benannte Bereiche in Deiner Arbeitsmappe hast, kannst Du diese ebenfalls durchlaufen:

Sub test()
    Dim na As Name
    For Each na In ThisWorkbook.Names
        Debug.Print na.RefersTo
    Next na
End Sub
  1. Verwendung von Worksheets vs. Sheets:

Beachte, dass Worksheets nur Arbeitsblätter umfasst, während Sheets auch Diagramme und andere Arten von Blättern einschließt. Verwende ThisWorkbook.Sheets, wenn Du alle Blätter durchlaufen möchtest.


Praktische Beispiele

  • Beispiel 1: Alle Werte in Zelle A1 ausgeben:
Sub AusgabeWerte()
    Dim ws As Worksheet
    For Each ws In ThisWorkbook.Worksheets
        Debug.Print ws.Range("A1").Value
    Next ws
End Sub
  • Beispiel 2: Suche nach einem bestimmten Wert in allen Worksheets:
Sub SucheWert()
    Dim ws As Worksheet
    Dim Zelle As Range
    Dim Suchwert As String
    Suchwert = "DeinWert"

    For Each ws In ThisWorkbook.Worksheets
        Set Zelle = ws.Cells.Find(What:=Suchwert)
        If Not Zelle Is Nothing Then
            Debug.Print "Wert gefunden in: " & ws.Name & " Zelle: " & Zelle.Address
        End If
    Next ws
End Sub

Tipps für Profis

  • Nutze Option Explicit am Anfang Deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind.
  • Experimentiere mit der With-Anweisung, um den Code lesbarer zu machen:
Sub MitWith()
    Dim ws As Worksheet
    For Each ws In ThisWorkbook.Worksheets
        With ws
            Debug.Print .Range("A1").Value
        End With
    Next ws
End Sub
  • Überlege, ob Du Workbook.Worksheets oder Worksheets verwenden möchtest, je nachdem, ob Du auf die aktuelle oder eine spezifische Arbeitsmappe zugreifen möchtest.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Zellen anstelle von nur A1 durchsuchen?
Du kannst die Schleife anpassen, um mehrere Zellen zu durchlaufen, indem Du die Range anpasst, z.B. ws.Range("A1:B10").

2. Was ist der Unterschied zwischen Sheets und Worksheets?
Sheets umfasst alle Blätter, einschließlich Diagramme, während Worksheets nur die Arbeitsblätter umfasst. Verwende Worksheets, wenn Du nur mit Arbeitsblättern arbeiten möchtest.

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