XL- VBA: ListBox-Eintrag programmgesteuert wählen

Hallo zusammen.

Dieses Problem bekomme ich einfach nicht gelöst und es macht mich total kirre.

Kurze Beschreibung: Ich habe eine benutzerdefinierte Symbolleiste mit einer DropDown-Liste programmiert, mit der ich auf einem Tabellen-Blatt Namen von Großhändlern eintragen kann. Um dieser Liste Einträge hinzuzufügen bzw. vorhandene Einträge zu bearbeiten oder zu löschen, habe ich mir ein UserForm programmiert, welches eine ListBox und einige TextBoxen enthält.Beim Aufruf des UserForm werden die Namen der Großhändler in die ListBox geladen und die weiteren Informationen zu den Händlern werden in die TextBoxen geschrieben.

So, das funktioniert auch alles super, und jetzt kommt endlich das eigentliche Problem: Nach dem Füllen der ListBox stelle ich den ListIndex ein, aber der dazugehörige Eintrag wird in der Liste nicht markiert. Es wird gar kein Eintrag markiert, man kann nur das Fokus-Rechteck sehen.

Wer kann mir sagen, wie ich den gewünschten Eintrag programmgesteuert auswählen kann?

Hier noch ein paar Infos:

ListBox.BoundColumn = 0
ListBox.ColumnCount = 1
ListBox.TextColumn = 0

Vielen Dank für Eure Hilfe

VG
Carsten

TextBoxen enthält.Beim Aufruf des UserForm werden die Namen
der Großhändler in die ListBox geladen und die weiteren
Informationen zu den Händlern werden in die TextBoxen
geschrieben.

So, das funktioniert auch alles super, und jetzt kommt endlich
das eigentliche Problem: Nach dem Füllen der ListBox stelle
ich den ListIndex ein, aber der dazugehörige Eintrag wird in
der Liste nicht markiert. Es wird gar kein Eintrag markiert,
man kann nur das Fokus-Rechteck sehen.

Hallo Carsten,

was genau meinst du mit „stelle ich den ListIndex ein“?

Kannst du eine kleine Beispielmappe hochladen mittels FAQ:2861

Gruß
Reinhard

Wer kann mir sagen, wie ich den gewünschten Eintrag
programmgesteuert auswählen kann?

Hallo Carsten,

suchst du vielleicht dieses:

ListBox1.ListIndex = 5

Gruß
Reinhard

Hallo Reinhard.

suchst du vielleicht dieses:

ListBox1.ListIndex = 5

Nein, das ist die Anweisung die ich verwende. Normalerweise sollte dann in der ListBox der Eintrag mit dem Index 5 ausgewählt sein, aber leider sieht es so aus wie hier:

http://www.carstenmehnert.de

In den Textfeldern kannst du erkennen, das der eintrag mit dem Index 5 eigentlich eigestellt ist, aber der Eintrag ist in der ListBox nicht markiert.

Hier noch der „verantwortliche“ Code:

Dim tmpItem As Long
Dim tmpItemData As Long
 With lbxDialog
 .Clear
 If CLng(shtHaendler.Cells(1, 1)) = 0 Then
 .AddItem Nichts
 Exit Sub
 End If
 ReDim Data(2 To 9, 0 To CLng(shtHaendler.Cells(1, 1) - 1))
 For tmpItem = 1 To CLng(shtHaendler.Cells(1, 1))
 .AddItem shtHaendler.Cells(tmpItem, 2)
 For tmpItemData = LBound(Data(), 1) To UBound(Data(), 1)
 Data(tmpItemData, tmpItem - 1) = shtHaendler.Cells(tmpItem, tmpItemData)
 Next
 Next
 .ListIndex = cbxHaendler.ListIndex - 1
 .Value = cbxHaendler.ListIndex - 1
 .TopIndex = .ListIndex
 .SetFocus
 End With

VG Carsten

Hallo Carsten,

mach 'ne Kopie deiner Mappe, schmeiß alle Händler bis auf 5-10 raus, anonymisier das und lade die Kopie mal hoch.

Gruß
Reinhard

Hallo zusammen.

Problem gelöst.

Falls die Info interessiert:
Das Festlegen des ListIndex darf erst im „UserForm_Activate“-Ereignis gemacht werden und nicht bereits im „UserForm_Initialize“-Ereignis.

VG
Carsten