Listbox Auswahl in Label schreiben

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Label ListBox TextBox MsgBox
Bild

Betrifft: Listbox Auswahl in Label schreiben
von: Sven
Geschrieben am: 20.08.2015 13:30:58

Hi zusammen,
Ich hänge schon wieder und komme nicht auf den richtigen Ansatz.
Auch die SuFu konnte nicht helfen.
In einer Textbox wird ein Suchbegriff eingegeben. Mit dem Ergebnis fülle ich eine Listbox. Nun möchte ich in der Listbox einen Eintrag auswählen. Dieser Eintrag enthält viel mehr Daten welche nur in dem Tabellenblatt (alles in einer Zeile) zu finden sind.
Beispiel: Suche nach Audi A5 (in textbox)
Listbox zeigt nun Audi A5 Avant, Audi A5 Sportback etc. an.
Jetzt möchte ich einen Eintrag auswählen und mir dadurch weitere Details anzeigen lassen. Diese weiteren Details befinden sich in der gleichen Zeile im Tabellenblatt.
Verschiedene labels sollen mit den weiteren Informationen beschrieben werden.
Ich habe zuerst versucht mir den listbox eintrag auf ein seperates Teabellenblatt zu kopieren und dann per sverweis die weiteren Daten in bestimmte Zellen zu schreiben. Die Zellen dann über die label.caption wieder rückwärts einzulesen.
Bei vielen Datensätzen wird das aber sehr langsam und ich bin mir sicher ich kann in VBA über die Auswahl ebenso die Labels beschriften, oder?
Die Listbox fülle ich mit folgendem Code:

Private Sub Suche_1_Enter_Click()
Dim xSuche, xAdresse, xErste As String
Dim y As Boolean
Dim arr() As Variant
Dim rng As Range
Dim iRowU As Long
xSuche = SSD_Suchen.Suchfeld_1.Value
If xSuche = "" Then
    MsgBox "Bitte erst einen Suchbegriff eingeben!", vbExclamation, "Achtung!"
    Suchfeld_1.SetFocus
    Exit Sub
End If
Set rng = Worksheets("Tabelle2").Range("B:B").Find _
    (xSuche, lookat:=xlPart, LookIn:=xlValues)
    If Not rng Is Nothing Then
    With Worksheets("Tabelle2")
        xErste = rng.Address(False, False)
        y = True
        Do Until xAdresse = xErste
            ReDim Preserve arr(0 To 1, 0 To iRowU)
            arr(0, iRowU) = .Cells(rng.Row, 2)
            arr(1, iRowU) = .Cells(rng.Row, 3)
            iRowU = iRowU + 1
            Set rng = .Range("B:B").FindNext(after:=rng)
            xAdresse = rng.Address(False, False)
        Loop
        xAdresse = ""
        xErste = ""
    End With
    End If
If y = False Then
    MsgBox "Der Suchbegriff wurde nicht gefunden!"
    Suchfeld_1.SetFocus
Else
    SSD_Suchen.ListBox1.Column = arr
End If
End Sub
Nun die Frage:
Wie kann ich einen Eintrag auswählen und aus der gleichen Reihe im Tabellenblatt bestimmte Zellen auf labels übertragen?
Ich hoffe ich habe mich verständlich ausgedrückt.
Vielen Dank vorab!
Gruß
Sven

Bild

Betrifft: AW: Listbox Auswahl in Label schreiben
von: Sven
Geschrieben am: 20.08.2015 14:32:28
Hi zusammen,
ist mein Ansatz richtig :)

readMB.Caption = WorksheetFunction.VLookup(ListBox1.value, Worksheets("Tabelle2").range

Jetzt müsste ich doch "nur" die range bestimmen, welche aber ja durch die Auswahl der Listbox schon bestimmt ist.
Ich hänge :)
Für Hilfe wäre ich dankbar.
Beste Grüße
Sven

Bild

Betrifft: Einen Schritt zurück - Array Frage
von: Sven
Geschrieben am: 21.08.2015 09:01:39
Moin zusammen,
ich glaube mit meinem Ansatz lag ich total falsch deshalb ein andere Ansatz.
Da ich meine Listbox ja mit einem Array fülle sind die Daten ja bereits vorhanden.
Kann ich weitere Daten ins array laden diese aber nicht sofort anzeigen lassen. Also die Spalten in der Listbox weiter auf 3 beschränkt lassen?
Aktuell hat mein Array 3 Spalten, ich könnte aber alle 30 Spalten einlesen und nach Doppelclick Event übertragen lassen, richtig?
Gibt es eine Simple Methode Array Daten als label.caption anzeigen zu lassen!?
so lese ich die Daten in mein array:

Set rng = Worksheets("Tabelle2").Range("B:B").Find _
    (xSuche, lookat:=xlPart, LookIn:=xlValues)
    If Not rng Is Nothing Then
    With Worksheets("Tabelle2")
        xErste = rng.Address(False, False)
        y = True
        Do Until xAdresse = xErste
            ReDim Preserve arr(0 To 2, 0 To iRowU)
            arr(0, iRowU) = .Cells(rng.Row, 2)
            arr(1, iRowU) = .Cells(rng.Row, 3)
            arr(2, iRowU) = .Cells(rng.Row, 4)
            iRowU = iRowU + 1
            Set rng = .Range("B:B").FindNext(after:=rng)
            xAdresse = rng.Address(False, False)
        Loop
        xAdresse = ""
        xErste = ""
    End With
    End If
Mir ist aber nicht bekannt wie ich einzelne array Daten nun weiterverarbeiten kann!?
Bitte um Denkanstoß :)
Danke euch
Gruß
Sven

Bild

Betrifft: AW: Einen Schritt zurück - Array Frage
von: Sven
Geschrieben am: 21.08.2015 14:51:25
TGIF :)
Ich schließe mal den Thread und werde versuchen einen richtigen Thread mit Datei zu posten.
Schönes Wochenende!

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Listbox Auswahl in Label schreiben"