ich komme mal wieder nicht weiter und hoffe auf Hilfe. Das hat nämlich schon einige Male gut geklappt.

Ich habe eine Datenbank erstellt mit den Button SPEICHERN, SUCHEN, ÄNDERN
Per Doppelklick auf einen Datensatz in der Tabelle wird das Formular(Userform1) geöffnet. Der angeklickte Datensatz wird im Formular angezeigt.
SUCHEN funktioniert.
SPEICHERN funktioniert. Es wird die nächste freie Zeile gesucht und der Datensatz wird dort gespeichert.
Nun möchte ich einen aufgerufenen Datensatz im Formular ändern. Der Datensatz soll in der Tabelle entsprechend überschrieben werden
Mir fiel nichts Besseres ein, als dem Button ÄNDERN den Code von Button SUCHEN zuzuordnen.
Und einfach nur die Zuordnung umdrehen.
Also von
Me.TextBox_Standort.Value = ngTreffer.Offset(0, 4).Value wurde
rngTreffer.Offset(0, 4).Value = Me.TextBox_Standort.Value
Das klappt auch. Aber nur für die Textboxen.
Die Comboboxen speichern die Änderungen nicht.
Code von "Suchen"
- Code: Alles auswählen
'Suchfunktion
Private Sub CommandButton1_Click()
Dim rngTreffer As Range
With Tabelle1
Set rngTreffer = Sheets("Tabelle1").Range("A:A").Find(What:=TextBox_Mastnr.Value, Lookat:=xlWhole)
If Not rngTreffer Is Nothing Then
Me.ComboBox_Ortsteil.Value = rngTreffer.Offset(0, 1).Value
Me.ComboBox_Straße.Value = rngTreffer.Offset(0, 2).Value
Me.TextBox_Breitengrad.Value = rngTreffer.Offset(0, 3).Value
Me.TextBox_Standort.Value = rngTreffer.Offset(0, 4).Value
Me.TextBox_Längengrad.Value = rngTreffer.Offset(0, 6).Value
Me.ComboBox_Matnr.Value = rngTreffer.Offset(0, 5).Value
Me.ListBox_Werkstoff.Value = rngTreffer.Offset(0, 7).Value
Me.TextBox_Bemerkung.Value = rngTreffer.Offset(0, 10).Value
Me.TextBox_Prüfdatum.Value = rngTreffer.Offset(0, 8).Value
If rngTreffer.Offset(0, 9).Value = "6 Jahre standsicher" Then Me.OptionButton1.Value = True
If rngTreffer.Offset(0, 9).Value = "3 Jahre standsicher" Then Me.OptionButton2.Value = True
If rngTreffer.Offset(0, 9).Value = "6 Monate standsicher" Then Me.OptionButton3.Value = True
If rngTreffer.Offset(0, 9).Value = "sofort" Then Me.OptionButton4.Value = True
If rngTreffer.Offset(0, 9).Value = "nicht geprüft" Then Me.OptionButton5.Value = True
Else
If rngTreffer Is Nothing Then
MsgBox "Nicht vorhanden"
End If
Exit Sub
End If
End With
End Sub
Code von Ändern
- Code: Alles auswählen
'Datensatz ändern
Private Sub CommandButton2_Click()
Me.Label1.Caption = Chr(232)
Dim rngTreffer As Range
With Tabelle1
Set rngTreffer = Sheets("Tabelle1").Range("A:A").Find(What:=TextBox_Mastnr.Value, Lookat:=xlWhole)
If Not rngTreffer Is Nothing Then
rngTreffer.Offset(0, 1).Value = Me.ComboBox_Ortsteil.Value
rngTreffer.Offset(0, 2).Value = Me.ComboBox_Straße.Value
rngTreffer.Offset(0, 3).Value = Me.TextBox_Breitengrad.Value
rngTreffer.Offset(0, 4).Value = Me.TextBox_Standort.Value
rngTreffer.Offset(0, 6).Value = Me.TextBox_Längengrad.Value
'rngTreffer.Offset(0, 5).Value = Me.ComboBox_Matnr.Value
rngTreffer.Offset(0, 7).Value = Me.ListBox_Werkstoff.Value
rngTreffer.Offset(0, 10).Value = Me.TextBox_Bemerkung.Value
rngTreffer.Offset(0, 8).Value = Me.TextBox_Prüfdatum.Value
If rngTreffer.Offset(0, 9).Value = "6 Jahre standsicher" Then Me.OptionButton1.Value = True
If rngTreffer.Offset(0, 9).Value = "3 Jahre standsicher" Then Me.OptionButton2.Value = True
If rngTreffer.Offset(0, 9).Value = "6 Monate standsicher" Then Me.OptionButton3.Value = True
If rngTreffer.Offset(0, 9).Value = "sofort" Then Me.OptionButton4.Value = True
If rngTreffer.Offset(0, 9).Value = "nicht geprüft" Then Me.OptionButton5.Value = True
Else
If rngTreffer Is Nothing Then
MsgBox "Nicht vorhanden"
End If
Exit Sub
End If
End With
End Sub
Und hier noch der Code von SPEICHERN. Ich habe versucht, diesen abzuwandeln. Aber, er generiert dann zwar keine neue Mastnr. Der geänderte Datensatz wird aber in der Tabelle unten angefügt
- Code: Alles auswählen
Private Sub CommandButton_Eingabe_Click()
CommandButton_Eingabe.Accelerator = "s" 'Shortcut
'Erste freie Zeile ausfindig machen
Dim last As Integer
last = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
'Ortsteil
Cells(last, 2).Value = ComboBox_Ortsteil
'Straße
Cells(last, 3).Value = ComboBox_Straße
'Breitengrad
Cells(last, 4).Value = TextBox_Breitengrad
'Standort
Cells(last, 5).Value = TextBox_Standort
'Mastnr.
Cells(last, 1).Value = TextBox_Mastnr * 1
'Materialnr.
Cells(last, 6).Value = ComboBox_Materialnr
'Werkstoff
Cells(last, 8).Value = ListBox_Werkstoff.Value
'Längengrad
Cells(last, 7).Value = TextBox_Längengrad
'Prüfdatum
Cells(last, 9).Value = TextBox_Prüfdatum
'Gewährleistung
If OptionButton1.Value = True Then Cells(last, 10).Value = "6 Jahre standsicher"
If OptionButton2.Value = True Then Cells(last, 10).Value = "3 Jahre standsicher"
If OptionButton3.Value = True Then Cells(last, 10).Value = "6 Monate standsicher"
If OptionButton4.Value = True Then Cells(last, 10).Value = "sofort"
If OptionButton5.Value = True Then Cells(last, 10).Value = "nicht geprüft"
'Bemerkung
Cells(last, 11).Value = TextBox_Bemerkung
End Sub
Ich wäre sehr dankbar, wenn ich Rat bekäme.
Viele Grüße
Anja