Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Listbox dynamisch mit Daten füllen

Listbox dynamisch mit Daten füllen
29.09.2008 16:02:44
Braleta
Hallo Gemeinde,
nach Recherchen im Archiv, in der Literatur und in mehreren Foren wage ich es jetzt, meine Frage hier zu stellen in der Hoffnung, eine Lösung zu erhalten.
Ich dachte immer ich wäre sooooooooo schlecht nicht mit Excel und VBA, aber jetzt zweifle ich ein bisschen daran.
Mein Problem:
Ich habe (in worksheets("Tabelle1")) ein Zeit-Berichtssystem, das soweit personalisiert wird, dass Namen und Vornamen des Berichtenden eingegeben werden und daraus dann Stammdaten ermittelt werden wie z.B. Personalnummer, Kostenstelle, Bereich, e-Mail-Adresse, u.s.w....
Diese Daten finde ich in einem zweiten Worksheet, in dem eine alphabetisch aufsteigend nach Nachnamen sortierte Tabelle steht.
Tippt jemand seinen Namen falsch ein, oder wird im backoffice für einen Mitarbeiter berichtet, dessen NamensSchreibweise nicht genau bekannt ist , soll es ausreichen, den ersten Buchstaben des Nachnamens einzugeben und diesen dann als Suchparameter für alle Nachnamen mit diesem Buchstaben zu finden.
Diese gefilterten Namen will ich in einer Listbox ausgeben, so dass einfach nur der richtige Namen angeklickt zu werden braucht , damit ich daraus dann die richtigen Werte finden und zur Verfügung stellen kann.
Bestimmt ist die Lösung einfach, ich komme aber einfach nicht darauf.
(ich bin anscheinend tatsächlich nicht so gut, wir ich gerne von mir glauben möchte).
Das Ganze wird im "Worksheet_SelectionChange(ByVal Target As Range)" abgewickelt.
Herzlichen Dank im Voraus
...braleta
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listbox dynamisch mit Daten füllen
29.09.2008 16:20:08
Rudi
Hallo,

den ersten Buchstaben des Nachnamens einzugeben


wo eingeben?
Gruß
Rudi

AW: Listbox dynamisch mit Daten füllen
29.09.2008 16:39:00
Braleta
Rudi,
tut mir leid, das habe ich nicht gesagt.
Ich habe ein Berichtsblatt, das neben den 31/30 Tagen eines Monats noch "Personalfelder" hat, und zwar Nachname und Vorname.
Gebe ich in eines dieser beiden Felder einen Char-String ein, wird der Change-Event gestartet und über den suche ich mit dem eingegebenen Namen in der Personaltabelle nach einem Match.
Habe ich einen Match, kann ich alle anderen relevanten Felder (PNUM, KOST, URL, MAIL, Bereich, etc...) füllen.
Habe ich keinen Match, verwende ich den ersten Buchstaben des Nachnamens als Suchargument, alle Namen mit dem gleichen ersten Buchstaben zu finden, um dem Endbenutzer alle diese gefundenen Namen anzubieten.
Meine Idee war es, dieses Angebot mit einer Listbox zu realisieren, weil man darin Einträge durch anklicken selektieren kann.
Aus einem solchen selektierten Wert kann/könnte ich dann die relevanten Felder für das Berichtsblatt füllen.
Jedenfalls, Rudi, schon mal danke für das Interesse...
Anzeige
AW: Listbox dynamisch mit Daten füllen
29.09.2008 16:38:45
Tino
Hallo,
hier mal ein Beispiel.
Hier wird in Spalte A in der Tabelle2 gesucht, Gorß.- und Kleinschreibung wird beachtet.
Dialog UserForm1
Option Explicit 
'Benötigt Userform 
'ein Textfeld mit Namen TextBox1 
'ein Listenfeld mit dem Namen ListBox1 
'ein Befehlsschaltfleche mit dem Namen CommandButton1 
Private Sub CommandButton1_Click() 
Dim tempAdresse As String 
Dim Zelle As Range 
Dim A As Long 
Me.ListBox1.Clear 
With Tabelle2 'Tabelle wo Daten gesucht werden sollen 
    For A = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row 
        If A = 1 Then 
             Set Zelle = .Range("A:A").Find(TextBox1, , xlValues, xlPart, xlByRows, xlNext, True, False) 
             If Zelle Is Nothing Then Exit For 
             Me.ListBox1.AddItem Zelle 
             tempAdresse = Zelle.Address 
        Else 
             Set Zelle = .Range("A:A").FindNext(Zelle) 
             If Zelle.Address = tempAdresse Or Zelle Is Nothing Then Exit For 
             Me.ListBox1.AddItem Zelle 
        End If 
    Next A 
End With 
End Sub 
 
 


Gruß Tino

Anzeige
AW: Listbox dynamisch mit Daten füllen
29.09.2008 16:57:00
Braleta
Hallo Tino,
danke für den Code, ich lese ihn mir durch und versuche, ihn an meine Bedürfnisse anzupassen.
Das "Me." ist schon mal ein interessanter Ansatz, ehrlich, den kenne ich (noch) nicht.
Jedenfalls danke; ich probiers, und dann melde ich mich!
...braleta (bruno)
AW: Listbox dynamisch mit Daten füllen
29.09.2008 17:25:00
Tino
Hallo,
"Me." gibt nur die Userform zurück (Kurtzschreibweise) in der Du dich befindest.
Anstelle von Me., könntest Du auch den Namen der Userform einsetzen.
Beispiel:
Me.ListBox1.Clear = UserForm1.ListBox1.Clear
Gruß Tino
Anzeige
AW: Listbox dynamisch mit Daten füllen
30.09.2008 09:36:54
braleta
Hallo Tino, hallo Rudi,
herzlichen Dank für die Hilfe, ich bin jetzt da, wo ich hin wollte.
Tino, das ".me" war genau der hilfreiche Part, ich verstehe mich selbst einfach nicht mehr, dass ich nicht selbst die volle Qualifikation verwendet habe.
Jetzt, mit der vollen Qualifikation (UserForm1.ListBox1.AddItem = ...), klappt alles bestens.
Noch ein Mal danke!
...braleta (bruno)
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Listbox dynamisch mit Daten füllen in Excel und VBA


Schritt-für-Schritt-Anleitung

Um eine Listbox in Excel dynamisch mit Daten zu füllen, folge diesen Schritten:

  1. Erstelle eine UserForm: Öffne den VBA-Editor (ALT + F11) und füge eine neue UserForm hinzu.

  2. Füge Steuerelemente hinzu: Platziere ein Textfeld (TextBox1), eine ListBox (ListBox1) und einen Button (CommandButton1) auf der UserForm.

  3. Schreibe den VBA-Code: Füge den folgenden Code in das Codefenster der UserForm ein:

    Private Sub CommandButton1_Click()
        Dim tempAdresse As String
        Dim Zelle As Range
        Dim A As Long
        Me.ListBox1.Clear
        With Tabelle2 'Hier wird die Tabelle angegeben, die die Daten enthält
            For A = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
                If A = 1 Then
                    Set Zelle = .Range("A:A").Find(TextBox1, , xlValues, xlPart, xlByRows, xlNext, True, False)
                    If Zelle Is Nothing Then Exit For
                    Me.ListBox1.AddItem Zelle
                    tempAdresse = Zelle.Address
                Else
                    Set Zelle = .Range("A:A").FindNext(Zelle)
                    If Zelle.Address = tempAdresse Or Zelle Is Nothing Then Exit For
                    Me.ListBox1.AddItem Zelle
                End If
            Next A
        End With
    End Sub
  4. Testen: Starte die UserForm und gib einen Namen in das Textfeld ein. Klicke auf den Button, um die Listbox mit passenden Namen zu füllen.


Häufige Fehler und Lösungen

  1. Fehler: Listbox bleibt leer
    Lösung: Stelle sicher, dass der eingegebene Name im richtigen Format vorliegt und dass die Daten in der richtigen Tabelle vorhanden sind.

  2. Fehler: "Typ nicht definiert"
    Lösung: Überprüfe, ob alle Variablen korrekt deklariert sind und der richtige Datentyp verwendet wird.


Alternative Methoden

Eine alternative Methode, um eine Listbox zu füllen, ist die Verwendung von Array-Listen. Du kannst die Namen in ein Array laden und dann die Listbox in einem Schritt füllen. Hier ist ein Beispiel:

Private Sub CommandButton1_Click()
    Dim Namen() As String
    Dim i As Long
    ReDim Namen(0)

    With Tabelle2
        For i = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
            If .Cells(i, 1) Like TextBox1.Value & "*" Then
                Namen(UBound(Namen)) = .Cells(i, 1)
                ReDim Preserve Namen(UBound(Namen) + 1)
            End If
        Next i
    End With

    For i = LBound(Namen) To UBound(Namen) - 1
        Me.ListBox1.AddItem Namen(i)
    Next i
End Sub

Praktische Beispiele

Hier ist ein praktisches Beispiel, das zeigt, wie du die Listbox mit Namen aus einer Tabelle fülst. Stelle sicher, dass deine Daten in Tabelle2 in Spalte A stehen und dass du einen passenden Suchbegriff in TextBox1 eingibst.


Tipps für Profis

  • Nutze die Find-Methode effizient, um die Suche zu optimieren.
  • Achte auf die Groß- und Kleinschreibung beim Suchen von Namen, um unerwartete Fehler zu vermeiden.
  • Implementiere eine Fehlerbehandlung, um mögliche Laufzeitfehler abzufangen und dem Benutzer entsprechende Meldungen anzuzeigen.

FAQ: Häufige Fragen

1. Frage
Wie kann ich die Listbox automatisch aktualisieren, wenn sich die Daten in der Tabelle ändern?
Antwort: Du kannst die Listbox im Worksheet_Change Event aktualisieren, um sicherzustellen, dass die neuesten Daten angezeigt werden, wenn Änderungen vorgenommen werden.

2. Frage
Wie kann ich mehrere Werte aus der Listbox auswählen?
Antwort: Stelle die MultiSelect-Eigenschaft der Listbox auf fmMultiSelectMulti, um mehrere Auswahlmöglichkeiten zu ermöglichen.

3. Frage
Ist es notwendig, die UserForm jedes Mal neu zu laden?
Antwort: Nein, du kannst die UserForm offen lassen und die Listbox bei Bedarf aktualisieren, indem du den entsprechenden Code im Button-Click-Event verwendest.

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