Ich wähle in einer UserForm in der ListBox einen Eintrag (Datensatz) aus den ich durch verschiedene TextBox'en auch ändern kann und mit einer Schaltfläche die gemachten Änderungen auch wieder in die Ursprungstabelle zurückschreiben kann.
Das funktioniert mit dem beigefügten Code auch sehr gut.
'hier werden die Änderungen der "TextBox" in das Tabellenblatt ("B Bauakte") eingetragen
'
Private Sub CommandButton1_Click()
Sub Änderungen_eintragen()
Dim lngRow As Long
On Error GoTo Fin
If Trim(TextBox10.Text) "" And Trim(TextBox2.Text) "" Then
If Me.Tag "" Then
With Sheets("B Bauakte")
.Cells(Me.Tag, 1).Value = CLng(TextBox10.Text) 'A 'ID entspricht Zeilennummer _
_
Formel: =ZEILE(A25)
.Cells(Me.Tag, 4).Value = TextBox1.Text 'D 'Ordner-Nummer
.Cells(Me.Tag, 7).Value = TextBox2.Text 'G 'Unterlagen
.Cells(Me.Tag, 8).Value = TextBox3.Text 'H 'Unterlagen Unterordner
.Cells(Me.Tag, 16).Value = TextBox4.Text 'P 'Bemerkung (Spalte "P")
End With
Else
With Sheets("B Bauakte")
lngRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
.Cells(lngRow, 1) = CLng(TextBox10.Text) 'A 'ID entspricht _
Zeilennummer Formel: =ZEILE(A25)
.Cells(lngRow, 4) = TextBox1.Text 'D 'Ordner-Nummer
.Cells(lngRow, 7) = TextBox2.Text 'G 'Unterlagen
.Cells(lngRow, 8) = TextBox3.Text 'H 'Unterlagen Unterordner
.Cells(lngRow, 16) = TextBox4.Text 'P 'Bemerkung (Spalte "P")
End With
End If
TextBox10.Text = ""
Else
MsgBox ("Entry incomplete!")
TextBox10.SetFocus
End If
Fin:
If Err.Number 0 Then MsgBox "Error: " & _
Err.Number & " " & Err.Description
Call CommandButton10_Click 'hierdurch werden die Daten in _
_
der ListBox wieder sofort aktualisiert
End Sub
Meine 1.Frage dazu ist:
Wie muss ich den Code ergänzen oder abändern das mir nach der Aktualisierung des Datensatzes der Datensatz wie ursprünglich in der ListBox blau hinterlegt (also wieder den Focus erhält)
Bei meinem Code mus ich erst den Datensatz wieder in der ListBox per Mausklick auswählen um den geänderten Datensatz wieder in den zugehörigen TexBox'en anzuzeigen.
Hier noch der Code der mir anschließend die ListBox wieder nach dem Suchkriterium befüllt.
Hier sollte dann der ListBox Eintrag wieder wie vorher ausgewählt werden (blau hinterlegt und Focus erhalten)
Private Sub CommandButton10_Click()
Dim c As Range
Dim rngBereich As Range
Dim lngAnzahl As Long
Dim strFirst As String
ComboBox10 = "" 'sucht in Spalte "D" nach Ordner
ComboBox11 = "" 'suchen "BWH und BWB erfasst" Spalte "B"
TextBox11 = "" 'suchen "Equipment"
ThisWorkbook.Worksheets("B Bauakte").Activate
ThisWorkbook.Worksheets("B Bauakte").Cells(13, 1).Select
ListBox1.Clear
With Sheets("B Bauakte")
'.Range("A13").Select 'wenn ich das nicht mache kann es passieren das die _
erforderlichen Unterlagen mit "X" nicht angezeigt werden
'es entsteht ein falscher Wert wenn eine aktivierte Zelle sich _
_
noch in der Zeile des Datensatzes befindet
'eine Erkärung für dieses Verhalten habe ich aber NICHT
Set rngBereich = .Columns("D:D") 'sucht in _
Spalte "D" nach Ordner
Set c = rngBereich.Find(ComboBox12, LookIn:=xlValues, lookat:=xlPart) 'hier muss die _
_
Suchzelle angegeben werden zB. ComboBox11
If Not c Is Nothing Then
strFirst = c.Address
Do
ListBox1.AddItem .Cells(c.Row, 1) 'Spalte in der die "ID" _
_
Nummer steht
lngAnzahl = ListBox1.ListCount
ListBox1.List(lngAnzahl - 1, 1) = .Cells(c.Row, 1) 'ID = Zeilennummer ( _
Formel: =ZEILE(A10)
ListBox1.List(lngAnzahl - 1, 2) = .Cells(c.Row, 4) 'Ordner
ListBox1.List(lngAnzahl - 1, 3) = .Cells(c.Row, 7) 'Unterlagen
ListBox1.List(lngAnzahl - 1, 4) = .Cells(c.Row, 8) 'Unerkategorie von _
Unterlagen
ListBox1.List(lngAnzahl - 1, 5) = .Cells(c.Row, 16) 'Bemerkung
Set c = rngBereich.FindNext(c)
Loop While Not c Is Nothing And c.Address strFirst
End If
End With
End Sub
Ich stehe im Moment vollkommen auf dem Schlauch und bekomme das alleine nicht hin.Für Euer Bemühen und Hilfe bedanke ich mich bereits
Gruß Andreas