stehe mal wieder vor einem Problem wo ich Eure Hilfe benötige.
Ich habe in einer UserForm1 mehrere TextBox'en und ComboBox'en
diese werden über eine Auswahl (wenn ich den entsprechenden Datensatz in der ListBox1 markiere) aus der ListBox1 entsprechend befüllt und dienen als Ansicht und Eingabe für ein Formular das der Anwender auch bei Bedarf ändern kann. Demzufolge werden die geänderten Werte auch wieder ordnungsgemäß in die Ursprungstabelle zurückgeschrieben.
das mache ich derzeit mit folgenden Code.
'+++
Sub übertragen1(boxnr As Long, spalte As Long)
ThisWorkbook.Worksheets("Erfassung_Bearbeitung").Cells(frmRessourcenliste.Tag, spalte) = Me.Controls("TextBox" & boxnr).Value
End Sub '+++
'+++
Sub übertragen2(boxnr As Long, spalte As Long)
ThisWorkbook.Worksheets("Erfassung_Bearbeitung").Cells(frmRessourcenliste.Tag, spalte) = Me.Controls("ComboBox" & boxnr).Value
End Sub '+++
Private Sub TextBox4_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Call übertragen1(4, 306)
End Sub
Private Sub ComboBox161_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Call übertragen2(161, 347)
End Sub
das funktioniert in meinem Fall auch recht gut.Habe aber jetzt folgendes Problem:
Ich möchte wenn der User in irgendeiner TextBox oder ComboBox den Wert ändert (aber nur wenn er wirklich ändert zB. steht in der TextBox der Wert "Test" und der User ändert diesen Wert in "Test1" oder in der ComboBox wird durch Auswahl eines Dropdown Wertes der Wert geändert) dann soll anhand des nachfolgenden Codes der Username und das Datum der Änderung protokolliert werden. Aber nur in dem entsprechend ausgewählten Datensatz.
WkSh.Cells(frmRessourcenliste.Tag, 420) = Environ("username") 'PD/420 Username
WkSh.Cells(frmRessourcenliste.Tag, 421) = Now 'PE/421 aktuelles Datum
ich hatte versucht das so zu lösen. Hat aber nicht zum Erfolg geführt.++
'+++
Sub übertragen1(boxnr As Long, spalte As Long)
ThisWorkbook.Worksheets("Erfassung_Bearbeitung").Cells(frmRessourcenliste.Tag, spalte) = Me.Controls("TextBox" & boxnr).Value
WkSh.Cells(frmRessourcenliste.Tag, 420) = Environ("username") 'PD/420 Username
WkSh.Cells(frmRessourcenliste.Tag, 421) = Now 'PE/421 aktuelles Datum
End Sub '+++
'++
in diesem Code werden zwar der Username und das Datum entsprechend in der Tabelle eingetragen und protokolliert.
Aber eben auch wenn ich in der Text nichts ändere. (zB. vorher stand "Test" und ich verlasse die TextBox wieder ohne den Wert geändert zu haben) wird mir trotzdem der Username und das Datum protokolliert.
Die ist aber so nicht gewünscht. Sondern wirklich nur wenn sich der Wert aus der TextBox vonn leer auf gefüllt oder von dem vorher eingelesenen Wert (zB. "Test" auf "Test1" ändert)
Ich hoffe ich habe mein Problem einigermaßen verständlich erklärt.
Kann mir jemand den Code dafür nennen und bei der Lösung behilflich sein?
Bedanke mich jetzt schon für Eure Unterstützung und Hilfe.
Danke Andreas