Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1780to1784
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

ListBox RowSource mit Variabler Zeile

ListBox RowSource mit Variabler Zeile
05.09.2020 11:31:10
Max
Guten Tag,
ich bin neu hier und hoffe, dass mir jemand bei meinem Anliegen helfen kann.
Ich habe eine ListBox mit verschiedenen Namen in einer Spalte und Teilnehmerurkunden in der anderen Spalte. Da es recht viele Namen sind wollte ich auch eine Suchfunktion einbauen, welche dann das einzelne Ergebnis, also die Person mit Anzahl Teilnehmerurkunde in die ListBox zu sehen ist.
Private Sub CommandButton6_Click()
Dim Name As String
Dim Zeile As Long
Dim ZeileMax As Long
ZeileMax = Tabelle4.Cells(Rows.Count, 6).End(xlUp).Row
Name = InputBox("Bitte Name eingeben (NachnameVorname) - ohne Leerzeichen dazwischen!", " _
Namenseingabe", "NachnameVorname")
For Zeile = 2 To ZeileMax
If Tabelle4.Cells(Zeile, 6).Value = Name Then
UserForm1.ListBox1.RowSource = Tabelle4.Range(Cells(Zeile, 6), Cells(Zeile, 7))
Exit Sub
End If
Next Zeile
MsgBox "Teilneher konnte nicht gefunden werden!", vbCritical, "Achtung"
End Sub

Das Problem ist, dass ich nicht weiß, wie ich die RowSource richtig eingebe... normalerweise würde ja bspw. UserForm1.ListBox1.RowSource = "Tabelle4!F2:G" & ZeileMaxListBox da stehen, was auch super funktioniert.
Vielen lieben Dank für Hilfreiche Kommentare.
Viele Grüße

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

Betreff
Datum
Anwender
Anzeige
AW: ListBox RowSource mit Variabler Zeile
05.09.2020 11:44:53
Nepumuk
Hallo Max,
teste mal:
Private Sub CommandButton6_Click()
    Dim strName As String
    Dim objZelle As Range
    
    Call ListBox1.Clear
    
    strName = InputBox("Bitte Name eingeben (NachnameVorname) - ohne Leerzeichen dazwischen!", _
        "Namenseingabe", "NachnameVorname")
    
    Set objZelle = Tabelle4.Columns(6).Find(What:=strName, _
        LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False)
    
    If Not objZelle Is Nothing Then
        With ListBox1
            .AddItem objZelle.Text
            .List(0, 1) = objZelle.Offset(0, 1).Text
        End With
        Set objZelle = Nothing
    Else
        MsgBox "Teilneher konnte nicht gefunden werden!", vbCritical, "Achtung"
    End If
End Sub

Gruß
Nepumuk
Anzeige
AW: ListBox RowSource mit Variabler Zeile
05.09.2020 11:53:21
Max
Vielen Dank für Ihre Antwort.
Leider streikt der Makro bereits bei ListBox.Clear. Ich habe noch UserForm2.ListBox1.Clear geschrieben, aber das funktioniert auch nicht.
Erneut vielen Dank für Ihre Hilfe
AW: ListBox RowSource mit Variabler Zeile
05.09.2020 12:27:57
Nepumuk
Hallo Max,
Leider streikt der Makro bereits bei ListBox.Clear.
Wie habe ich das zu verstehen?
Gruß
Nepumuk
AW: ListBox RowSource mit Variabler Zeile
05.09.2020 11:45:12
Oberschlumpf
Hi,
UserForm1.ListBox1.RowSource = "Tabelle4!F2:G" & ZeileMaxListBox
und wieso funktioniert das nicht, bzw was genau passiert bei Verwendung dieses Codes?
Ciao
Thorsten
AW: ListBox RowSource mit Variabler Zeile
05.09.2020 12:00:46
Daniel
Hi
Listbox1.RowSorce = "Tabelle4!F" & Zeile & ":G" & Zeile
Ergibt sich eigentlich aus dem, was du schon kennst, du musst da nur einen Schritt weiterdenken und die Zeile nicht nur am Ende, sondern auch in der Mitte des Codes einfügen, um den Adresstring für Rowsource zu erstellen.
Gruß Daniel
Anzeige
AW: ListBox RowSource mit Variabler Zeile
05.09.2020 12:31:38
Max
Super,
vielen Dank für Ihre Hilfe. Das hat funktioniert.
Einen schönen Tag noch!
AW: ListBox RowSource mit Variabler Zeile
05.09.2020 12:04:10
Werner
Hallo,
da würde ich auch mit Find arbeiten anstatt in einer Schleife über die Einträge zu hoppeln.
Private Sub CommandButton6_Click()
Dim Name As String, raFund As Range
Name = InputBox("Bitte Name eingeben (NachnameVorname) - ohne Leerzeichen dazwischen!", _
"Namenseingabe", "NachnameVorname")
If Not Name = vbNullString And Name  "NachnameVorname" Then
Name = Replace(Name, " ", "")
With Tabelle4
Set raFund = .Columns(6).Find(what:=Name, LookIn:=xlValues, lookat:=xlWhole)
If Not raFund Is Nothing Then
UserForm1.ListBox1.RowSource = raFund.Resize(, 2).Address
Else
MsgBox "Teilneher konnte nicht gefunden werden!", vbCritical, "Achtung"
End If
End With
End If
Set raFund = Nothing
End Sub
Gruß Werner
Anzeige
AW: ListBox RowSource mit Variabler Zeile
05.09.2020 12:32:56
Max
Vielen Dank für Ihre Hilfe.
Ich bin den umständlichen Weg gegangen, da ich mit dem Find meine Probleme habe... aber Ihre Lösung ist doch recht charmant. Vielleicht sollte ich mich etwas näher damit befassen.
Erneut vielen Dank!
Gerne u. Danke für die Rückmeldung und...
05.09.2020 12:44:10
Werner
Hallo,
...hier per Du.
Gruß Werner
AW: Gerne u. Danke für die Rückmeldung und...
06.09.2020 08:16:11
Max
Guten Tag,
noch eine kurze Frage als Nachtrag: Kann die Find Funktion auch mit mehreren Treffern funktionieren? Bei meinem Sachverhalt kann eine Person mehrere Programme besucht haben und ich würde gerne die Gesamttabelle so filtern, dass in einer ListBox die Programme einer gesuchten Person auftauchen.
Meine Bisherige ListBox hat so gearbeitet, dass mir nur die Gesamtzahl an teilgenommenen Programmen angezeigt wurde.
Erneut vielen Dank.
Anzeige
AW: Gerne u. Danke für die Rückmeldung und...
06.09.2020 11:05:22
Nepumuk
Hallo Max,
teste mal:
Private Sub CommandButton6_Click()
    Dim strName As String, strFirstAddress As String
    Dim objZelle As Range
    
    strName = InputBox("Bitte Name eingeben (NachnameVorname) - ohne Leerzeichen dazwischen!", _
        "Namenseingabe", "NachnameVorname")
    
    If strName <> vbNullString And StrPtr(strName) <> 0 Then
        
        ListBox1.RowSource = vbNullString
        Call ListBox1.Clear
        
        Set objZelle = Tabelle4.Columns(6).Find(What:=strName, _
            LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False)
        
        If Not objZelle Is Nothing Then
            
            strFirstAddress = objZelle.Address
            
            Do
                
                With ListBox1
                    .AddItem objZelle.Text
                    .List(0, 1) = objZelle.Offset(0, 1).Text
                End With
                
                Set objZelle = Tabelle4.Columns(6).FindNext(After:=objZelle)
                
            Loop Until objZelle.Address = strFirstAddress
            
            Set objZelle = Nothing
            
        Else
            MsgBox "Teilneher konnte nicht gefunden werden!", vbCritical, "Achtung"
        End If
    End If
End Sub

Gruß
Nepumuk
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige