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

Forumthread: Worksheet.index?

Worksheet.index?
12.08.2008 13:34:50
Tom
Hi,
ich versuch die Nummer des Worksheets auszulesen.
im Netzt hab ich dazu folgendes gefunden.

value = Worksheet.index


leider kommt dabei eine Fehler 424
Objekt erforderlich?
Das ganze brauch ich in einer Userform könnte das zu ienem Problem führen?
Offtopic:
Kann ich in eine ComboBox für jeden Monat alle Tage auflisten? Also mit einer Formel oder VBA. Sonst muss ich ja 3 fälle unterscheiden 30 Tage, 31 Tage und 28 Tage.?
mfg Tom

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Worksheet.index?
12.08.2008 13:44:00
Tom
Sollte alles in einer Cbox stehen. vll. werd ich aus dem Code später noch schlau.
Erstmal danke.
mfg Tom

Anzeige
AW: Worksheet.index?
12.08.2008 13:45:00
Daniel
Hi
du musst natürlich auch dazusagen, von welchem Worksheet du gerne den Index hättest, dh.
value = ActiveSheet.index
value = Sheet("Tabelle1").index
value = Sheets(1).Index
Gruß, Daniel
(ps, die 3. Variante ist natürlich unsinnig)

AW: Alle Tage eines Monats
12.08.2008 13:50:00
Daniel
Hi
also wenn du alle Tage des aktuellen Monats in einer Combobox haben willst dann so:
Combobox1.Clear
For i = 1 to day(dateserial(year(date), month(date)+1,0))
Combobox1.AddItem i
next i
Gruß, Daniel

Anzeige
AW: Alle Tage eines Monats
12.08.2008 13:57:47
Tom
Nein, ich versuch für alle Monate des Jahres Egal welches bsp. 2008
das Format so anzuzeigen.
01.01.2008-31.12.2008
in der Combobox sollte das dann so aussehen.
Es muss nur jeder Monat vorkommen, weil ich die ComboBox in eine Excelsheet einsetze das einem Monat entspricht. Z.B. Januar dann sollen alle Tage des Januars in der Combobox auftauchen. In dem oben gennanten Format.
mfg Tom

Anzeige
AW: Alle Tage eines Monats
12.08.2008 14:08:10
Daniel
Hi
so ganz kapier ich deine Beschreibung ja noch nicht, aber wenn du bspw die Combobox mit den Tagen des Monats Februar im Jahr 2008 im Datumsformat füllen willst, dann so:

Dim i As Long
Dim Jahr As Integer
Dim Monat As Integer
Jahr = 2008
Monat = 2
combobox1.Clear
For i = DateSerial(Jahr, Monat, 1) To DateSerial(Jahr, Monat + 1, 0)
combobox1.AddItem Format(i, "DD.MM.YYYY")
Next


Gruß, Daniel

Anzeige
AW: Alle Tage eines Monats
12.08.2008 14:19:40
Tom
Du bist ein Zauberer, wenn du nicht verstanden hast was ich dir erzählt habe, das ist nämlich genau das was ich gesucht habe. Perfekt.
Und jetzt wo ich mir das nochmal anschau, versteh ich es sogar.
Super vielen Dank

AW: Alle Tage eines Monats
12.08.2008 14:38:44
Daniel
Hi
naja, wenn mans nicht versteht, dann kann man ja auch mal ne Vermutung Anstellen, was sich der Anwender so wünscht. und wenn man selber genug erfahrung auf der Anwenderseite hat, dann liegt man da oft nicht so falsch.
Gruß, Daniel
Anzeige
;
Anzeige

Infobox / Tutorial

Excel Worksheet Index: So findest Du den richtigen Index


Schritt-für-Schritt-Anleitung

Um den Index eines Worksheets in Excel VBA auszulesen, kannst Du folgende Schritte befolgen:

  1. Öffne den VBA-Editor (Alt + F11).
  2. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject" > Einfügen > Modul.
  3. Füge den folgenden Code ein:
Sub GetWorksheetIndex()
    Dim wsIndex As Integer
    ' Verwende ActiveSheet um den Index des aktiven Arbeitsblatts zu bekommen
    wsIndex = ActiveSheet.Index
    MsgBox "Der Index des aktiven Worksheets ist: " & wsIndex
End Sub
  1. Führe das Makro aus: Drücke F5, um den Index des aktiven Worksheets anzuzeigen.

Mit dieser Methode kannst Du einfach den worksheet index in VBA ermitteln.


Häufige Fehler und Lösungen

  • Fehler 424: Objekt erforderlich:
    • Ursache: Du hast vergessen, das spezifische Worksheet anzugeben.
    • Lösung: Stelle sicher, dass Du ActiveSheet oder eine spezifische Referenz wie Sheets("Tabelle1") verwendest. Beispielsweise:
wsIndex = Sheets("Tabelle1").Index
  • Falscher Indexwert:
    • Ursache: Möglicherweise beziehst Du Dich auf ein nicht existierendes Worksheet.
    • Lösung: Überprüfe, ob das angegebene Worksheet tatsächlich vorhanden ist.

Alternative Methoden

Neben der Verwendung des ActiveSheet.Index kannst Du auch den Index durch andere Methoden abrufen:

  • Verwendung von Sheets-Objekten:
Dim index As Integer
index = Sheets(1).Index ' Gibt den Index des ersten Worksheets zurück
  • Durchlauf durch alle Worksheets:
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
    Debug.Print ws.Name & " hat den Index " & ws.Index
Next ws

Praktische Beispiele

Hier sind einige Beispiele für die Verwendung des worksheet index in verschiedenen Szenarien:

  1. Index eines spezifischen Worksheets:
Sub ShowIndex()
    MsgBox "Der Index von 'Tabelle1' ist: " & Sheets("Tabelle1").Index
End Sub
  1. Alle Indizes in einer ComboBox auflisten:
Sub ListAllSheetIndexes()
    Dim ws As Worksheet
    ComboBox1.Clear
    For Each ws In ThisWorkbook.Worksheets
        ComboBox1.AddItem ws.Name & " - Index: " & ws.Index
    Next ws
End Sub

Tipps für Profis

  • Verwendung von Worksheets vs. Sheets: Beachte, dass Worksheets nur Arbeitsblätter zurückgibt, während Sheets auch Diagramme oder andere Objekte enthalten kann. Überlege Dir, welche Methode für Deinen Anwendungsfall besser geeignet ist.

  • Error Handling einbauen: Verwende On Error Resume Next, um Fehler beim Zugriff auf Worksheets zu vermeiden, und überprüfe anschließend, ob der Index gültig ist.


FAQ: Häufige Fragen

1. Wie kann ich ein Worksheet nach Index auswählen?
Du kannst ein Worksheet nach Index wie folgt auswählen:

Worksheets(1).Select ' Wählt das erste Worksheet aus

2. Was ist der Unterschied zwischen Sheets und Worksheets?
Sheets umfasst alle Blätter in der Arbeitsmappe, einschließlich Diagramme. Worksheets bezieht sich ausschließlich auf Arbeitsblätter.

3. Wie kann ich alle Tage eines Monats in einer ComboBox auflisten?
Hier ist ein Beispiel, wie Du alle Tage eines bestimmten Monats in einer ComboBox auflisten kannst:

Dim i As Long
Dim Jahr As Integer
Dim Monat As Integer
Jahr = 2008
Monat = 2
ComboBox1.Clear
For i = DateSerial(Jahr, Monat, 1) To DateSerial(Jahr, Monat + 1, 0)
    ComboBox1.AddItem Format(i, "DD.MM.YYYY")
Next

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