VB/VBA: Eintrag in einer Listbox markieren

Eine Form enthält eine Listbox mit Einträgen. Das Click-Event der Listbox ist programmiert, Detaildaten des in der Listbox gewählten Satzes in ein Textfeld zu schreiben.

Ich möchte nun, daß nach dem Programmstart (Form_Load) immer automatisch der erste Eintrag der Listbox gewählt und das dazugehörige Click-Event ausgelöst wird um die Detaildaten in die Textbox zu schreiben.

Mit Listbox.Selected(0)=True erreiche ich zwar, daß der erste Eintrag markiert ist (Sichtkontrolle), aber das manuell ausgelöste Click-Event der Listbox arbeitet, als sei kein Satz in der List ausgewählt. Erst ein Klick mit der Maus oder die Bewegung der Pfeiltasten markiert den Satz tatsächlich und dann funktioniert der Rest auch wieder…

Wer hat eine Idee???

Gruß
(Woly)

Listbox.Selected(0)=True
Call Listbox\_Click 

Ja, so hab ich das auch gemacht. Allerdings funktioniert es bei mir nicht. Wenn ich nach dem Selected=True die Listbox.ListIndex-Eigenschaft (die ja das markierte Element zurückgibt) aufrufe, bekomme ich als Antwort NULL statt 0

Noch eine Idee?
(Woly)

listbox.listindex=wert

das war´s leider auch nicht…
Hast Du das mal selbst getestet? Theoretisch müsste es ja tatsächlich so gehen, und zwar sowohl mit Selected(), als auch mit ListIndex… Leider klappt es bei mir trotzdem nicht…!?
Auf jeden Fall schonmal Danke für Deine Mühe ; vielleicht fällt Dir ja noch was anderes ein?

> Private Sub Form_Load()
> Form.Refresh
> With Listbox
> .RowSourceType = „Value List“
> .RowSource=„Eintrag1;Eintrag2;Eintrag3;usw.“
> .SetFocus
> '.Selected(0) = True
> .ListIndex = 0
> End With
> Listbox_Click
> End Sub

Gruß
(Woly)

probier das ganz im Form_Activate, vielleicht happerts mit dem Control-Loading… sonst stimmt ja der Code ganz unten.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi Woly,
versuch´s mal mit diesem workaround:

Private Sub cmdESC_Click()
End
End Sub

Private Sub lst1_Change()
txt1 = lst1.ListIndex
End Sub

Private Sub txt1_Change()
End Sub

Private Sub UserForm_Activate()
With lst1
.AddItem „Zeile 1“
.AddItem „Zeile 2“
End With
lst1.ListIndex = 0 'Hier steuerst Du, welcher Eintrag aktiviert werden soll
'In der folgenden Zeile startest Du die gewünschte Prozedur
If lst1.ListIndex = 0 Then Selection.TypeText „Dies ist der“ & _
„Code, der automatisch aufgerufen wird“
End Sub

Gruß
Wilhelm

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

bei mir funktionierts…

Private Sub Form\_Load()
Dim i As Integer
With Me.List1
 For i = 1 To 10
 Call .AddItem("Test " & i)
 Next i
 .Selected(0) = True
End With
End Sub
'
Private Sub List1\_Click()
Debug.Print "List1\_Click was here"
With Me.List1
 Debug.Print .ListIndex
End With
End Sub

Setzte ich .Selected(0) = True wird bei mir sofort der List1_Click()-Event ausgelöst und der .ListIndex ist auch richtig gesetzt.

my config:

  • Win 2000 Prof. Ger
  • Visual Basic 6.0 (SP4) Eng

greets from michL (vienna)