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

Leerzeilen beim Einlesen in ListBox ignorieren

Forumthread: Leerzeilen beim Einlesen in ListBox ignorieren

Leerzeilen beim Einlesen in ListBox ignorieren
21.09.2007 20:23:00
Heiner
Guten Abend Forum,
ich habe ein Problem beim Einlesen von Zeilen (Spalten B, D:F) der Tabelle1 in die ListBox1 meiner UserForm1.
Es werden leider alle Zeilen eingelesen, sowohl die mit Werten gefüllten, wie auch die Leerzeilen.
Ist es möglich, nur die mit Wert gefüllten Zellen einzulesen?
Für einen Beispiel-Code wäre ich sehr dankbar.
Grüsse, Heiner

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Leerzeilen beim Einlesen in ListBox ignorieren
21.09.2007 20:36:43
Renee
Hello Heiner,
Ja das ist möglich.
Was ist das für ein Typ Listbox (Steuerelement oder Formular) und wo (direkt auf Blatt oder Userform) befindet sie sich ? Was hast du bis jetzt für einen Code, bzw. WIE überträgst du die Daten jetzt ?
GreetZ Renee

AW: Leerzeilen beim Einlesen in ListBox ignorieren
21.09.2007 20:39:00
Leser
"...Zeilen (Spalten B, D:F) der Tabelle1 in die ListBox1 meiner UserForm1."

Anzeige
wer lesen kann, hat Vorteile ;-) owT
21.09.2007 20:44:00
Renee

AW: Leerzeilen beim Einlesen in ListBox ignorieren
Heiner
Hallo Renee,
die ListBox befindet sich in der UserForm1.
Der Code zum Einlesen (noch nicht ganz komplett...):

Private Sub UserForm_Activate()
With ListBox1
.ColumnWidths = "50;100;60;0"
.ColumnCount = 4
End With
End Sub



Private Sub UserForm_Initialize()
Dim arr() As Variant
Dim i As Integer
Dim iRow As Integer
Dim iAnz As Integer
With Sheets("Tabelle1")
iAnz = WorksheetFunction.CountA(.Range("b4:f500"))
ReDim arr(0 To iAnz - 1, 0 To 4)
iRow = 0
For i = 4 To 500
If .Cells(i, 2).Value  "" Then
arr(iRow, 0) = .Cells(i, 2)
arr(iRow, 1) = .Cells(i, 5)
arr(iRow, 2) = .Cells(i, 4)
iRow = iRow + 1
End If
Next
End With
ListBox1.List = arr
End Sub


Hast Du eine Idee?
Grüsse, Heiner

Anzeige
AW: Leerzeilen beim Einlesen in ListBox ignorieren
21.09.2007 21:10:52
Renee
Hello Heiner,
Probier's mal so:

Private Sub UserForm_Initialize()
Dim lRow As Long
Dim lastRow As Long
ListBox1.Clear
lastRow = Sheets("Tabelle1").Range("B" & Sheets("Tabelle1").Rows.Count).End(xlUp).Row
For lRow = 1 To lastRow
If Sheets("Tabelle1").Cells(lRow, 2)  "" Then
ListBox1.AddItem (Sheets("Tabelle1").Cells(lRow, 2))
ListBox1.List(ListBox1.ListCount - 1, 2) = Sheets("Tabelle1").Cells(lRow, 4)
ListBox1.List(ListBox1.ListCount - 1, 3) = Sheets("Tabelle1").Cells(lRow, 5)
End If
Next lRow
End Sub


GreetZ Renee

Anzeige
AW: Leerzeilen beim Einlesen in ListBox ignorieren
Renee
Hi again,
Ich bin nicht sicher, ob deine Listbox einen Columncount von 3 oder 4 hat.
Mein Code funktioniert für eine 4spaltige.
Für eine 3spaltige diesen Teil ersetzen:

ListBox1.List(ListBox1.ListCount - 1, 1) = Sheets("Tabelle1").Cells(lRow, 4)
ListBox1.List(ListBox1.ListCount - 1, 2) = Sheets("Tabelle1").Cells(lRow, 5)


Schönen Abend noch
Renee

Anzeige
AW: Leerzeilen beim Einlesen in ListBox ignorieren
21.09.2007 21:28:00
Heiner
Hallo Renee,
genau das war es! Vielen Dank!
Happy Weekend,
Heiner
;
Anzeige

Infobox / Tutorial

Leerzeilen beim Einlesen in ListBox ignorieren


Schritt-für-Schritt-Anleitung

Um Leerzeilen beim Einlesen von Daten in eine ListBox in einer UserForm zu ignorieren, kannst du den folgenden VBA-Code verwenden. Dieser Code geht davon aus, dass sich die ListBox in UserForm1 befindet und die Daten aus Tabelle1 in den Spalten B, D und F gelesen werden.

  1. Öffne den VBA-Editor (Alt + F11).
  2. Gehe zu deiner UserForm und wähle den entsprechenden Code-Bereich aus.
  3. Füge den folgenden Code in die UserForm_Initialize-Prozedur ein:
Private Sub UserForm_Initialize()
    Dim lRow As Long
    Dim lastRow As Long
    ListBox1.Clear
    lastRow = Sheets("Tabelle1").Range("B" & Sheets("Tabelle1").Rows.Count).End(xlUp).Row
    For lRow = 1 To lastRow
        If Sheets("Tabelle1").Cells(lRow, 2) <> "" Then
            ListBox1.AddItem (Sheets("Tabelle1").Cells(lRow, 2))
            ListBox1.List(ListBox1.ListCount - 1, 2) = Sheets("Tabelle1").Cells(lRow, 4)
            ListBox1.List(ListBox1.ListCount - 1, 3) = Sheets("Tabelle1").Cells(lRow, 5)
        End If
    Next lRow
End Sub
  1. Schließe den VBA-Editor und teste deine UserForm.

Häufige Fehler und Lösungen

Einige häufige Fehler, die beim Einlesen von Daten in eine ListBox auftreten können, sind:

  • Fehlerhafte Spaltenanzahl: Wenn du eine ListBox mit 3 Spalten verwendest, stelle sicher, dass du den Code entsprechend anpasst. Der Teil mit ListBox1.List(ListBox1.ListCount - 1, 1) muss möglicherweise entfernt oder geändert werden.

  • Leerzeilen werden trotzdem eingelesen: Überprüfe, ob die Bedingung If Sheets("Tabelle1").Cells(lRow, 2) <> "" korrekt implementiert ist.

  • Falsche Datenquelle: Achte darauf, dass die Daten tatsächlich in Tabelle1 vorhanden sind und die richtigen Spalten referenziert werden.


Alternative Methoden

Eine weitere Möglichkeit, Leerzeilen zu ignorieren, ist die Verwendung von Arrays. Dies kann die Leistung verbessern, insbesondere bei größeren Datensätzen. Der folgende Code zeigt, wie du die Daten in ein Array laden und dann in die ListBox übertragen kannst:

Private Sub UserForm_Initialize()
    Dim arr() As Variant
    Dim i As Long
    Dim iRow As Long
    Dim iAnz As Long

    With Sheets("Tabelle1")
        iAnz = WorksheetFunction.CountA(.Range("B4:B500"))
        ReDim arr(0 To iAnz - 1, 0 To 3)
        iRow = 0
        For i = 4 To 500
            If .Cells(i, 2) <> "" Then
                arr(iRow, 0) = .Cells(i, 2)
                arr(iRow, 1) = .Cells(i, 4)
                arr(iRow, 2) = .Cells(i, 5)
                iRow = iRow + 1
            End If
        Next i
    End With
    ListBox1.List = arr
End Sub

Praktische Beispiele

Hier sind zwei Beispiele, wie du den Code anpassen kannst, je nachdem, wie viele Spalten du in deiner ListBox benötigst:

  • 3-Spalten-ListBox:

    ListBox1.List(ListBox1.ListCount - 1, 1) = Sheets("Tabelle1").Cells(lRow, 4)
  • 4-Spalten-ListBox: Der oben angegebene Code funktioniert bereits.


Tipps für Profis

  • Verwende With-Anweisungen, um den Code leserlicher und effizienter zu gestalten.
  • Überlege, ob du die ListBox beim Initialisieren mit ListBox1.Clear leeren möchtest, um sicherzustellen, dass keine alten Werte angezeigt werden.
  • Füge Fehlerbehandlungsroutinen hinzu, um unerwartete Fehler abzufangen.

FAQ: Häufige Fragen

1. Kann ich auch andere Spalten beim Einlesen in die ListBox berücksichtigen? Ja, du kannst die Spaltenreferenzen im Code anpassen, um verschiedene Spalten auszulesen.

2. Warum funktioniert der Code nicht in Excel 2010? Stelle sicher, dass du die richtigen Berechtigungen hast und die Benutzerform korrekt erstellt wurde. Der Code sollte jedoch auch in Excel 2010 funktionieren, sofern die Syntax korrekt 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