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

Listbox, ausgewählte Zeile bestimmen ??

Forumthread: Listbox, ausgewählte Zeile bestimmen ??

Listbox, ausgewählte Zeile bestimmen ??
25.01.2004 17:14:47
Harry Adam
Hallo Exelforum,
Ich habe eine Listbox bei der ich durch Doppelklick die gewünschten Daten auslese und in den Textboxen anzeige.
Wie kann ich nach Änderung der Daten diese wieder in die richtige Zeile zurückschreiben. Ich muß nur wissen ob es Zeile 5 oder 20 ist.
Ich bin für jede Hilfe dankbar.
Harry
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listbox, ausgewählte Zeile bestimmen ??
25.01.2004 17:24:32
Nepumuk
Hallo Harry,
ich habe es mal ganz einfach nachgebaut:

Option Explicit
Dim intZeile As Integer
Private Sub CommandButton1_Click()
ListBox1.List(intZeile) = TextBox1
End Sub
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
TextBox1 = ListBox1.Value
intZeile = ListBox1.ListIndex
End Sub
Private Sub UserForm_Activate()
Dim intIndex As Integer
For intIndex = 1 To 15
ListBox1.AddItem intIndex
Next
End Sub


Code eingefügt mit: Excel Code Jeanie
Gruß
Nepumuk
Anzeige
AW: Listbox, ausgewählte Zeile bestimmen ??
25.01.2004 17:54:49
Harry Adam
Hallo Nepumuk,
Leider komme ich mit dem Beispiel nicht weiter.
Bei mir sieht das so aus:

Private Sub ListBox2_DblClick(ByVal Cancel As _
MSForms.ReturnBoolean)
Sheets("Tabelle1").Select
Dim Nachname As String
Dim Vorname As String
Dim Teiler3 As String
Dim Teiler2 As String
Dim Teiler1 As String
Dim Nummer As String
Nachname = ListBox2.List(ListBox2.ListIndex, 0)
Vorname = ListBox2.List(ListBox2.ListIndex, 1)
Teiler3 = ListBox2.List(ListBox2.ListIndex, 2)
Teiler2 = ListBox2.List(ListBox2.ListIndex, 3)
Teiler1 = ListBox2.List(ListBox2.ListIndex, 4)
Nummer = ListBox2.List(ListBox2.ListIndex, 5)
Nachname = ListBox2.List(ListBox2.ListIndex, 0)
Vorname = ListBox2.List(ListBox2.ListIndex, 1)
TextBox1 = Nachname
TextBox2 = Vorname
TextBox3 = Teiler3
TextBox4 = Teiler2
TextBox5 = Teiler1
'       TextBox6 = Nummer
TextBox10 = Nachname
TextBox9 = Vorname
Cells(2, 9).Value = Teiler1
Cells(3, 9).Value = Teiler2
Cells(4, 9).Value = Teiler3
End Sub

Damit lese ich die Daten aus. Über ein Commandbutton (Speichern) will ich die Daten zurückschreiben ( In die Tabelle ). Dazu brauche ich die Zeile aus der sie ausgelesen wurden. Ich dachte das wird in der Listbox evtl. irgendwo festgehalten.
Harry
Anzeige
AW: Listbox, ausgewählte Zeile bestimmen ??
25.01.2004 18:05:09
Nepumuk
Hallo Harry,
mit welcher Methode füllst du die Listbox (AddItem oder Rowsource)?
Gruß
Nepumuk
AW: Listbox, ausgewählte Zeile bestimmen ??
25.01.2004 18:25:26
Harry Adam
Hallo Nepumuk,
Ich habe bei der Listbox unter Daten / RowSource - A2:F1000 angegeben.
Harry
AW: Listbox, ausgewählte Zeile bestimmen ??
25.01.2004 19:57:06
Nepumuk
Hallo Harry,
dann ist es eigentlich ganz einfach. Wie in meinem Beispiel ersichtlich bekommt die Variable "intZeile" die Zeilennummer der Listbox. Die Nummerierung aus der Tabelle beginnt mit zwei die aus der Listbox mit null. Du musst nun zur Variablen "intZeile" einfach zwei addieren, schon hast du die Zeilennummer in der Tabelle. Wenn du die geänderten Werte in die Tabelle zurückschreibst, wird der Eintrag in der Listbox automatisch mit geändert, da diese nur ein Abbild der Tabelle ist.
Gruß Nepumuk
Anzeige
AW: Listbox, ausgewählte Zeile bestimmen ??
25.01.2004 20:50:22
Harry Adam
Hallo Nepumuk
Vielen Dank für die Hilfe, jetzt habe auch ich es endlich kapiert.
Werde es gleich bei mir verwenden.
Tschau Harry
;
Anzeige

Infobox / Tutorial

Listbox in Excel: Ausgewählte Zeile bestimmen und zurückschreiben


Schritt-für-Schritt-Anleitung

Um die ausgewählte Zeile einer Listbox in Excel zu bestimmen und die Änderungen zurück in die Tabelle zu schreiben, folge diesen Schritten:

  1. Erstelle eine UserForm mit einer Listbox (ListBox1), Textbox (TextBox1) und einem CommandButton (CommandButton1).
  2. Fülle die Listbox mit Daten. Du kannst dies entweder durch AddItem oder über RowSource tun. Für diese Anleitung verwenden wir RowSource.
  3. Füge den folgenden VBA-Code in das Code-Modul der UserForm ein:
Private Sub UserForm_Activate()
    ListBox1.RowSource = "Tabelle1!A2:F1000" ' Beispiel für RowSource
End Sub

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    TextBox1.Text = ListBox1.Value
End Sub

Private Sub CommandButton1_Click()
    Dim intZeile As Integer
    intZeile = ListBox1.ListIndex + 2 ' +2, da die ListBox mit 0 beginnt
    Worksheets("Tabelle1").Cells(intZeile, 1).Value = TextBox1.Text ' Beispiel für das Zurückschreiben
End Sub
  1. Teste die UserForm und prüfe, ob die Werte korrekt in die Tabelle geschrieben werden.

Häufige Fehler und Lösungen

  • Fehler: ListIndex gibt -1 zurück
    Lösung: Stelle sicher, dass ein Eintrag in der Listbox ausgewählt ist, bevor du versuchst, ListIndex zu nutzen.

  • Daten werden nicht zurückgeschrieben
    Lösung: Überprüfe, ob die Zeile korrekt bestimmt wird. Der Offset von 2 muss je nach deiner Datenstruktur eventuell angepasst werden.


Alternative Methoden

Wenn du keine UserForm verwenden möchtest, kannst du auch direkt in einer Excel-Tabelle arbeiten, indem du die Listbox über ein ActiveX-Steuerelement einfügst. Hierbei kannst du ähnliche VBA-Codes verwenden, um Daten auszulesen und zurückzuschreiben.


Praktische Beispiele

Hier ist ein einfaches Beispiel, das zeigt, wie du eine Listbox mit Daten füllst und die Auswahl zurückschreibst:

Private Sub UserForm_Activate()
    ListBox1.AddItem "Eintrag 1"
    ListBox1.AddItem "Eintrag 2"
    ListBox1.AddItem "Eintrag 3"
End Sub

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    TextBox1.Text = ListBox1.Value
End Sub

Private Sub CommandButton1_Click()
    Dim intZeile As Integer
    intZeile = ListBox1.ListIndex + 1 ' +1 für die Excel-Zeilen
    Cells(intZeile, 1).Value = TextBox1.Text
End Sub

Tipps für Profis

  • Nutze ListBox.List: Um mehrere Spalten aus der Listbox auszulesen, kannst du ListBox1.List(ListBox1.ListIndex, spalte) verwenden, wobei spalte die gewünschte Spalte angibt.
  • Datenvalidierung: Implementiere eine Datenvalidierung, um sicherzustellen, dass nur gültige Daten in die Textboxen eingegeben werden.

FAQ: Häufige Fragen

1. Wie kann ich eine mehrdimensionale Listbox verwenden?
Du kannst die List-Eigenschaft der Listbox verwenden, um auf verschiedene Spalten zuzugreifen. Beispiel: ListBox1.List(ListBox1.ListIndex, 1) für die zweite Spalte.

2. Welche Excel-Version benötige ich für diese Funktionen?
Das Beispiel funktioniert mit Excel 2007 und höheren Versionen, die UserForms und VBA unterstützen.

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