Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Nur bestimmte, eingeblendete Blätter zählen

VBA Nur bestimmte, eingeblendete Blätter zählen
17.01.2019 14:32:30
Tobias
Hallo zusammen,
ich hab vergeblich versucht mich im netz schlau zu machen - da ich was VBA angeht ein ziemlicher noob bin, kein Wunder :D
Also hier meine Herausforderung:
Ich habe eine Excel-Datei welche insgesamt 92 Tabellenblätter enthält.
Diese Datei wird später als Fertigungsauftrag ausgedruckt.
Da wir aber für die Fertigung nicht alle Blätter brauchen, müssen dementsprechend die nicht benötigten ausgeblendet werden. Zur späteren Kontrolle muss die Anzahl zurückgebrachter Aufträge verglichen werden.
Auf der ersten Seite (erstes Tabellenblatt) soll also in einer Zelle die Anzahl der Aufträge stehen. Jedoch sollen nicht die ersten 3 und die letzten 10 Blätter mitgezählt werden.
Am Besten wäre, wenn es eine Funkion bzw. Code gibt, welcher von Blatt "asdf" bis "jklö" zählt.
Könnt ihr mir hier bitte weiterhelfen?

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Nur bestimmte, eingeblendete Blätter zählen
17.01.2019 14:45:52
Zwenn
Hallo Tobias,
Deine Beschreibung ist nicht ganz nachzuvollziehen. Am Ende scheint es mir Du willst nur wissen wieviele Blätter es in der Arbeitsmappe gibt, abzüglich der ersten 3 und der letzten 10:

Sub TabellenBlattAnzahl()
Dim anzahlTabellenGesamt As Integer
Dim anzhalTabellenRelevant As Integer
anzahlTabellenGesamt = ActiveWorkbook.Worksheets.Count
anzhalTabellenRelevant = anzahlTabellenGesamt - 3 - 10
MsgBox anzhalTabellenRelevant
End Sub

Wenn es insgesamt weniger als 13 Tabellen sind, wird eine Minuszahl angezeigt.
Viele Grüße,
Zwenn
Anzeige
AW: VBA Nur bestimmte, eingeblendete Blätter zählen
17.01.2019 15:02:35
Tobias
Hi Zwenn,
Danke für die schnelle Antwort.
Das hab ich mir schon gedacht dass das nich ganz leicht nachzuvollziehen ist.
Dein Ansatz ist nicht schlecht, jedoch hat er 1 oder 2 haken:
1. Ich möchte keine MsgBox angezeigt bekommmen sondern den Wert in eine Zelle Schreiben lassen.
2. Ich möchte nicht einfach -3 - 10 machen, weil er mir sonst die ausgeblendeten Tabellenblätter mitzählt.
Ich habe von den insgesamt 92 Blättern ungefähr 25 sichtbar, der Rest ist ausgeblendet.
Die ersten 3 Blätter sind keine Aufträge und die letzten 10 auch nicht, sollen daher nicht mitgezählt werden.
Ich hoffe es wird verständlicher :)
Anzeige
VBA Nur bestimmte, eingeblendete Blätter zählen
17.01.2019 15:21:20
Bernd
Servus Tobias,
so?

Sub Zählen()
Dim ws As Worksheet
Dim Auftrag As Integer
For Each ws In ThisWorkbook.Worksheets
If ws.Index > 3 And ws.Index 
Grüße, Bernd
AW: VBA Nur bestimmte, eingeblendete Blätter zählen
17.01.2019 16:42:10
Tobias
Also soweit so gut.. jetzt stehe ich aber vor einem neuen Problem was aber das selbe Thema betrifft.
mein Code bisher (von Bernd mit richtiger Zelle):

Sub AufträgeZählen()
Dim ws As Worksheet
Dim Auftrag As Integer
For Each ws In ThisWorkbook.Worksheets
If ws.Index > 3 And ws.Index 
Funktioniert.
Hab eine Schaltfläche eingefügt welche durch drauf-klicken das Makro ausführt und die Zahl in C52 schreibt - also passt.. aber nur solange sich an der Anzahl der Blätter
Neues Problem:
vorher nochmal Erklärung zu meiner Datei:
Meine Mappe besteht aus 70 Blättern (ist eine .xltm Vorlage)
Die ersten 3 Blätter "Auftragsübersicht", "MappenReiterEinlagen" und "Seriennummernschilder" werden IMMER benötigt und werden nicht ausgeblendet.
Die letzten Blätter ab "Konformitätserklärung" bis zum Ende sind sozusagen in der Anzahl variabel.
nach "Konformi..." kommt "Packliste 1", "Packliste 2", "P.. 3", P.. 4", "Druckvorlage Kistenzettel1", "Dr..Ki..2", "Dr..Ki..3" und "Dr..Ki..4".
Je nach Auftragsumfang benötigen wir entweder alle 4 'Packlisten' bzw. 'Druckvorlagen', oder nur 2 oder auch mal 5.
Daher ist die Anzahl hinten raus variabel..
Alle Blätter die dazwischen liegen (sofern eingeblendet) sollen gezählt werden.
Hier ist es aber nicht machbar den o.g. Code zu verwenden, weil der immer die letzten 10 Blätter abzieht.
Sonst müsste ich bei jedem Auftrag der mehr oder weniger Packlisten/Druckvorlagen hat, den Code ändern (statt - 10, - 8 o.ä.)
Meine Wunschvorstellung :D (träumen darf man ja)
Code: Zähle alle eingeblendeten/sichtbaren Blätter meiner Mappe, aber nicht die ersten 3 und nicht die letzten ab einschließlich "Konformitätserklärung". Schreibe diese Zahl dann in das erste Blatt "Auftragsübersicht" in Zelle "C52".
So, jetzt seid ihr wieder dran ^^
Sorry dass ich das Problem nicht schon vorher erkannt hab :/
Gruß, Tobi
Anzeige
VBA Nur bestimmte, eingeblendete Blätter zählen
18.01.2019 08:08:10
Bernd
Servus Tobias,
ändere mal die For-Next-Schleife folgendermaßen und lass es laufen...

For Each ws In ThisWorkbook.Worksheets
If ws.Index > 3 Then
If ws.Visible = True Then
If ws.Name = "Konformitätserklärung" Then
Exit For
Else
Auftrag = Auftrag + 1
End If
End If
End If
Next ws

Jetzt sollten Alle sichtbaren Blätter ab Tabellenreiter 4 bis zu dem Blatt "Konformitätserklärung" gezählt werden. Alle Blätter nach "Konformitätserklärung" fallen aus dem Zähler raus.
Wenn das Blatt "Konformitätserklärung" ausgeblendet/gelöscht werden sollte wird bis zum letzten Blatt gezählt.
Grüße, Bernd
Anzeige
AW: VBA Nur bestimmte, eingeblendete Blätter zählen
17.01.2019 15:24:48
Zwenn
Dann so

Sub TabellenBlattAnzahl()
Dim anzahlTabellenGesamt As Integer
Dim anzahlTabellenSichtbar As Integer
Dim anzhalTabellenRelevant As Integer
Dim Tabelle As Worksheet
anzahlTabellenGesamt = ActiveWorkbook.Worksheets.Count
For Each Tabelle In ActiveWorkbook.Worksheets
If Tabelle.Visible Then
anzahlTabellenSichtbar = anzahlTabellenSichtbar + 1
End If
Next Tabelle
anzhalTabellenRelevant = anzahlTabellenSichtbar - 3 - 10
MsgBox anzhalTabellenRelevant
End Sub

Message Box ist noch drin. Du hast ncht geschrieben in welche Zelle. Ist aber leicht nachzusehen wie das geht.
Viele Grüße,
Zwenn
Anzeige
AW: VBA Nur bestimmte, eingeblendete Blätter zählen
17.01.2019 15:55:34
Tobias
@ Zwenn - also die Zelle soll auf dem ersten Tabellenbaltt C52 sein. Der Name des Blatts ist IMHO unwichtig, oder?
außerdem habe ich bei deinem Vorschlag zwar keinen Fehler bekommen, jedoch blieb die MsgBox leer; also es wurde keine Zahl angezeigt
@ Bernd - das hat geklappt, DANKE.
Habe Sheets(1).Cells(1, 1).Value = Auftrag
in Sheets(1).Range("C52").Value = Auftrag geändert
sodass die Zahl in meiner gewünschten Zelle steht.
Ist das so richtig? Zumindest funktioniert´s. :)
Danke nochmal für eure super schnelle und erfolgreiche Hilfe.
Liebe Grüße, Tobi
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen
Forumthread
Beiträge