Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1632to1636
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

Tabellenblätter durchsuchen mittels vba

Tabellenblätter durchsuchen mittels vba
09.07.2018 10:39:57
lena
Hallo,
ich brauche ein Makro das alle tabellenblätter unabhängig vom Namen (damit immer wieder welche hinzugefügt werden können ohne das das Makro verändert werden muss) durchgeht und wenn in einer Bestimmten Zelle ein wert steht einen zähler im Makro um 1 erhöht.
DIeser Zähler soll in dann in einer Bestimmten Zelle ausgegeben werden.
Ich hänge bei der Schleifenprogrammierung.
Kann mir jemand weiterhelfen?
Vielen Dank im voraus!
Lena

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellenblätter durchsuchen mittels vba
09.07.2018 10:47:44
KlaWet
Hallo Lena,
versuche es mit einer For Each-Schleife
DIM ws as Worksheet
For each ws in ThisWorkbook.Worksheets
' Deine Prozedur
Next ws

AW: Tabellenblätter durchsuchen mittels vba
09.07.2018 10:58:55
lena
Hallo KlaWet.
Das ich eine Schleife brauche ist mir klar.
Nur ich schaffe es nicht das die genau das macht was ich will.
z.B. Wie gehe ich bei der schleife von einem Blatt zum nächsten ohne einen Namen zu verwenden?
AW: Tabellenblätter durchsuchen mittels vba
09.07.2018 11:04:34
KlaWet
Hm, aber genau das mach die Schleife, die ich dir geschrieben haben.
Diese Schleife geht ein Blatt nach dem anderen durch, egal wie es benannt wurde.
Gruß
AW: Tabellenblätter durchsuchen mittels vba
09.07.2018 11:13:01
lena
Es soll aber erst ab dem zweiten Zählen.
Mein Makro sieht derweil so aus:
Dim Datei As Workbook
Set Datei = ThisWorkbook
Dim DS1 As Worksheet
Set DS1 = Datei.Worksheets("Auswertung")
Dim A As String
Dim Anzahl As Integer
Dim Zahl As Integer
Zahl = ActiveWorkbook.Worksheets.Count
Anzahl = Zahl - 1
DS1.Range("F5") = Anzahl
Dim counter As Long
Dim Wert As Integer
Wert = 0
With Datei
For counter = DS1.Index + 1 To Zahl
If Worksheet.Range("F13") > 0 Then Wert 1
End If
End With
DS1.Range("F13") = Wert
End Sub
In dieser Zeile "If Worksheet.Range("F13") > 0 Then Wert 1" löscht es das plus vor der eins  _
immer wieder heraus.
und es soll diese if schleife immer bei jedem Blatt wiederholen und immer eins dazu zählen.  _
wenn alle durch sind soll es den wert in -DS1.Range("F13") ausgeben.
Tut mir Leid, war vorhin dumm formuliert von mir!

Anzeige
AW: Tabellenblätter durchsuchen mittels vba
09.07.2018 11:21:13
Daniel
Hi
ändere die Zeile mal so ab:
If Worksheets(Counter).Range("F13") > 0 Then Wert = Wert + 1
Gruß Daniel
AW: Tabellenblätter durchsuchen mittels vba
09.07.2018 11:27:27
KlaWet
So müssts gehen...
Dim Datei As Workbook
Set Datei = ThisWorkbook
Dim DS1 As Worksheet
Set DS1 = Datei.Worksheets("Auswertung")
Dim A As String
Dim Anzahl As Integer
Dim Zahl As Integer
Zahl = ActiveWorkbook.Worksheets.Count
Anzahl = Zahl - 1
DS1.Range("F5") = Anzahl
Dim counter As Long
Dim Wert As Integer
Dim ws As Worksheet
Wert = 0
For Each ws In ThisWorkbook.Worksheets
If ws.Name  "Auswertung" Then 'ich vermute, dass dieses Blatt ncht gezählt werden soll.
If ws.Range("F13") > 0 Then
Wert = Wert + 1
End If
End If
Next ws
DS1.Range("F13") = Wert
End Sub

Anzeige
AW: Tabellenblätter durchsuchen mittels vba
09.07.2018 11:30:12
lena
Danke!
...Sorry...
09.07.2018 11:15:28
KlaWet
... das wichtigste natürlich vergessen :-)
Dim ws as Worksheet
Dim intCounter as Integer
For each ws in Thisworkbook.Worksheets
If ws.Range("A1").value = 1 then 'musst du dann anpassen
intCounter = intCounter + 1
End if
Next ws
Zum Schluss schreibst du dann den Inhalt von intCounter in eine beliebige Ergebniszelle
AW: ...Sorry...
09.07.2018 11:29:46
lena
Super Danke!
Nur Leider nimmts da mein erstes Worksheet auch mit rein. Das is allerdings die Auswertung die es nicht mitnehmen soll. wie kann ich das noch einbauen?
AW: ...Sorry...
09.07.2018 11:37:26
lena
Habs geschafft! VIELEN VIELEN DANK!!
AW: ...Sorry...
09.07.2018 11:38:08
Daniel
Hi
mit ner zusätzlichen abfrage entweder per IF THEN:

if ws.Name  "Auswertung" then
if ws.Range("A1").Value = 1 then intcounter = Intcounter + 1
end if
oder mit SELECT CASE, wobei SELECT CASE dann anzuwenden wäre, wenn mehrere Blätter von dieser Auswertung ausgenommen werden sollen:
Select Case ws.Name
Case "Auswertung" '-- hier die Blätter auflisten die nicht berücksichtigt werden sollen
Case else
if ws.Range("A1").Value = 1 then intCounter = intCounter + 1
end select
Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige