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

Forumthread: Zeilennummer aus ListBox

Zeilennummer aus ListBox
01.12.2016 19:28:10
Frank
Hallo und Guten Abend euch allen!
In Spalte 13 einer ListBox steht immer die Zeilennummer.
Nun befülle ich TextBoxen mit Klick auf die ListBox. Zwar so:
TextBox4 = .ListBox1.Column(1, .ListBox1.ListIndex)
TextBox5 = .ListBox1.Column(1, .ListBox1.ListIndex + 1)
TextBox6 = .ListBox1.Column(1, .ListBox1.ListIndex + 2)
Nun möchte ich einen Button einrichten der Datensätze ändert.
Die Zeile wollte ich so deklarieren:
lng = .ListBox1.Column(13)
Nun bräuchte ich aber dafür 'ne for Schleife, denn lng ist bspw. 25, so muss auch 26 und 27 mit erscheinen, so dass in jeder Zeile Änderungen vorgenommen wird.
Im Moment weiss ich nicht wie ich das anstellen soll, weiss jemand Rat. Danke schon jetzt dafür.
Gruß Frank H.
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilennummer aus ListBox
01.12.2016 19:53:06
Hajo_Zi
Hallo Frank,
ich hätte vemutet der Wert ausSpalte 13 ist ListBox1.List(ListBox1.ListIndex, 13)

AW: Zeilennummer aus ListBox
01.12.2016 20:00:21
Frank
Hallo Hajo,
verstehe ich nicht.
In meiner ListBox stehen Werte aus einer Tabelle. In der ListBox Spalte 13 steht zu dem Wert die passende Zeilennummer. Da ich immer gleichzeitig 3 Zeilen ändern möchte, weiss ich aber nicht wie ich, nach dem Klick in die ListBox die Zeilenummern in eine For Schleife bekomme?
Gruß Frank H.
Anzeige
AW: Zeilennummer aus ListBox
02.12.2016 20:01:19
Gerd
Hallo Frank,
ein Beispiel für eine "Zeilenkrücke".
Worauf deine With-End With - Punkte zielen, weis ich nicht. Und den ListIndex müsste man bei dieser Konstellation nach unten auf ListCount-3 beschränken.
Private Sub CommandButton1_Click()
With Me
TextBox4 = .ListBox1.Column(1, .ListBox1.ListIndex)
TextBox5 = .ListBox1.Column(1, .ListBox1.ListIndex + 1)
TextBox6 = .ListBox1.Column(1, .ListBox1.ListIndex + 2)
TextBox4.Tag = .ListBox1.Column(12, .ListBox1.ListIndex)
TextBox5.Tag = .ListBox1.Column(12, .ListBox1.ListIndex + 1)
TextBox6.Tag = .ListBox1.Column(12, .ListBox1.ListIndex + 2)
End With
'Beispiel
Tabelle1.Cells(CLng(TextBox4.Tag), 1) = CVar(TextBox4)
Application.Goto Tabelle1.Cells(CLng(TextBox6.Tag), 1)
TextBox4.Tag = ""
TextBox5.Tag = ""
TextBox6.Tag = ""
End Sub
Gruß Gerd
Anzeige
AW: Zeilennummer aus ListBox
03.12.2016 18:36:02
Frank
Hallo Gerd!
Danke dir. Konnte ich bei mir einbauen und nutzen! Besten Danke und 'nen schönen zweiten Advent!
Gruß Frank H.
;
Anzeige

Infobox / Tutorial

Zeilennummern in einer ListBox effektiv nutzen


Schritt-für-Schritt-Anleitung

  1. ListBox einrichten: Stelle sicher, dass Deine ListBox korrekt konfiguriert ist und die entsprechenden Daten aus einer Tabelle anzeigt. In diesem Beispiel nehmen wir an, dass sich die Zeilennummer in Spalte 13 befindet.

  2. TextBoxen befüllen: Füge den folgenden Code in das Click-Ereignis Deines Buttons ein, um die TextBoxen mit den gewünschten Werten zu befüllen:

    Private Sub CommandButton1_Click()
       With Me
           TextBox4 = .ListBox1.Column(1, .ListBox1.ListIndex)
           TextBox5 = .ListBox1.Column(1, .ListBox1.ListIndex + 1)
           TextBox6 = .ListBox1.Column(1, .ListBox1.ListIndex + 2)
           TextBox4.Tag = .ListBox1.Column(12, .ListBox1.ListIndex)
           TextBox5.Tag = .ListBox1.Column(12, .ListBox1.ListIndex + 1)
           TextBox6.Tag = .ListBox1.Column(12, .ListBox1.ListIndex + 2)
       End With
    End Sub
  3. Daten ändern: Um die Daten in der Tabelle zu ändern, kannst Du im Anschluss an das Befüllen der TextBoxen den folgenden Code verwenden:

    Tabelle1.Cells(CLng(TextBox4.Tag), 1) = CVar(TextBox4)
    Application.Goto Tabelle1.Cells(CLng(TextBox6.Tag), 1)
  4. Tag zurücksetzen: Setze die Tags der TextBoxen zurück, um die nächste Eingabe vorzubereiten:

    TextBox4.Tag = ""
    TextBox5.Tag = ""
    TextBox6.Tag = ""

Häufige Fehler und Lösungen

  • Fehler: "Index außerhalb des Bereichs": Dies kann auftreten, wenn die ListIndex-Eigenschaft kleiner als 0 oder größer als ListCount - 1 ist. Stelle sicher, dass Du die ListIndex-Werte überprüfst, bevor Du darauf zugreifst.

  • Lösung: Begrenze den ListIndex in der Schleife:

    If .ListBox1.ListIndex < .ListBox1.ListCount - 2 Then
      ' Deine Logik hier
    End If

Alternative Methoden

Eine alternative Methode zur Verarbeitung von Zeilen in einer ListBox ist die Verwendung einer For-Schleife. Hier ist ein Beispiel:

Dim lng As Long
lng = .ListBox1.Column(13, .ListBox1.ListIndex)

For i = lng To lng + 2
    ' Logik zum Ändern der Daten in den Zeilen i
Next i

Praktische Beispiele

Hier ist ein praktisches Beispiel, wie Du die Daten aus der ListBox ändern kannst:

Private Sub CommandButton1_Click()
    Dim lng As Long
    Dim i As Long
    lng = .ListBox1.Column(13, .ListBox1.ListIndex)

    For i = lng To lng + 2
        Tabelle1.Cells(i, 1) = "Neuer Wert für Zeile " & i
    Next i
End Sub

Dieses Beispiel zeigt, wie Du die Werte in den Zeilen 25, 26 und 27 ändern kannst, wenn der Benutzer einen Eintrag in der ListBox auswählt.


Tipps für Profis

  • Verwendung von With...End With: Dies hilft, den Code leserlicher zu gestalten und die Anzahl der notwendigen Punkte zu reduzieren.

  • Verwende Option Explicit: Dies zwingt Dich, alle Variablen zu deklarieren, was Fehler vermeidet und den Code klarer macht.

  • Testen in einer sicheren Umgebung: Teste Deine VBA-Codes zuerst in einer Kopie Deiner Datei, um unerwünschte Änderungen zu vermeiden.


FAQ: Häufige Fragen

1. Wie kann ich die Zeilennummern dynamisch anpassen?
Du kannst die Zeilennummern dynamisch anpassen, indem Du die ListIndex-Eigenschaft der ListBox verwendest und entsprechend eine Schleife einsetzt.

2. Was mache ich, wenn die ListBox leer ist?
Überprüfe vor dem Zugriff auf die ListBox, ob sie Elemente enthält. Füge eine Bedingung hinzu, die sicherstellt, dass ListCount > 0 ist, bevor Du mit der Verarbeitung fortfährst.

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