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

Forumthread: Listbox mit 2 Spalten auslesen

Listbox mit 2 Spalten auslesen
30.03.2008 14:50:00
Hans

Guten Tag
Ich möchte bei einer 2 spaltigen Listbox den wert in der zweiten Spalte in das Feld B16 Schreiben.
Mit meinen VBA Fähigkeiten komme ich da leider nicht weiter.
Ich bitte um eine Lösung ohne Sverweis also nur per VBA.
Ich habe meine Tabelle hier hochgeladen vielleicht kann mir jemand helfen
Vielen Dank
https://www.herber.de/bbs/user/51146.xls

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listbox mit 2 Spalten auslesen
30.03.2008 15:02:20
Daniel
Hi
eine mehrspaltige Listbox lässt sich auswerten mit dem Befehl:
Listbox1.LIST(x,y)
(x: Zeile, y: Spalte)
dabei beginnt die Indexzählung in der Listbox mit 0, Listbox1.List(0,0) ist das linke Element der ersten Zeile.
die momentan aktive Zeile ermittelt man mit Listbox1.LISTINDEX
im Makro siehts dann so aus:

Private Sub CommandButton1_Click()
Dim varwert As Variant
varwert = Me.ListBox1.Value
[b15] = varwert
Range("B16") = Me.ListBox1.List(ListBox1.ListIndex, 1)
Unload Me
End Sub


Gruß, Daniel
btw, die [xxx]-Schreibweise zur Beschreibung eines Zellbezugs sollte nicht verwendet werden, da sie deutlich langsamer als RANGE("xxx") oder CELLS(x,y) ist.

Anzeige
AW: Listbox mit 2 Spalten auslesen
30.03.2008 15:11:00
Erich
Hallo Hans,
probier mal

Private Sub CommandButton1_Click()
With Me.ListBox1
Cells(15, 2) = .Value
Cells(15, 3) = .List(.ListIndex, 0)  ' nur so, zur Verdeutlichung
Cells(16, 2) = .List(.ListIndex, 1)
End With
Unload Me
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Listbox mit 2 Spalten auslesen
30.03.2008 15:28:00
Hans
Hallo Daniel und Erich
Vielen Dank für eure Hilfestellung es funktioniert jetzt astrein.
Jetzt kann ich an meiner größeren Tabelle weiterarbeiten.
Nochmals danke und einen schönen Tag
wünscht euch Hans
;
Anzeige
Anzeige

Infobox / Tutorial

Listbox mit 2 Spalten auslesen in VBA


Schritt-für-Schritt-Anleitung

Um eine Listbox mit 2 Spalten in VBA auszulesen und den Wert der zweiten Spalte in eine Excel-Zelle zu schreiben, kannst Du folgende Schritte befolgen:

  1. Erstelle eine UserForm in Deinem Excel-Projekt und füge eine Listbox hinzu.
  2. Fülle die Listbox mit Daten aus einer Tabelle. Achte darauf, dass die Listbox mehrspaltig ist.
  3. Füge einen CommandButton hinzu, um die Aktion auszulösen, wenn ein Element ausgewählt wird.
  4. Verwende den folgenden VBA-Code im Codefenster der UserForm:
Private Sub CommandButton1_Click()
    Dim varwert As Variant
    varwert = Me.ListBox1.Value
    Range("B15") = varwert  ' Wert aus der ersten Spalte
    Range("B16") = Me.ListBox1.List(ListBox1.ListIndex, 1)  ' Wert aus der zweiten Spalte
    Unload Me
End Sub

In diesem Beispiel wird der Wert der ausgewählten Zeile in die Zelle B16 geschrieben. Beachte, dass die Indexzählung in der Listbox bei 0 beginnt.


Häufige Fehler und Lösungen

  • Fehler: "Laufzeitfehler 9 – Index außerhalb des gültigen Bereichs"

    • Lösung: Stelle sicher, dass Du auf ein Element zugreifst, das tatsächlich in der Listbox vorhanden ist. Überprüfe, ob die Listbox gefüllt ist, bevor Du versuchst, den Wert auszulesen.
  • Fehler: "Typenkonflikt"

    • Lösung: Achte darauf, dass die Listbox korrekt mit Werten gefüllt ist. Es könnte sein, dass Du versuchst, einen Datentyp zuzuweisen, der nicht kompatibel ist.

Alternative Methoden

Falls Du deine Listbox mit mehrspaltigen Daten füllen möchtest, kannst Du die AddItem-Methode verwenden. Hier ein Beispiel:

With Me.ListBox1
    .AddItem "Eintrag 1"
    .List(.ListCount - 1, 1) = "Spalte 2"
    .AddItem "Eintrag 2"
    .List(.ListCount - 1, 1) = "Spalte 2"
End With

Diese Methode ermöglicht es Dir, die Listbox dynamisch mit Werten aus verschiedenen Spalten zu befüllen.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie Du eine Listbox mit 2 Spalten aus einer Tabelle füllen und den ausgewählten Wert auslesen kannst:

Private Sub UserForm_Initialize()
    Dim i As Long
    With Me.ListBox1
        .ColumnCount = 2
        For i = 1 To 10
            .AddItem "Eintrag " & i
            .List(.ListCount - 1, 1) = "Wert " & i
        Next i
    End With
End Sub

In diesem Beispiel wird die Listbox beim Initialisieren der UserForm mit 10 Einträgen gefüllt, die jeweils einen Wert in der zweiten Spalte haben.


Tipps für Profis

  • Verwende ListBox1.ListIndex: Dieser Wert gibt die aktuell ausgewählte Zeile an und ist sehr nützlich, um gezielt auf die Daten zuzugreifen.
  • Error Handling einbauen: Implementiere Fehlerbehandlungsroutinen, um sicherzustellen, dass Dein Code robust ist und auch bei unerwarteten Eingaben funktioniert.
  • Nutze With-Anweisungen: Dies kann den Code lesbarer und effizienter machen, insbesondere wenn Du mehrfach auf das gleiche Steuerelement zugreifst.

FAQ: Häufige Fragen

1. Wie kann ich die Listbox dynamisch mit Daten aus einer Tabelle füllen?
Du kannst eine Schleife verwenden, um die Daten aus einer Excel-Tabelle auszulesen und in die Listbox einzufügen, wie im Beispiel oben gezeigt.

2. Wie kann ich den Wert einer bestimmten Spalte auslesen?
Verwende den Befehl ListBox1.List(ListBox1.ListIndex, Spalte), um den Wert aus einer gewünschten Spalte auszulesen. Achte darauf, dass die Spaltenindizes bei 0 beginnen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige