VisualBasic VBA: Daten in Excelmappe über UserForm ändern

MrSyniXDriVe

Lt. Junior Grade
Registriert
Aug. 2013
Beiträge
308
Hallo zusammen, ich hab ein kleines Problem. Für eine Datenänderung hab ich eine UserForm erstellt. Mittels eines Kombinationsfeldes kann man den Datensatz (in diesem Fall ein Arbeiter) auswählen. Die Daten werden dann in Textfelder ausgegeben, wo man Sie bearbeiten kann. Anschließend kann man Sie mit einem Button ändern.

Code:
Private Sub cmdok_Click()
I = 0
Do
I = I + 1
Loop Until Worksheets("Arbeiter").Cells(I, 4).Value = arbeiterändern.cboarbeiter.Value


If Me.lblvorname.ForeColor Or Me.lblnachname.ForeColor Or Me.lblstraße.ForeColor Or Me.lblort.ForeColor Or Me.lblplz.ForeColor Or Me.lbltelefon.ForeColor _
Or Me.lblsvnr.ForeColor Or Me.lblemail.ForeColor = &H808000 Then


strvorname = Me.txtvorname.Value
strnachname = Me.txtnachname.Value
strstraße = Me.txtstraße.Value
strplz = Me.txtplz.Value
strort = Me.txtort.Value
strtelefon = Me.txttelefon.Value
stremail = Me.txtemail.Value
strsv = Me.txtsv.Value

With Worksheets("Arbeiter")
.Cells(I, 2) = strvorname
.Cells(I, 3) = strnachname
.Cells(I, 5) = strstraße
.Cells(I, 6) = strplz
.Cells(I, 7) = strort
.Cells(I, 8) = strtelefon
.Cells(I, 9) = stremail
.Cells(I, 11) = strsv
End With

With Me
.lblvorname.ForeColor = &H0&
.lblnachname.ForeColor = &H0&
.lblstraße.ForeColor = &H0&
.lblplz.ForeColor = &H0&
.lblort.ForeColor = &H0&
.lbltelefon.ForeColor = &H0&
.lblemail.ForeColor = &H0&
.lblsvnr.ForeColor = &H0&
End With


arbeiterändern.cboarbeiter.Value = Worksheets("Arbeiter").Cells(I, 4).Value

I = 0
Do
I = I + 1
Loop Until Worksheets("Arbeiter").Cells(I, 1).Value = ""

arbeiterändern.cboarbeiter.RowSource = "Arbeiter!D3:D" & I - 1

Das entsprechende Tabellenblatt sieht folgendermaßen aus:
Screenshot_5.png

Und die Userform: (Hier wurde der name von Max zu Maxim geändert, aber noch nicht bestätigt, desshalb noch Blau bei den Infos.

Screenshot_6.png


Nun zu meinem Problem:

Ich kann den Vornamen Ändern, das läuft alles wie gewollt, es wird auch gleich der Name in der Kombobox mitgeändert, also steht z.B. dann beim Bestätigen gleich Maxim Mustermann in der Kombobox. Allerdings kann ich sonst keine Daten ändern. Immer wenn ich andere Daten ändern will dann stehen nach dem bestätigen wieder die Alten drin.

Wenn ich allerdings folgende Zeilen als Kommentar verfasse, kann ich alle anderen Daten ändern. Wenn ich nur den Vornamen als Kommentar verfasse, kann ich nur den Nachnamen ändern.

Code:
.Cells(I, 2) = strvorname
.Cells(I, 3) = strnachname
strvorname = Me.txtvorname.Value
strnachname = Me.txtnachname.Value

Ich bin echt am grübeln, worin der Fehler liegt, ich hoffe jemand von euch hat genug zeit sich das anzusehen, ich freue mich auf alle antworten.
 
Hab vielleicht später heut mal Zeit mir das anzuschauen.
Aber schon mal ein Tipp: Benutzte NIEMALS äöüß usw. beim programmieren, das führt oft zu Fehlern. Eine anständige Programmiersprache würde das gar nicht zulassen.
 
Danke für die Antwort, mittlerweile hab ich den Fehler gefunden, er liegt aber nicht in diesem code.
Bei der Combobox zur Auswahl hab ich den Sub Change verwendet, der alle Daten in die Textfelder lädt. Wenn man nun den Vornamen verändert (oder auch nicht ist im endefekt egal) behandelt das Programm das wie einen Change der ComboBox und diese fängt wieder an die alten nicht geänderten Daten reinzuladen, anschließend werden dann die alten daten gespeichert.
Hat ne weile gedauert bis ich das kapiert hab ^^ hab statt change nun AfterUpdate verwendet und jetzt klappts einwandfrei.

Danke auch für den Tipp werde das noch ändern. Naja, ich würd auch gern was anderes nehmen aber Aufgabenstellung hies leider Excel-VBA-Lösung ^^
 
Zurück
Oben