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

VBA Nur bestimmte, eingeblendete Blätter zählen

Forumthread: 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?
Anzeige

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

Infobox / Tutorial

Bestimmte, eingeblendete Blätter in Excel zählen


Schritt-für-Schritt-Anleitung

Um die Anzahl der Tabellenblätter in Excel zu ermitteln, die sichtbar sind und nicht in den ersten drei oder nach einem bestimmten Blatt gezählt werden sollen, kannst du folgenden VBA-Code verwenden:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.
  3. Füge den folgenden Code in das Modul ein:
Sub AufträgeZählen()
    Dim ws As Worksheet
    Dim Auftrag As Integer
    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
    Sheets(1).Range("C52").Value = Auftrag
End Sub
  1. Schließe den VBA-Editor und gehe zurück zu Excel.
  2. Füge eine Schaltfläche hinzu, um das Makro auszuführen. Dies kannst du unter Entwicklertools > Einfügen > Schaltfläche machen.
  3. Verknüpfe die Schaltfläche mit dem Makro AufträgeZählen.

Jetzt wird die Anzahl der sichtbaren Blätter ab dem vierten Blatt bis zum Blatt "Konformitätserklärung" gezählt und in Zelle C52 des ersten Blattes geschrieben.


Häufige Fehler und Lösungen

  • Fehler: Negative Zahl wird angezeigt.

    • Lösung: Stelle sicher, dass du mindestens 4 sichtbare Blätter hast. Ansonsten wird eine negative Zahl angezeigt.
  • Fehler: Die MsgBox bleibt leer.

    • Lösung: Überprüfe, ob die Variable Auftrag korrekt in die Zelle C52 geschrieben wird. Der letzte Code in der Anleitung sollte dies anpassen.
  • Fehler: Das Skript zählt nicht die richtigen Blätter.

    • Lösung: Stelle sicher, dass die Blätter, die du zählen möchtest, tatsächlich sichtbar sind und die Bedingungen im Code richtig gesetzt sind.

Alternative Methoden

Wenn du keine VBA-Lösung verwenden möchtest, kannst du auch die Funktion ANZAHL in Kombination mit WENN nutzen, um die sichtbaren Blätter zu zählen. Diese Methode ist jedoch nicht so flexibel wie VBA.

Eine einfache Formel könnte so aussehen:

=ANZAHL(WENN(BLATTNAME(A1:A92)="Konformitätserklärung",0,1))

Diese Formel erfordert die Verwendung von Array-Formeln, was etwas komplexer ist.


Praktische Beispiele

Angenommen, du hast eine Excel-Vorlage mit 70 Blättern, und du möchtest die Anzahl der Blätter zählen, die sichtbar sind, aber nicht die ersten 3 und auch nicht die, die nach "Konformitätserklärung" kommen. Der oben angegebene VBA-Code kann genau dafür eingesetzt werden.

Ein weiteres Beispiel könnte sein, dass du die maximale Anzahl an Arbeitsblättern in Excel ermitteln möchtest. Dies kannst du mit dem Befehl ActiveWorkbook.Worksheets.Count tun, um die maximale Anzahl der Blätter in deiner Arbeitsmappe zu ermitteln.


Tipps für Profis

  • Verwende benutzerdefinierte Funktionen: Du kannst den Code so anpassen, dass er als benutzerdefinierte Funktion in Excel fungiert, um die Anzahl der Tabellenblätter direkt in einer Zelle anzuzeigen.

  • Optimierung des Codes: Der Code kann weiter optimiert werden, indem du alle Bedingungen und Schleifen minimierst, um die Geschwindigkeit zu erhöhen.

  • Testen in verschiedenen Excel-Versionen: Stelle sicher, dass dein VBA-Code in der von dir verwendeten Excel-Version (z.B. Excel 2016 oder 365) funktioniert.


FAQ: Häufige Fragen

1. Wie kann ich die Anzahl der Tabellenblätter in Excel ermitteln? Du kannst die Anzahl der Tabellenblätter in Excel mit dem Befehl ActiveWorkbook.Worksheets.Count ermitteln.

2. Was ist die maximale Anzahl an Arbeitsblättern in Excel? Die maximale Anzahl an Blättern in einer Excel-Arbeitsmappe ist theoretisch 255, aber die tatsächliche Anzahl kann durch den verfügbaren Arbeitsspeicher begrenzt werden.

3. Wie kann ich VBA verwenden, um die Sichtbarkeit der Blätter zu prüfen? Du kannst die Sichtbarkeit eines Blattes mit der Eigenschaft ws.Visible abfragen. Wenn ws.Visible = True, ist das Blatt sichtbar.

4. Kann ich den VBA-Code anpassen, um andere Blätter zu zählen? Ja, du kannst die Bedingungen im Code anpassen, um spezifische Blätter zu zählen oder auszuschließen.

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