Jetzt stellt sich für mich die Frage wie ich angebe, dass er durch die worksheets regelrecht hüpfen soll?
Danke und Gruß
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.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.
ALT + F11
, um den VBA-Editor zu öffnen.Sub test()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
Debug.Print ws.Range("A1")
Next ws
End Sub
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.
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.
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
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.
Sub AusgabeWerte()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
Debug.Print ws.Range("A1").Value
Next ws
End Sub
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
Option Explicit
am Anfang Deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind.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
Workbook.Worksheets
oder Worksheets
verwenden möchtest, je nachdem, ob Du auf die aktuelle oder eine spezifische Arbeitsmappe zugreifen möchtest.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.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen