Ich bin noch Anfänger deswegen bitte gnädig sein.
Und zwar habe ich es zwar schon hinbekommen, dass meine ID UPR1 fortlaufen nummeriert wird (Code in blau) aber jetzt komme ich nicht weiter bei dem Wiederfinden einer Zeile anhand dieser ID (Code in rot).
In dem Tutorial und auch bei funktioniert es so, dass ich auf eine Zelle in meiner Datenbank klicke,dann ein Makro ausführe, alle Spalten in eine Eingabemaske gelangen. Habe ich als ID eine Nummer z.B 1, dann kann ich die Daten in der Eingabemaske verändern, durch ein Makro speichern und am Ende ist der Eintrag in der Datenbank verändert aber an der gleichen Position.(Code in rot)
Jetzt kommt aber der Haken, dass ich nicht nur eine Nummer als ID verwenden möchte, sondern wie bei mir UPR1, UPR2 usw. als ID benutze.
Könnt ihr mir vielleicht weiterhelfen und den Code entsprechend anpassen.
Vielen Dank im Voraus
Jamie
Sub EinträgeBearbeiten_UIDPCREingabe()
Dim header As Variant
Dim Spalte As Long
Spalte = 1
'Tabelle einlesen
Dim tbl As ListObject
Set tbl = Worksheets(ws_UIDPCR).ListObjects(1)
With Worksheets(ws_Eingabe)
'Zeile leeren
.Rows("12").ClearContents
.Rows("15").ClearContents
.Rows("18").ClearContents
'Alle Werte eintragen
For Each header In tbl.HeaderRowRange
.Range(.Cells.Find(What:=header, LookIn:=xlValues, LookAt:=xlWhole).Offset(1, 0).Address).Value = _
tbl.DataBodyRange(ActiveCell.row - tbl.HeaderRowRange.row, Spalte).Value
Spalte = Spalte + 1
Next header
'Tabellenblatt navigieren
.Shapes.Range(Array("img_Anlegen", "txt_Anlegen")).Visible = False
.Shapes.Range(Array("img_Bearbeiten", "txt_Bearbeiten")).Visible = True
Call Sheetswitch(ws_Eingabe)
'Zelle auswählen
.Range("D15").Select
End With
End Sub
Sub EinträgeAnlegen_UIDPCREingabe()
'Tabelle einlesen
Dim tbl As ListObject
Set tbl = Worksheets(ws_UIDPCR).ListObjects(1)
With Worksheets(ws_Eingabe)
'Zeile leeren
.Rows("12").ClearContents
.Rows("15").ClearContents
.Rows("18").ClearContents
'ID eintragen
.Range("F12").Value = "UPR" & Val(Mid(tbl.DataBodyRange(tbl.DataBodyRange.Rows.Count, 1).Value, 4)) + 1
'Tabellenblatt navigieren
.Shapes.Range(Array("img_Anlegen", "txt_Anlegen")).Visible = True
.Shapes.Range(Array("img_Bearbeiten", "txt_Bearbeiten")).Visible = False
Call Sheetswitch(ws_Eingabe)
'Zelle auswählen
.Range("D15").Select
End With
End Sub
Sub EinträgeAnlegen_EingabeUIDPCR()
Dim tbl As ListObject
Dim header As Variant
Dim newRow As ListRow
Dim cell As Range
Dim Spalte As Long
Dim Zeile As Long
With Worksheets(ws_UIDPCR)
' Tabelle einlesen
Set tbl = .ListObjects(1)
'Neuer Eintrag?
If Worksheets(ws_Eingabe).Shapes("img_Anlegen").Visible = True Then
' Neue Zeile hinzufügen
Set newRow = tbl.ListRows.Add(AlwaysInsert:=True)
'Zeile definieren
Zeile = tbl.DataBodyRange.Rows.Count
' Durch jede Zelle in der neuen Zeile iterieren
For Each cell In newRow.Range
' Textumbruch aktivieren
cell.WrapText = True
' Zeilenhöhe automatisch anpassen
cell.Rows.AutoFit
Next cell
'Eintrag bearbeiten?
Else
Zeile = Worksheets(ws_Eingabe).Range(Worksheets(ws_Eingabe).Cells.Find(What:="ID", LookIn:=xlValues, LookAt:=xlWhole).Offset(1, 0).Address).Value
End If
End With
With Worksheets(ws_Eingabe)
'Schleife über alle Tabellenheader
For Each header In tbl.HeaderRowRange
tbl.DataBodyRange(Zeile, Spalte).Value = _
.Range(.Cells.Find(What:=header, LookIn:=xlValues, LookAt:=xlWhole).Offset(1, 0).Address).Value
Spalte = Spalte + 1
Next header
End With
'Tabellenblatt UIDPCR auswählen und in Zeile springe
Call Nav_UIDPCR
tbl.DataBodyRange(Zeile, 1).Select
ActiveWindow.ScrollRow = Zeile + tbl.HeaderRowRange.row
End Sub
|