HERBERS Excel-Forum - das Archiv

Thema: Einträge einer Tabelle über Userform ändern

Einträge einer Tabelle über Userform ändern
Bobesch58
Guten Abend allerseits.

Ich möchte Änderungen in einer dreispaltigen Exceltabelle (Vorname, Nachname, Geschlecht) über eine Userform vornehmen. In der Userform gibt es eine dreispaltige Listbox "lbxSchülerÄndern", in die beim Initialisieren die Tabelle eingelesen wird. Über das Changeereignis der Listbox werden die drei Felder der markierten Zeile in jeweils eine Textbox eingelesen (tbxSchÄndVorname, tbxSchÄndNachname, tbxSchÄndGeschl). In den Textboxen sollen die Änderungen vorgenommen und über eine Schaltfläche die geänderten Werte in die Exceltabelle übertragen werden. Ein Auszug des Codes hängt unten an.

Es funktioniert jedoch nur für das erste Textfeld. Nachdem die markiert Zeile in der Sub "cbtSchÄnd_Click" ausgeführt wurde, springt das Programm in die Sub "lbxSchülerÄndern_Change" und übernimmt in die Textfelder tbxSchÄndNachname und tbxSchÄndGeschl wieder die ursprünglichen Werte aus der Listbox.

Was habe ich falsch gemacht?

Viele Grüße
Bobesch58


Option Explicit
Dim iLZ As Integer


Private Sub UserForm_Initialize()
Dim myRange As Range

With ThisWorkbook.Sheets("Vorgaben")
iLZ = .Range("B100").End(xlUp).Row
Set myRange = .Range(.Cells(iEZ, 2), .Cells(iLZ, 4))
lbxSchülerÄndern.RowSource = myRange.Address
End With

End Sub



Private Sub lbxSchülerÄndern_Change()

tbxSchÄndVorname = lbxSchülerÄndern.List(lbxSchülerÄndern.ListIndex, 0)
tbxSchÄndNachname = lbxSchülerÄndern.List(lbxSchülerÄndern.ListIndex, 1)
tbxSchÄndGeschl = lbxSchülerÄndern.List(lbxSchülerÄndern.ListIndex, 2)

End Sub



Private Sub cbtSchÄnd_Click()
Dim strName As String
Dim iCt As Integer

strName = lbxSchülerÄndern.List(lbxSchülerÄndern.ListIndex, 0) & _
lbxSchülerÄndern.List(lbxSchülerÄndern.ListIndex, 1)
With Sheets("Vorgaben")
.Unprotect
For iCt = iEZ To iLZ
If .Cells(iCt, 2) & .Cells(iCt, 3) = strName Then
.Cells(iCt, 2) = tbxSchÄndVorname
.Cells(iCt, 3) = tbxSchÄndNachname
.Cells(iCt, 4) = tbxSchÄndGeschl
Exit For
End If
Next
.Protect
End With
Unload Me

End Sub
AW: Einträge einer Tabelle über Userform ändern
emkaes
Hallo,

da du die Listbox über .rowsource füllst, triggerst du mit der Veränderung des Zelleintrags gleichzeitig dein Listbox_change event. Nutze entweder eine andere Füllmethode oder schalte zeitweilig die Events aus


VG
AW: Einträge einer Tabelle über Userform ändern
Uduuh
Hallo,
oder schalte zeitweilig die Events aus
funktioniert in Userforms nicht.

Private Sub UserForm_Initialize()

Dim myRange As Range

With ThisWorkbook.Sheets("Vorgaben")
iLZ = .Range("B100").End(xlUp).Row
Set myRange = .Range(.Cells(iEZ, 2), .Cells(iLZ, 4))
lbxSchülerÄndern.List= myRange.Value
End With

End Sub


Gruß aus'm Pott
Udo
AW: Einträge einer Tabelle über Userform ändern
Bobesch58
Hallo und vielen Dank für die Erklärung und den Lösungsansatz. Hat hervorragend funktioniert.
Viele Grüße
Bobesch58