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

Forumthread: Worksheets.count

Worksheets.count
13.06.2013 14:43:33
JACKD
Hallo Gemeinde ich hab grad nen Hänger...
vielleicht kann mir ja jemand helfen.
Punkt 1 Ich schreibe ein Addin
Punkt 2 wenn ich das Addin öffne (als Addin- nicht in einer Mappe) und ein Marko starte kommt eine Fehlermeldung bei for each wks in Worksheets
(logisch ist ja auch kein wks vorhanden)
Jetzt wollt ich das mit WKS.count abfangen klappt aber nicht?
Ist es schlicht nicht vorgesehen das sowas möglich ist, da ja Addins idR in einer Mappe sind, und die nicht ohne Tabelle sein kann?
Oder kann man excel da austricksen?
'doppelt abfangen
If Worksheets.Count = "0" Then GoTo KeineBlätter ' Test ob Blätter vorhanden sind
For Each wks In Worksheets
If wks.name = "Fall_mod" Or wks.name = "Fallalt" Then
Application.DisplayAlerts = False
wks.Delete
Application.DisplayAlerts = True
End If
Next wks
KeineBlätter:
Thanks in advance
Grüße

Anzeige

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Worksheets.count
13.06.2013 14:48:35
Hajo_Zi
ich hätte ActiveWorkbook. benutzt.
Gruß Hajo

AW: Worksheets.count
13.06.2013 14:51:42
JACKD
Hallo Hajo
Danke für deine schnelle Antwort..
Ich glaub das lässt sich auch nicht abbilden (sofern das mein Horizont suggeriert)
denn ich hab mal Spaßeshalber den Block auskommentiert, dann bleibt er bei
activeworkbook,worksheets.add hängen.
Auch hier logisch, da ich ja nichtmal ein Workbook hab.
Wahrscheinlich müsste ich ein neues workbook erstellen...
Grüße

Anzeige
AW: Worksheets.count
13.06.2013 14:51:55
Rudi
Hallo,
da ja Addins idR in einer Mappe sind,
wie kommst du darauf?
1. müsste es If Worksheets.Count = 0 heißen. Immer diese Verwechselung von Zahlen und Texten!
2. kannst du das einfach mit
If Activeworkbook Is Nothing Then ...
abfangen.
Gruß
Rudi

Anzeige
AW: Worksheets.count
13.06.2013 14:58:31
JACKD
Hallo Rudi
nun,
wie ich darauf komme..?
Ist das nicht der sinn eines AddIn? Das Programm Excel um Funktionen zu ergänzen die dann in allen Mappen aufrufbar sind?
Zudem hast du (natürlich) wieder recht :-D
mit "0" und 0 ... aber ist das Ergebnis nicht das gleiche?
Grüße

Anzeige
AW: Worksheets.count
13.06.2013 15:06:03
Rudi
Hallo,
Ist das nicht der sinn eines AddIn? Das Programm Excel um Funktionen zu ergänzen die dann in allen Mappen aufrufbar sind?
ganz genau. Aber das heißt ja nicht, dass eine Mappe offen ist.
mit "0" und 0 ... aber ist das Ergebnis nicht das gleiche?
nicht unbedingt.
Sub aaa()
MsgBox WorksheetFunction.IsNumber("0")
MsgBox WorksheetFunction.IsNumber(0)
End Sub
Gruß
Rudi

Anzeige
Ergänzend application / VBA
13.06.2013 15:16:57
JACKD
Dann sind wir uns ja einig =)
Denn das Problem das KEINE Mappe ist, hab ich beim ändern =)
Ich habs jetzt anders gelößt
bei der Startprodzedur setz ich isaddin = False =)
Mal was anderes oder soll ich gleich noch nen Thread öffnen?
Ich probier es hier einfach
Das ist ein Code- Teil
 ReDim arrTmp(1 To i, 1 To 1)
For Lauf = 1 To i
arrTmp(Lauf, 1) = Application.Left(Cells(Lauf, 7).Value, 1)
Next Lauf
Cells(1, 8).Resize(i) = arrTmp
sieht soweit auch logisch aus
jedoch moniert er mit der Meldung

"Fehler beim Kompilieren:
Falsche Anzahl an Argumenten oder ungültige Zuweisung einer Eigenschaft"
Und markiert ".left"
Jetzt hab ich im NEtz danach gesucht. Und mir wurde vorgeschlagen das man statt
application.left
VBA.left
nehmen kann / soll /darf
Nun. Warum? Angeblich bezieht er sich auf eine falsche Objektbibliothek. Kann ich ja noch ein bisschen verstehen. Was mir allerdings nicht klar ist, warum macht er das auf einmal? als ich den Code letztens geschrieben hab, ging er doch auch ...
Grüße

Anzeige
AW: Ergänzend application / VBA
13.06.2013 15:24:28
Rudi
Hallo,
Was mir allerdings nicht klar ist, warum macht er das auf einmal? als ich den Code letztens geschrieben hab, ging er doch auch ...
Hast du nicht unter großen Mühen und Qualen ein anderes Office aufgespielt?
Gruß
Rudi

AW: Ergänzend application / VBA
13.06.2013 15:29:51
JACKD
-.-
Ähm ja..
Was du noch so alles weisst
ich hatte das schon erfolgreich verdrängt. =)
Wobei ich ja nur zwischen 64 bit und 32 bit gewechselt hab.
Und ich bei der 64bit in der Objektbiblio nix verstellt hab, sowie in der 32 bit auch nix geändert hab.
Zumal die Codezeile auch durch deine Hände ging. Und du ja glaub ich auch 32 bit hast..
Grüße

Anzeige
AW: Ergänzend application / VBA
13.06.2013 15:34:21
Rudi
Hallo,
Und du ja glaub ich auch 32 bit hast..
natürlich. Ich bin ja nicht verrückt. ;-)
Bei mir funktioniert auf allen Rechnern nur Left().
Ohne Application., VBA. oder WorksheetFunction. davor.
Gruß
Rudi

AW: Ergänzend application / VBA
13.06.2013 15:55:50
JACKD
Nunja ich bin offensichtlich Verrückt.. verrückt genug mich mit excel auseinander zu setzen.
:-D
Also ohne alles davor geht es bei mir auch o.0
Nur damit ich es richtig verstehe.
Mit application /vba / wsfunction referiere ich auf eine Klasse einer Objektbibliothek, die wiederum verschiedene Elemente hat.
Wenn es zu überschneidungen kommt zb. Application.left oder VBA.left und ich keine Klasse direkt anspreche nimmt er immer die mit der höheren Priorität... Oder?
Warum kommt es nun aber zu dem Fehler? Gibt es dann (in meinem Fall die Klasse Application) das Element left () nicht?
Man Möge es mir vergeben wenn ich grad alles durcheinander würfel. Ich versuch mich grad das erste mal über den reinen Code in die Materie zu denken
Grüße

Anzeige
AW: Ergänzend application / VBA
13.06.2013 16:17:30
Rudi
Hallo,
weder Application noch WorksheetFunction kennen Left.
Siehe Objektkatalog (F2 im VBE)
Gruß
Rudi

AW: Ergänzend application / VBA
13.06.2013 16:29:42
JACKD
Hallo Rudi
JaEin also in der WS-Function hab ich es nicht gefunden.
In der Application allerdings
Userbild
Oder ist das ein anderes Left?
Grüße

Anzeige
das ist was anderes
13.06.2013 16:35:23
Rudi
Hallo,
wie du schon in der Beschreibung lesen kannst, ist es eine Eigenschaft (Property Left As Double)
Application.Left-Eigenschaft
Gibt einen Double-Wert zurück, der den Abstand in Punkt vom linken Rand des Bildschirms zum linken Rand des Hauptfensters von Microsoft Excel darstellt, oder legt diesen Wert fest.
Gruß
Rudi

Anzeige
Ich krieg ne Krise
13.06.2013 16:43:13
JACKD
.. grad wenn man denkt, man hätte einen Strohalm an dem man sich bissl entlang hangeln kann,
kommt wieder was neues -.-
Das ist dann das richtige left?
Userbild
Grüße

jepp! owT
13.06.2013 19:23:33
Rudi
;
Anzeige

Infobox / Tutorial

Excel VBA: Arbeiten mit Worksheets.Count


Schritt-für-Schritt-Anleitung

  1. Zähle die Worksheets in einem Workbook: Verwende den Befehl Worksheets.Count, um die Anzahl der Arbeitsblätter in einem aktiven Workbook zu zählen. Beispiel:

    Dim wsCount As Long
    wsCount = ActiveWorkbook.Worksheets.Count
    MsgBox "Anzahl der Worksheets: " & wsCount
  2. Überprüfe, ob Worksheets vorhanden sind: Um sicherzustellen, dass keine Fehler auftreten, kannst du die Anzahl der Worksheets abfragen, bevor du mit ihnen arbeitest:

    If ActiveWorkbook.Worksheets.Count = 0 Then
       MsgBox "Keine Worksheets vorhanden."
    Else
       ' Arbeite mit Worksheets
    End If
  3. Für jeden Worksheet iterieren: Du kannst mit einer Schleife durch alle Worksheets im aktiven Workbook iterieren:

    Dim wks As Worksheet
    For Each wks In ActiveWorkbook.Worksheets
       MsgBox "Worksheet Name: " & wks.Name
    Next wks

Häufige Fehler und Lösungen

  • Fehler: „Fehler beim Kompilieren: Falsche Anzahl an Argumenten oder ungültige Zuweisung einer Eigenschaft“

    • Lösung: Überprüfe die Verwendung von Application.Left. Verwende stattdessen VBA.Left, um Konflikte mit anderen Bibliotheken zu vermeiden.
  • Fehler: „Keine Worksheets vorhanden“

    • Lösung: Stelle sicher, dass du den Code in einem Workbook ausführst, das tatsächlich Arbeitsblätter enthält. Verwende If ActiveWorkbook Is Nothing Then, um dies abzufangen.

Alternative Methoden

  • Verwende ThisWorkbook: Wenn du sicherstellen möchtest, dass du mit dem Workbook arbeitest, in dem der Code gespeichert ist, nutze ThisWorkbook.Worksheets.Count.

    Dim count As Long
    count = ThisWorkbook.Worksheets.Count
  • Zähle Sheets in einem bestimmten Workbook: Du kannst auch die Anzahl der Worksheets in einem spezifischen Workbook zählen, ohne es aktiv zu machen:

    Dim wb As Workbook
    Set wb = Workbooks("DeinWorkbook.xlsx")
    MsgBox "Anzahl der Worksheets: " & wb.Worksheets.Count

Praktische Beispiele

  1. Alle Worksheets in einer Liste anzeigen:

    Sub ListWorksheets()
       Dim wks As Worksheet
       Dim wsList As String
       For Each wks In ActiveWorkbook.Worksheets
           wsList = wsList & wks.Name & vbCrLf
       Next wks
       MsgBox wsList
    End Sub
  2. Löschen von Worksheets mit bestimmten Namen:

    Sub DeleteSpecificWorksheets()
       Dim wks As Worksheet
       For Each wks In ActiveWorkbook.Worksheets
           If wks.Name = "Fall_mod" Or wks.Name = "Fallalt" Then
               Application.DisplayAlerts = False
               wks.Delete
               Application.DisplayAlerts = True
           End If
       Next wks
    End Sub

Tipps für Profis

  • Verwende Option Explicit: Dies hilft dir, Variablen vor der Verwendung zu deklarieren und reduziert Fehler aufgrund von Tippfehlern.
  • Nutze With-Anweisung: Wenn du mehrere Eigenschaften eines Objekts verwendest, kann die With-Anweisung den Code lesbarer und effizienter machen:

    With ActiveWorkbook
      MsgBox "Anzahl der Worksheets: " & .Worksheets.Count
    End With

FAQ: Häufige Fragen

1. Wie zähle ich die Arbeitsblätter in einer bestimmten Excel-Version? Die Methoden zur Zählung von Worksheets sind in allen modernen Excel-Versionen gleich. Stelle sicher, dass du die richtige VBA-Umgebung verwendest.

2. Was ist der Unterschied zwischen Worksheets.Count und Sheets.Count? Worksheets.Count zählt nur die Arbeitsblätter, während Sheets.Count auch Diagrammblätter und andere Arten von Blättern einbezieht.

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