ich schlage mich mit einem Problem rum, das ich alleine nicht mehr lösen kann.
Ich habe eine Userform mit drei Rahmen:
Im ersten Rahmen befindet sich eine Listbox
Im zweiten Rahmen befinden sich 12 Textfelder
Im dritten Rahmen sind Aktions-Knöpfe
Die Listbox wird bei Initialize mit Daten gefüllt, und wird dann ein Eintrag ausgewählt (Click), werden die entsprechenden Daten mittels der Routine "Private Sub lstClickAndSelect_Click()" aus dem Worksheet in die Textfelder geschrieben.
Die Listbox wird so gefüllt:
With Me.lstClickAndSelect
.ColumnCount = 7
.ColumnWidths = "50;50;35;30;40;80;50"
.ColumnHeads = False
For i = ErsteZeile To LetzteZeile
.AddItem Cells(i, "H") 'Nachname
.List(.ListCount - 1, 1) = Cells(i, "I") 'Vorname
.List(.ListCount - 1, 2) = Cells(i, "J") 'Gender
.List(.ListCount - 1, 3) = Cells(i, "K") 'Band
.List(.ListCount - 1, 4) = Cells(i, "L") 'PBC
.List(.ListCount - 1, 5) = Cells(i, "M") 'Land
.List(.ListCount - 1, 6) = Cells(i, "N") 'Activity
Next i
End With
Es funktioniert auch alles, ich kann mappen, ändern, zurückschreiben, refreshen, alles ist OK.
Wenn ich jedoch diesen Code nehme:
With Me.lstClickAndSelect
.ColumnCount = 7
.ColumnWidths = "50;50;35;30;40;80;50"
.ColumnHeads = True
.RowSource = Range("H" & ErsteZeile & ":N" & LetzteZeile).Address
End With
passiert Folgendes:
Die Listbox wird ganz normal gefüllt, der Header wird angezeigt.
Klicke ich eine Zeile in der Listbox an, werden die Daten richtig in die Textfelder geschrieben. Ich kann Inhalte der Textfelder ändern, aber wenn ich auf "OK" drücke, um die Textfelder wieder zurück in das Spreadsheet zu schreiben, wird - wenn ich Feldinhalte auf Richtigkeit überprüfe - die Routine "Private Sub lstClickAndSelect_Click()" angesprungen und die "Originaldaten aus demSpreadshhet werden wieder geladen, ohne dass ich meine eventuellen Änderungen zurückschreiben kann.
Meine Check-Snipplets sehen in etwa so aus:
'pruefe Gender
If Trim(UCase(txtGender)) = "M" Or Trim(UCase(txtGender)) = "F" Then
txtGender = UCase(Trim(txtGender)) 'schreibe die Textbox neu
Cells(ActualIndex, "J") = txtGender 'schreibe die Textbox ins Blatt
Else
MsgBox "Gender is ein Pflichtfeld und darf nur ""M"" oder ""F"" sein!"
txtGender = ""
txtGender.SetFocus
Exit Sub
End If
Was passiert hier? Ich habe keine Events getriggert.
...braleta