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

Tabellenblätter in Userform-Listbox einlesen

Forumthread: Tabellenblätter in Userform-Listbox einlesen

Tabellenblätter in Userform-Listbox einlesen
30.10.2002 19:20:53
Richard Fassbender
Hallo Forum,
ich möchte Tabellenblätter über eine Userform in eine Listbox einlesen und aus der Listbox aufrufen. Im jetzigen Code, werden alle Tabellenblätter in der Listbox dargestellt.
Ich möchte aber, dass ein bestimmtes Tabellenblatt nicht in der Listbox aufgeführt wird.
Wer kann mir weiterhelfen?

Private Sub cmdWeiter_Click()
Dim iCounter As Integer
Dim arr() As String
Dim iItems As Integer
For iCounter = 0 To lstSheets.ListCount - 1
If lstSheets.Selected(iCounter) Then
iItems = iItems + 1
ReDim Preserve arr(1 To iItems)
arr(iItems) = lstSheets.List(iCounter)
End If
Next iCounter
If iItems > 0 Then
Worksheets(arr).Select
End If
Unload Me
End Sub


Private Sub UserForm_Initialize()
Dim wks As Worksheet
For Each wks In ThisWorkbook.Worksheets
lstSheets.AddItem wks.Name
Next wks
End Sub


Vorab schon einmal vielen Dank.

Richard

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Tabellenblätter in Userform-Listbox einlesen
30.10.2002 20:36:53
Mischa Richter

For Each wks In ThisWorkbook.Worksheets

if not lstsheets.name = "DieserNameFälltRaus" then
lstSheets.AddItem wks.Name
endif

müsste gehn

Re: Tabellenblätter in Userform-Listbox einlesen
30.10.2002 21:13:47
Richard Faßbender
Hallo Micha,

erstmal vielen Dank, aber es funktioniert leider nicht!
Was mache ich falsch?

Richard

Re: Tabellenblätter in Userform-Listbox einlesen
30.10.2002 22:36:42
Martin Bolleter
Hallo zusammen

es müsste wohl heissen:

Private Sub UserForm_Initialize()
Dim wks As Worksheet
For Each wks In ActiveWorkbook.Worksheets
if not wks.name = "Nicht dieses Sheet" then
lstSheets.AddItem wks.Name
end if
Next wks
End Sub

Gruss
Martin

Anzeige
Re: Tabellenblätter in Userform-Listbox einlesen
31.10.2002 06:43:27
Richard Faßbender
Hallo Martin,

funzt super, vielen Dank.

Richard

;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Tabellenblätter in Userform-Listbox einlesen


Schritt-für-Schritt-Anleitung

Um Tabellenblätter in eine Userform-Listbox einzulesen und ein bestimmtes Tabellenblatt auszuschließen, kannst du den folgenden VBA-Code verwenden. Dieser Code sollte in das Code-Modul deiner Userform eingefügt werden:

Private Sub UserForm_Initialize()
    Dim wks As Worksheet
    For Each wks In ThisWorkbook.Worksheets
        If Not wks.Name = "Nicht dieses Sheet" Then
            lstSheets.AddItem wks.Name
        End If
    Next wks
End Sub

Private Sub cmdWeiter_Click()
    Dim iCounter As Integer
    Dim arr() As String
    Dim iItems As Integer
    For iCounter = 0 To lstSheets.ListCount - 1
        If lstSheets.Selected(iCounter) Then
            iItems = iItems + 1
            ReDim Preserve arr(1 To iItems)
            arr(iItems) = lstSheets.List(iCounter)
        End If
    Next iCounter
    If iItems > 0 Then
        Worksheets(arr).Select
    End If
    Unload Me
End Sub

Dieser Code stellt sicher, dass beim Initialisieren der Userform nur die gewünschten Tabellenblätter in die Listbox eingefügt werden.


Häufige Fehler und Lösungen

  1. Problem: Tabellenblatt wird trotzdem angezeigt.

    • Lösung: Stelle sicher, dass der Name des auszuschließenden Tabellenblatts exakt mit dem Namen im Code übereinstimmt, einschließlich Groß- und Kleinschreibung.
  2. Problem: Listbox bleibt leer.

    • Lösung: Überprüfe, ob die Userform korrekt initialisiert wird. Stelle sicher, dass die Userform vor dem Ausführen des Codes geöffnet wird.

Alternative Methoden

Eine alternative Möglichkeit wäre, die Filterung direkt im Excel zu machen, bevor du die Daten in die Listbox lädst. Du kannst auch eine separate Funktion erstellen, die eine Liste der gewünschten Blätter zurückgibt.

Function GetSheets() As Collection
    Dim sheetsList As New Collection
    Dim wks As Worksheet
    For Each wks In ThisWorkbook.Worksheets
        If Not wks.Name = "Nicht dieses Sheet" Then
            sheetsList.Add wks.Name
        End If
    Next wks
    Set GetSheets = sheetsList
End Function

Du kannst dann diese Funktion in der UserForm_Initialize-Prozedur aufrufen.


Praktische Beispiele

Angenommen, du hast drei Tabellenblätter: "Daten", "Bericht" und "Nicht dieses Sheet". Mit dem oben genannten Code wird nur "Daten" und "Bericht" in der Listbox angezeigt.


Tipps für Profis

  • Nutze die Select Case-Anweisung, um mehrere Tabellenblätter effizient auszuschließen.
  • Implementiere Fehlerbehandlungen in deinem Code, um unerwartete Fehler während der Ausführung zu vermeiden.
  • Experimentiere mit dem Design deiner Userform, um die Benutzerfreundlichkeit zu verbessern.

FAQ: Häufige Fragen

1. Frage
Wie kann ich mehrere Tabellenblätter ausschließen?
Antwort: Du kannst die If-Bedingung erweitern, um mehrere Namen zu überprüfen, z.B. If Not (wks.Name = "Sheet1" Or wks.Name = "Sheet2") Then.

2. Frage
Funktioniert dieser Code in Excel 2016?
Antwort: Ja, der Code funktioniert in Excel 2010 und späteren Versionen. Achte darauf, dass die VBA-Umgebung aktiviert ist.

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