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

nur bestimmte zeilen in listbox anzeigen

Forumthread: nur bestimmte zeilen in listbox anzeigen

nur bestimmte zeilen in listbox anzeigen
29.11.2002 15:07:56
goofe
hallo,
folgendes userform/listbox-problem:
in der listbox in einer userform lasse ich mir alle gefüllten zeilen der tabelle1 ab der 3.zeile von der spalte a bis zur spalte h anzeigen (siehe makrotext weiter unten). ich möchte aber, dass in der listbox nicht alle zeilen mit inhalt angezeigt werden, sondern nur die zeilen, bei der die entsprechenden zellen in spalte i (spalte 9) nicht leer sind. die zeilen, bei denen die entsprechenden zellen in spalte i leer sind, sollen also nicht in der listbox erscheinen.
wie muss ich nun das nachfolgende makro abändern?

Private Sub Userform_initialize()
Dim i as integer
sheets("tabelle1").activate
i= activesheet.usedrange.rows.count
with userform1.listbox1
.columnCount = 8
.columnHeads = true
.rowSource = "tabelle1!A3:H" & i
.columnWidths = "2cm;2cm;2,1cm;2,1cm;3,5cm;3,2cm;3cm;1,2cm"
end with
end sub

bin für jeden tipp dankbar!

gruss,
goofe

Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: nur bestimmte zeilen in listbox anzeigen
29.11.2002 15:28:35
Hajo
Hallo goofe

das geht nur über eine Schleife

Geruß Hajo

Re: nur bestimmte zeilen in listbox anzeigen
29.11.2002 15:32:10
Ralf Sögel
ColumnHeads gehen nur bei gebundenem control(RowSource)!
Re: nur bestimmte zeilen in listbox anzeigen
29.11.2002 15:52:52
Hajo
Hallo Ralf

Danke für den Tip

Gruß Hajo

Anzeige
Re: nur bestimmte zeilen in listbox anzeigen
29.11.2002 16:00:31
goofe
hallo hajo und ralf,

funktioniert soweit. habt ihr aber nicht noch eine lösung, bei der auch die columnheads funktionieren? jetzt sind die spalten-köpfe nämlich leer, werden aber dringend benötigt!

gibt es also dafür noch eine andere möglichkeit?


gruss,
goofe

Re: nur bestimmte zeilen in listbox anzeigen
29.11.2002 16:02:53
Hajo
Hallo goofe

füge die Spaltenköpfe als ersten ein und Reagiere nich auf die Auswahl der ersten Zeile.

Siehe auch Hinweis von Ralf

Gruß Hajo

Anzeige
Re: nur bestimmte zeilen in listbox anzeigen
29.11.2002 16:20:28
goofe
das verstehe ich jetzt nicht? was meint ralf mit control rowsource?
was soll ich jetzt in deinem makrotext wie abändern, dass die spaltenköpfe auch in der listbox entsprechend drinstehen?

danke!


gruss,
goofe

Re: nur bestimmte zeilen in listbox anzeigen
29.11.2002 16:23:57
Hajo
Hallo Goofe

Ralf hat geschrieben in gebundenen List (also Zusammenhängend mit einmal zuweise)

Du hast nichts geschrieben wo Deine Spaltenköpfe stehen. Ich vermute mal in der Zeile bevor ich mit dem zuweisen anfage. Also den Startpunkt um eins heruntersetzen.

Gruß Hajo

Anzeige
Re: nur bestimmte zeilen in listbox anzeigen
29.11.2002 16:39:22
goofe
also das verstehe ich jetzt absolut nicht. in meiner tabelle1 stehen die spaltenüberschriften in der 2. zeile. die dazugehörigen daten beginnen ab der 3. zeile. die listbox zeigte mir die ganze zeit auch noch die spaltenköpfe mit an. bei deinem folgenden makrotext, werden diese nicht mehr angezeigt. wie muss ich jetzt was und wo ändern?:

Private Sub Userform_initialize()
Dim InI As Long
Dim InZeile As Integer
With Sheets("tabelle1")
With ListBox1
.ColumnCount = 8
' .ColumnHeads = True ' habe ich noch kein Lösung bei For Next
.ColumnWidths = "2cm;2cm;2,1cm;2,1cm;3,5cm;3,2cm;3cm;1,2cm"
End With
For InI = 3 To .UsedRange.Rows.Count
If Cells(InI, 9) <> "" Then
ListBox1.AddItem .Range("A" & InI)
ListBox1.List(InZeile, 1) = .Range("B" & InI)
ListBox1.List(InZeile, 2) = .Range("C" & InI)
ListBox1.List(InZeile, 3) = .Range("D" & InI)
ListBox1.List(InZeile, 4) = .Range("E" & InI)
ListBox1.List(InZeile, 5) = .Range("F" & InI)
ListBox1.List(InZeile, 6) = .Range("G" & InI)
ListBox1.List(InZeile, 7) = .Range("H" & InI)
InZeile = InZeile + 1
End If
Next InI
End With
End Sub

ist gar nicht so einfach :-)

nochmal gruss,
goofe

Anzeige
Re: nur bestimmte zeilen in listbox anzeigen
29.11.2002 16:44:43
Hajo
Hallo goofe

das vertehe ich nicht, die Listbox wird mit den Werten ab Zeile 3 gefüllt. Also bei mir wurde die Zeile 2 (Spaltenköpfe) nicht angezeigt. Ich hätte geschrieben änder InI =3 auf InI =2.

Aber da bei Dir schon die paltenköpfe in der Listbox angezeigt werden, bin ich mit meinem Latein am Ende.

Dieser Beitrag ist für mich abgeschlossen. Ich kann hier keine neuen Lösungen mehr einbringen.

Gruß hajo

Anzeige
Re: nur bestimmte zeilen in listbox anzeigen
29.11.2002 23:47:05
Ralf Sögel
Eine Listbox kann die Header nur anzeigen, wenn sie gebunden ist, das heißt, sie muss mittels RowSource ihre Daten erhalten. Bei AddItem geht das eben nicht.
Workaround:
Lies deine Daten mit einer Schleife in ein(temporäres?) Blatt ein und verwende diesen zellbereich als RowSource, dann klappts auch mit den ColumnHeads!
Anzeige
an Ralf
02.12.2002 09:17:09
Goofe
hallo ralf,
anscheinend hast du verstanden, was ich meine. allerdings verstehe ich nicht, wie das funktionieren soll mit der schleife und temporäremverzeichnis? bin in makros absoluter anfänger.
kannst du mir vielleicht sagen, was ich in meinem makrotext, wo und wie ändern bzw. umschreiben muss?

vielen dank für deine bemühungen!

gruss,
goofe

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Nur bestimmte Zeilen in Listbox anzeigen


Schritt-für-Schritt-Anleitung

Um nur bestimmte Zeilen in einer Listbox einer Userform anzuzeigen, kannst Du das folgende VBA-Makro verwenden. In diesem Beispiel werden nur die Zeilen angezeigt, bei denen die Zellen in Spalte I nicht leer sind. Die Spaltenköpfe werden ebenfalls angezeigt.

  1. Öffne den VBA-Editor in Excel (Alt + F11).
  2. Füge eine neue Userform hinzu und platziere eine Listbox auf der Form.
  3. Füge den folgenden Code in das Codefenster der Userform ein:
Private Sub UserForm_Initialize()
    Dim InI As Long
    Dim InZeile As Integer
    With Sheets("tabelle1")
        With ListBox1
            .ColumnCount = 8
            .ColumnHeads = True
            .ColumnWidths = "2cm;2cm;2,1cm;2,1cm;3,5cm;3,2cm;3cm;1,2cm"
        End With

        ' Hier wird die Schleife verwendet
        For InI = 3 To .UsedRange.Rows.Count
            If Cells(InI, 9) <> "" Then
                ListBox1.AddItem .Range("A" & InI)
                ListBox1.List(InZeile, 1) = .Range("B" & InI)
                ListBox1.List(InZeile, 2) = .Range("C" & InI)
                ListBox1.List(InZeile, 3) = .Range("D" & InI)
                ListBox1.List(InZeile, 4) = .Range("E" & InI)
                ListBox1.List(InZeile, 5) = .Range("F" & InI)
                ListBox1.List(InZeile, 6) = .Range("G" & InI)
                ListBox1.List(InZeile, 7) = .Range("H" & InI)
                InZeile = InZeile + 1
            End If
        Next InI
    End With
End Sub

Häufige Fehler und Lösungen

  • Problem: Die Spaltenköpfe werden nicht angezeigt.

    • Lösung: Stelle sicher, dass .ColumnHeads = True gesetzt ist und die Spaltenüberschriften in der Zeile 2 stehen.
  • Problem: Die Listbox zeigt auch leere Zeilen an.

    • Lösung: Überprüfe die IF-Bedingung in der Schleife. Stelle sicher, dass Du den richtigen Zellbereich überprüfst (z.B. Cells(InI, 9)).

Alternative Methoden

Wenn Du die Spaltenköpfe in der Listbox auf andere Weise anzeigen möchtest, kannst Du die Spaltenköpfe manuell hinzufügen. Ein Beispiel:

ListBox1.AddItem "Spalte A"
ListBox1.List(0, 1) = "Spalte B"
' Und so weiter für alle Spaltenköpfe

Dies kann jedoch umständlich sein, wenn Du viele Spalten hast.


Praktische Beispiele

Angenommen, Du hast eine Excel-Tabelle mit den folgenden Daten ab Zeile 2:

A B C D E F G H I
Name Alter Stadt Beruf Gehalt Abteilung Team Projekt Status
Max 30 Berlin Entwickler 50000 IT Team A Projekt 1 aktiv
Anna 25 München Designer 45000 Marketing Team B Projekt 2

In diesem Fall zeigt die Listbox nur die Zeilen mit "aktiv" in Spalte I an.


Tipps für Profis

  • Verwende temporäre Blätter, um die Daten zu speichern, wenn Du mit großen Datenmengen arbeitest.
  • Experimentiere mit der RowSource-Eigenschaft für gebundene Listboxen, um die Performance zu verbessern.

FAQ: Häufige Fragen

1. Frage: Warum werden die Spaltenköpfe nicht angezeigt, wenn ich AddItem verwende?
Antwort: Die Spaltenköpfe werden nur angezeigt, wenn die Listbox mit RowSource gebunden ist. Bei AddItem funktioniert das nicht.

2. Frage: Wie kann ich die Listbox so anpassen, dass sie nur bestimmte Zeilen anzeigt?
Antwort: Du kannst eine Schleife verwenden, um die gewünschten Zeilen zu filtern und nur die relevanten Daten hinzuzufügen. Achte darauf, die richtige Bedingung in der IF-Anweisung zu setzen.

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