Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Eintrag ListBox markieren und verwenden

Eintrag ListBox markieren und verwenden
10.09.2015 10:17:44
Sven
Hi zusammen,
folgendes Problem, ich fülle meine Listbox mit folgendem Code:
For Each rngCell In Bereich
If rngCell.EntireRow.Hidden = False Then SSD_Suchen.ListBox1.AddItem rngCell.Value
If rngCell.EntireRow.Hidden = False Then SSD_Suchen.ListBox1.List(ListBox1.ListCount -   _
_
1, 1) = rngCell.Offset(0, 1).Value
If rngCell.EntireRow.Hidden = False Then SSD_Suchen.ListBox1.List(ListBox1.ListCount - 1, 2) = rngCell.Offset(0, 3).Value

Wenn nun eine Spalte markiert wird soll aus Spalte 1 der Wert an eine textbox übergeben werden. Doch ich komme nicht dahinter wie.
Versucht habe ich das hiermit, funktioniert aber nicht :(
Userfrom1.Suchfeld_1.Value = Userfrom1.ListBox1.Selected.Value 

Jemand eine Idee?
Danke und Gruß
Sven

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Eintrag ListBox markieren und verwenden
10.09.2015 10:35:38
Rudi
Hallo,
1. Einmal abfragen ob die Zeile sichtbar ist, reicht doch.
  For Each rngCell In Bereich
If rngCell.EntireRow.Hidden = False Then
With SSD_Suchen.ListBox1
.AddItem rngCell.Value
.List(.ListCount - 1, 1) = rngCell.Offset(0, 1).Value
.List(.ListCount - 1, 2) = rngCell.Offset(0, 3).Value
End With
End If
Next rngCell

2. Falls (wie normal) die Spalte 1 der Lbx die gebundene Spalte ist:
Userfrom1.Suchfeld_1.Value = Userfrom1.ListBox1
Gruß
Rudi

Anzeige
AW: Eintrag ListBox markieren und verwenden
10.09.2015 11:28:43
Sven
Hallo Rudi,
vielen Dank für die schnelle Hilfe!
Und ja richtig, einmal abfragen reicht (wenn man weiß was man tut ;))
Leider bekomme ich nun eine Fehlermeldung.
Userfrom1.Suchfeld_1.Value = Userfrom1.ListBox1

Eigenschaft Value konnte nicht gesetzt werden. Typkonflikt
Habe bereits versucht das Problem selbst zu beheben komme aber nicht weiter.
Ich habe versucht eine Variable mit dem Listbox Eintrag zu füllen und zu übergeben, klappt auch nicht.
Eine Idee?
Danke und Gruß

Anzeige
AW: Eintrag ListBox markieren und verwenden
10.09.2015 11:33:09
Rudi
Hallo,
mal
SSD_Suchen.ListBox1
mal
Userfrom1.ListBox1
Wat denn nu?
Lad mal die Mappe hoch.
Gruß
Rudi

AW: Eintrag ListBox markieren und verwenden
10.09.2015 11:51:23
Sven
Hallo Rudi,
es sollte alles SSD_Suchen sein, habe das in meiner Mappe auch so.
Hatte vorhin nur schnell das Problem tippen wollen und dabei Userform1 genommen.
Meine Mappe: https://www.herber.de/bbs/user/100112.xlsm
Die ist aber voll mit Fehlern und ein wenig peinlich.
Den Bereich den ich gerade bearbeite ist der Commandbutton: Private Sub Suche_2_Enter_Click()
Die Suche_1 funktioniert aus jetziger Sicht super, nur bei dieser Suche_2 mit den autofiltern komme ich nicht weiter.
Vielen Dank vorab!
ich hoffe es sieht nicht zu schlimm aus ...

Anzeige
Sorry, aber das .....
10.09.2015 13:06:40
Rudi
.... ist mir jetzt zu viel, mich da durch zu wühlen.
Wie kann man den Fehler provozieren?

AW: Sorry, aber das .....
10.09.2015 13:30:43
Sven
Hey Rudi,
nichts zu entschuldigen, das kann ich durchaus sehr gut verstehen.
Der Fehler lässt sich einfach reproduzieren, Userform Ausgführen . Häckchen bei Enterprise (zum Beispiel) setzen und den Commandbutton im selben frame der Userform betätigen.
Danach kommt die Fehlermeldung mit Verweis auf

SSD_Suchen.Suchfeld_1.Value = SSD_Suchen.ListBox1
Danke trotzdem!

Anzeige
AW: Sorry, aber das .....
10.09.2015 13:49:34
Rudi
Hallo,
in der Lbx ist ja nichts ausgewählt.
        ListBox1.ListIndex = 0
SSD_Suchen.Suchfeld_1.Value = SSD_Suchen.ListBox1

Allerdings solltest du sicherstellen, dass was in der Listbox steht.
Gruß
Rudi

AW: Sorry, aber das .....
10.09.2015 14:01:28
Sven
Danke Rudi!
Dann komme ich wieder zum Grundproblem, ich lasse ja die Lbx mit autogefilterten Daten füllen.
Nicht über den doppleklick sondern über ein einfach markieren (also einmal anklicken) soll aus der markierten Zeile ein Wert übergeben werden den ich in die textbox schreiben möchte.
Mit deinem Ansatz läuft zumindest das Makro durch. Wenn auch leider nicht wie gewünscht.
Der Gedanke war das ein bestimmter Wert übergeben wird sobald ich eine Zeile in der Listbox anklicke.
Ich bastel nochmal und werde sicher mit Teilfragen wieder kommen.
Vielen Dank das du dir trotzdem die Mühe gemacht hast reinzuschauen!
Gruß
Sven

Anzeige
Ich glaube ich weiß wo das Problem liegt
10.09.2015 14:51:20
Sven
Hi Rudi,
sorry das ich schon wieder nerven muss.
Ich bin das komplette Makro mit F8 durchgegangen (per Zufall im Web gefunden, kannte die Funktion überhaupt nicht). Das Problem am dem ich stehe sieht wie folgt aus.
ListBox1.Selected(0) = True
SSD_Suchen.Suchfeld_1.Value = SSD_Suchen.ListBox1
Über ListBox1.Selected(0) = True wähle ich ja die erste Zeile in der Listbox aus
und mit SSD_Suchen.Suchfeld_1.Value = SSD_Suchen.ListBox1 übergebe ich den Wert.
Eigentlich müsste an diese Stelle das Makro angehalten werden bzw. das Makro soll warten bis ich mit der Maus einen Eintrag der Listbox anwähle.
Wie kann ich dem Makro sagen das es warten soll bis ein Eintrag angelickt wurde?
Danke vorab.
Gruß
Sven

Anzeige
Makro anhalten
10.09.2015 16:00:16
Rudi
Hallo,
Wie kann ich dem Makro sagen das es warten soll bis ein Eintrag angeklickt wurde?
Gar nicht.
Beende den Code nach dem Befüllen der LBx und schreib den Rest ins Click-Event.
Achtung!!! Das Click-Event wird auch durch Setzen des Listindex per Code (z.B. Listbox1.Listindex = 0)ausgelöst.
Gruß
Rudi

Anzeige
AW: Makro anhalten
11.09.2015 08:24:26
Sven
Guten Morgen Rudi,
vielen Dank für die Info. Dann werde ich mal weiterbasteln.
Danke!
Gruß und TGIF
Sven
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Eintrag ListBox markieren und verwenden


Schritt-für-Schritt-Anleitung

  1. ListBox füllen: Verwende den folgenden VBA-Code, um deine ListBox mit Werten zu befüllen. Achte darauf, dass nur sichtbare Zeilen in die ListBox übernommen werden.

    For Each rngCell In Bereich
        If rngCell.EntireRow.Hidden = False Then
            With SSD_Suchen.ListBox1
                .AddItem rngCell.Value
                .List(.ListCount - 1, 1) = rngCell.Offset(0, 1).Value
                .List(.ListCount - 1, 2) = rngCell.Offset(0, 3).Value
            End With
        End If
    Next rngCell
  2. Wert übergeben: Um den Wert der ausgewählten ListBox-Zeile an ein Textfeld zu übergeben, nutze die folgende Zeile im Click-Event der ListBox:

    Userfrom1.Suchfeld_1.Value = SSD_Suchen.ListBox1.Value
  3. Click-Event einrichten: Damit der Wert nur übergeben wird, wenn ein Element ausgewählt ist, baue eine Click-Ereignisprozedur ein.

    Private Sub ListBox1_Click()
        If ListBox1.ListIndex <> -1 Then
            Userfrom1.Suchfeld_1.Value = ListBox1.Value
        End If
    End Sub

Häufige Fehler und Lösungen

  • Typkonflikt: Wenn du die Fehlermeldung "Eigenschaft Value konnte nicht gesetzt werden. Typkonflikt" erhältst, überprüfe, ob der Wert in der ListBox tatsächlich vom passenden Datentyp für das Textfeld ist.

  • Nichts ausgewählt: Stelle sicher, dass ein Element in der ListBox ausgewählt ist, bevor du versuchst, den Wert zu übergeben. Verwende ListIndex um zu prüfen, ob ein Eintrag ausgewählt ist.


Alternative Methoden

Eine alternative Methode zur Übergabe des Wertes aus der ListBox an das Textfeld ist die Verwendung von Variablen. Du kannst den Wert in einer Variable speichern, bevor du ihn an das Textfeld übergibst:

Dim selectedValue As String
selectedValue = SSD_Suchen.ListBox1.Value
Userfrom1.Suchfeld_1.Value = selectedValue

Praktische Beispiele

Hier ist ein einfaches Beispiel zur Veranschaulichung. Angenommen, du hast eine ListBox mit den Namen von Produkten und möchtest den Preis des ausgewählten Produkts in ein Textfeld übergeben.

Private Sub ListBox1_Click()
    Dim selectedProduct As String
    Dim productPrice As Double

    selectedProduct = ListBox1.Value
    productPrice = GetProductPrice(selectedProduct) ' Funktion, die den Preis zurückgibt

    Userfrom1.PreisFeld.Value = productPrice
End Sub

Tipps für Profis

  • Fehlerbehandlung: Nutze On Error Resume Next, um Fehler abzufangen, die während der Ausführung des Codes auftreten können. Dies kann dir helfen, unerwartete Abstürze zu vermeiden.

  • Verwendung von Option Explicit: Setze am Anfang deines Moduls Option Explicit, um sicherzustellen, dass du alle Variablen deklarierst. Dies hilft, Tippfehler und Typkonflikte zu vermeiden.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass nur sichtbare Zeilen in die ListBox übernommen werden?
Du kannst den Code so anpassen, dass er nur sichtbare Zeilen abfragt, wie im Abschnitt zur Schritt-für-Schritt-Anleitung beschrieben.

2. Was mache ich, wenn ich mehrere Werte aus verschiedenen Spalten übergeben möchte?
Du kannst mehrere Textfelder hinzufügen und für jedes Textfeld die entsprechende Spalte aus der ListBox übergeben.

3. Warum funktioniert das Click-Event nicht wie erwartet?
Stelle sicher, dass das Click-Event korrekt mit der ListBox verknüpft ist und dass der Code in der richtigen UserForm geschrieben wurde.

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