Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema ListBox
BildScreenshot zu ListBox ListBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

ListIndex in ListBox aufrufen


Betrifft: ListIndex in ListBox aufrufen von: Andreas Grimm
Geschrieben am: 05.09.2019 11:26:37

Hallo liebes Forum

Ich habe eine UserForm (UF_Verbraucher) mit einer Listbox, die mit Werten aus einer Tabelle gefüllt wird. Diese sind in 7 Spalten verteilt. Ich möchte einen Datensatz per Doppelklick in Textboxen anzeigen lassen und danach in eine andere Tabelle übertragen. Es scheint, als ob ich den Aufruf der Zeile in der Listbox falsch mache, jedenfalls gibt es einen Fehler oder die falsche Zeile wird ausgewählt. Ich tippe, dass ich den Zeilenindex falsch mache. Aber das ist nur die Meinung eines Laien, sicher hat jemand eine genauere Idee.

Sub lsb_VerbraucherListe_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim LB1 As Object
Dim tbx As TextBox
Dim c As Integer
Set LB1 = lsb_VerbraucherListe

With lsb_VerbraucherListe


tb_Bezeichnung = LB1.List(LB1.ListIndex, 0)
tb_VerbraucherName = LB1.List(LB1.BoundColumn, 1)
tb_VerbraucherTyp = LB1.List(LB1.BoundColumn, 2)
tb_VerbraucherKategorie = LB1.List(LB1.BoundColumn, 3)
tb_VerbraucherL1 = LB1.List(LB1.BoundColumn, 4)
tb_VerbraucherL2 = LB1.List(LB1.BoundColumn, 5)
tb_VerbraucherL3 = LB1.List(LB1.BoundColumn, 6)
Me.tb_VerbraucherZ1.SetFocus

End With

For c = 1 To 3
With Me.Controls("tb_VerbraucherL" & c)
  .Locked = True
  .BackColor = &H8000000F
End With
Next c
Me.tb_VerbraucherL2.Locked = True
Me.tb_VerbraucherL3.Locked = True

End Sub
https://www.herber.de/bbs/user/131858.xlsm

  

Betrifft: AW: ListIndex in ListBox aufrufen von: Torsten
Geschrieben am: 05.09.2019 11:35:19

Hallo,
versuch mal

With LB1

tb_Bezeichnung = .List(.ListIndex, 0)
tb_VerbraucherName = .List(.BoundColumn, 1)
tb_VerbraucherTyp = .List(.BoundColumn, 2)
tb_VerbraucherKategorie = .List(.BoundColumn, 3)
tb_VerbraucherL1 = .List(.BoundColumn, 4)
tb_VerbraucherL2 = .List(.BoundColumn, 5)
tb_VerbraucherL3 = .List(.BoundColumn, 6)
Me.tb_VerbraucherZ1.SetFocus

End With



  

Betrifft: AW: ListIndex in ListBox aufrufen von: Andreas Grimm
Geschrieben am: 05.09.2019 11:52:16

Hallo Torsten

danke für die fixe Antwort. Leider löst das das Problem nicht. Index des Eigenschaftsfeldes ist ungültig.

Liebe Grüße

Andreas


  

Betrifft: AW: ListIndex in ListBox aufrufen von: GerdL
Geschrieben am: 05.09.2019 11:45:49

Moin

Sub lsb_VerbraucherListe_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim LB1 As Object
Dim tbx As TextBox
Dim c As Integer
Set LB1 = lsb_VerbraucherListe

With lsb_VerbraucherListe


tb_Bezeichnung = LB1.List(LB1.ListIndex, 0)
tb_VerbraucherName = LB1.List(LB1.ListIndex, 1)
tb_VerbraucherTyp = LB1.List(LB1.ListIndex, 2)
tb_VerbraucherKategorie = LB1.List(LB1.ListIndex, 3)
tb_VerbraucherL1 = LB1.List(LB1.ListIndex, 4)
tb_VerbraucherL2 = LB1.List(LB1.ListIndex, 5)
tb_VerbraucherL3 = LB1.List(LB1.ListIndex, 6)
Me.tb_VerbraucherZ1.SetFocus

End With

'...............

Gruß Gerd


  

Betrifft: AW: ListIndex in ListBox aufrufen von: Andreas Grimm
Geschrieben am: 05.09.2019 11:55:59

Hallo Gerd

Das gleiche Ergebnis: "Laufzeitfehler 381, Index des Eigenschaftsfeldes ist ungültig"

Ich hatte verstanden, dass sich der ListIndex auf die Zeile bezieht und CoulmnBound auf die Spalte. Habe ich wohl falsch verstanden. Jedenfalls macht beides das gleiche Ergebnis.

Gruß
Andreas


  

Betrifft: AW: ListIndex in ListBox aufrufen von: Torsten
Geschrieben am: 05.09.2019 12:19:57

Hallo,

nach einigem herumprobieren in deiner Datei hab ich den Fehler gefunden. Das Problem ist, dass du das Fuellen der Listbox immer wieder aufrufst nachdem eine Textbox gefuellt wurde. Damit stimmt dann die Zuordnung nicht mehr. Und zwar in der Textbox tb_Bezeichnung. Du hast hier den Code:

Sub tb_Bezeichnung_Change()
 

Bez = Me.tb_Bezeichnung.Text

Call Verbraucherlistefüllen
End Sub

Also bei jeder Aenderung in dieser Textbox wird die Listbox wieder neu gefuellt. Ich habe diese Zeile mal auskommentiert:
Call Verbraucherlistefüllen

Ausserdem auch noch die Aenderung von von Gerd ist wichtig.Ueberall auf Listindex aendern.
Jetzt funktionierts. Probiers aus.

Gruss Torsten


  

Betrifft: AW: ListIndex in ListBox aufrufen von: Werner
Geschrieben am: 05.09.2019 12:25:36

Hallo Andreas,

wenn du deine Textboxen umbenennst (fortlaufende Nummer) aufsteigend, so wie die Textboxen die Daten aus der jeweiligen Spalte der Listbox bekommen sollst, dann mit einer Schleife.

TextBox1 - Daten aus Listbox Spalte 0
TextBox2 - Daten aus Listbox Spalte 1
Textbox3 - Daten aus Listbox Spalte 2

usw.

Schau dir das Beispiel mal an.

https://www.herber.de/bbs/user/131861.xlsm

Gruß Werner


  

Betrifft: AW: ListIndex in ListBox aufrufen von: Andreas Grimm
Geschrieben am: 05.09.2019 13:25:17

Hallo Werner

danke erstmal. Leider kann ich dein Beispiel nicht öffnen. Wo finde ich es oder wie? Ich finde mich noch nicht ganz zurecht hier.


  

Betrifft: AW: ListIndex in ListBox aufrufen von: Torsten
Geschrieben am: 05.09.2019 13:26:23

Schau dir meinen letzten Beitrag an


  

Betrifft: AW: ListIndex in ListBox aufrufen von: Andreas Grimm
Geschrieben am: 05.09.2019 15:13:09

Hallo Torsten, hallo Werner

es klappt. Super! Vielen Dank für die tätige Hilfe! hat mich ein gutes Stück weitergebracht. Ich habe aber noch nicht ganz verstanden, warum die Routine durcheinander kommt, wenn ich sie über mehrere Ereignisse aufrufe. War das, weil die Änderung der einen TextBox die Listbox automatisch neu startete? Jedenfalls herzlichen Dank nochmal.

Viele Grüße

Andreas Grimm


  

Betrifft: AW: ListIndex in ListBox aufrufen von: Torsten
Geschrieben am: 05.09.2019 15:25:59

Genau das war das Problem, wie ich schon erklaert hatte.
Die Listbox wird geladen, dann doppelklickst du in die Listbox. Die Textbox Bezeichnung wird gefuellt. Dort wird dann das Textbox_Change Ereignis ausgeloest. Aber dort rufst du nochmal das Listbox Fuellen Makro auf, also wird die neu gefuellt und die Beziehungen zwischen den Spalten gehen verloren in dem Makro, dass die Textboxen fuellt.
Hoffe soweit klar.


  

Betrifft: Gerne u. Danke für die Rückmeldung. o.w.T. von: Werner
Geschrieben am: 05.09.2019 20:03:35




  

Betrifft: AW: ListIndex in ListBox aufrufen von: Werner
Geschrieben am: 05.09.2019 13:27:43

Hallo Andreas,

den Link markieren, rechte Maustaste auf den markierten Link, Link öffnen.

Gruß Werner


Beiträge aus dem Excel-Forum zum Thema "ListIndex in ListBox aufrufen"