Dim tbl As ListObject
Set tbl = Sheets(1).ListObjects(1)
Dim tblRow As Range
Set tblRow = tbl.ListRows.Add.Range
Option Explicit
Sub EintragLoeschen()
'Abfrage, ob der Eintrag wirklich gelöscht werden soll
Dim Antwort
Antwort = MsgBox("Soll der Eintrag wirklich gelöscht werden?", vbYesNo + vbQuestion, "Eintrag löschen?")
If Antwort = vbYes Then ActiveCell.EntireRow.Delete
End Sub
Sub Change_EingabeDB()
'Tabelle einlesen
Dim tbl As ListObject
Set tbl = tb_Datenbank.ListObjects(1)
Dim Zeile As Long
'Anlegen oder Bearbeiten?
If tb_Bearbeitung.Shapes.Range(Array("txt_Anlegen", "img_Anlegen")).Visible = True Then
'Anlegen
'Zeile hinzufügen
tbl.ListRows.Add
'Zeile in Variable speichern
Zeile = tbl.DataBodyRange.Rows.Count
Else
'Bearbeiten
Zeile = Range("tblAltbestand[ID-Nr.]").Find(What:=tb_Bearbeitung.Range("H14").Value _
, LookIn:=xlValues, LookAt:=xlWhole).Row - tbl.HeaderRowRange.Row
End If
'Datenbank befüllen
With tb_Bearbeitung
tbl.DataBodyRange(Zeile, 1).Value = .Range("H14").Value
tbl.DataBodyRange(Zeile, 4).Value = .Range("H20").Value
tbl.DataBodyRange(Zeile, 6).Value = .Range("H22").Value
tbl.DataBodyRange(Zeile, 5).Value = .Range("H24").Value
tbl.DataBodyRange(Zeile, 8).Value = .Range("H26").Value
tbl.DataBodyRange(Zeile, 2).Value = .Range("L20").Value
tbl.DataBodyRange(Zeile, 3).Value = .Range("L22").Value
tbl.DataBodyRange(Zeile, 7).Value = .Range("L24").Value
tbl.DataBodyRange(Zeile, 9).Value = Date
End With
'Navigieren zu Tabellenblatt Altbestand
tb_Datenbank.Select
ActiveWindow.ScrollRow = tbl.DataBodyRange(Zeile, 1).Row
tbl.DataBodyRange(Zeile, 1).Select
End Sub
Sub Anlegen_DBEingabe()
'Tabelle einlesen
Dim tbl As ListObject
Set tbl = tb_Datenbank.ListObjects(1)
With tb_Bearbeitung
'Spalten leeren
.Columns("H").ClearContents
.Columns("L").ClearContents
'ID-Nr. einfügen
.Range("H14").Value = tbl.DataBodyRange(tbl.DataBodyRange.Rows.Count, 1).Value + 1
'Navigieren auf das Eingabeformular
.Shapes.Range(Array("txt_Anlegen", "img_Anlegen")).Visible = True
.Shapes.Range(Array("txt_Bearbeiten", "img_Bearbeiten")).Visible = False
.Select
'Zelle auswählen
.Range("H20").Select
End With
End Sub
Sub Bearbeiten_DBEingabe()
'Tabelle einlesen
Dim tbl As ListObject
Set tbl = tb_Datenbank.ListObjects(1)
Dim Zeile As Long
Zeile = ActiveCell.Row - tbl.HeaderRowRange.Row
With tb_Bearbeitung
'Spalten leeren
.Columns("H").ClearContents
.Columns("L").ClearContents
'Eingabeformular befüllen
.Range("H14").Value = tbl.DataBodyRange(Zeile, 1).Value
.Range("H20").Value = tbl.DataBodyRange(Zeile, 4).Value
.Range("H22").Value = tbl.DataBodyRange(Zeile, 6).Value
.Range("H24").Value = tbl.DataBodyRange(Zeile, 5).Value
.Range("L20").Value = tbl.DataBodyRange(Zeile, 2).Value
.Range("L22").Value = tbl.DataBodyRange(Zeile, 3).Value
.Range("L24").Value = tbl.DataBodyRange(Zeile, 7).Value
'Navigieren auf das Eingabeformular
.Shapes.Range(Array("txt_Anlegen", "img_Anlegen")).Visible = False
.Shapes.Range(Array("txt_Bearbeiten", "img_Bearbeiten")).Visible = True
.Select
'Zelle auswählen
.Range("H20").Select
End With
End Sub
Sub Change_EingabeDB()
'Tabelle einlesen
Dim tb_Datenbank
Dim tbl As ListObject
Dim Zeile As Long
Set tb_Datenbank = Sheets("Altbestand") 'wenn das so korrekt ist???
Set tbl = tb_Datenbank.ListObjects(1)
'Anlegen oder Bearbeiten?
If tb_Bearbeitung.Shapes.Range(Array("txt_Anlegen", "img_Anlegen")).Visible = True Then
'Anlegen
'Zeile hinzufügen
tbl.ListRows.Add
'...... usw
Sub Change_EingabeDB()
Dim arr()
'Tabelle einlesen
Dim tbl As ListObject
Set tbl = tb_Datenbank.ListObjects(1)
With tb_Bearbeitung
arr = Array(.Range("H14").Value, .Range("L20").Value, .Range("L22").Value, .Range("H20").Value, .Range("H24").Value, .Range("H22").Value, .Range("L24").Value, .Range("H26").Value, Date)
End With
'Anlegen oder Bearbeiten?
If tb_Bearbeitung.Shapes.Range(Array("txt_Anlegen", "img_Anlegen")).Visible = True Then
'Zeile hinzufügen und füllen
tbl.ListRows.Add.Range.Resize(1, UBound(arr) + 1) = arr
Else
'Bearbeiten
Zeile = Range("tblAltbestand[ID-Nr.]").Find(What:=tb_Bearbeitung.Range("H14").Value _
, LookIn:=xlValues, LookAt:=xlWhole).Row - tbl.HeaderRowRange.Row
End If
'Navigieren zu Tabellenblatt Altbestand
tb_Datenbank.Select
ActiveWindow.ScrollRow = tbl.DataBodyRange(Zeile, 1).Row
tbl.DataBodyRange(tbl.ListRows.Count, 1).Select
End Sub
If tb_Bearbeitung.Shapes.Range(Array("txt_Anlegen", "img_Anlegen")).Visible = True Then
Sub Change_EingabeDB()
Dim arr()
'Tabelle einlesen
Dim tbl As ListObject
Set tbl = tb_Datenbank.ListObjects(1)
With tb_Bearbeitung
arr = Array(.Range("H14").Value, .Range("L20").Value, .Range("L22").Value, .Range("H20").Value, .Range("H24").Value, .Range("H22").Value, .Range("L24").Value, .Range("H26").Value, Date)
End With
'Zeile hinzufügen und füllen
tbl.ListRows.Add.Range.Resize(1, UBound(arr) + 1) = arr
'Navigieren zu Tabellenblatt Altbestand
tb_Datenbank.Select
ActiveWindow.ScrollRow = tbl.DataBodyRange(tbl.ListRows.Count, 1).Row
tbl.DataBodyRange(tbl.ListRows.Count, 1).Select
End Sub
Sub Change_EingabeDB()
Dim arr()
Dim Zeile
'Tabelle einlesen
Dim tbl As ListObject
Set tbl = tb_Datenbank.ListObjects(1)
With tb_Bearbeitung
arr = Array(.Range("H14").Value, .Range("L20").Value, .Range("L22").Value, .Range("H20").Value, .Range("H24").Value, .Range("H22").Value, .Range("L24").Value, .Range("H26").Value, Date)
End With
'Anlegen oder Bearbeiten?
If tb_Bearbeitung.Shapes.Range(Array("txt_Anlegen", "img_Anlegen")).Visible = True Then
'Zeile hinzufügen und füllen
tbl.ListRows.Add.Range.Resize(1, UBound(arr) + 1) = arr
Else
'Bearbeiten
Zeile = Range("tblAltbestand[ID-Nr.]").Find(What:=tb_Bearbeitung.Range("H14").Value _
, LookIn:=xlValues, LookAt:=xlWhole).Row - tbl.HeaderRowRange.Row
End If
'Navigieren zu Tabellenblatt Altbestand
tb_Datenbank.Select
ActiveWindow.ScrollRow = tbl.DataBodyRange(Zeile, 1).Row
tbl.DataBodyRange(tbl.ListRows.Count, 1).Select
End Sub
tbl.ListRows.Add.Range.Resize(1, UBound(arr) + 1) = arr
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = "H14" Then
Formularfuellen IIf(Target.Value = "", 0, Target.Value)
End If
End Sub
Sub Change_EingabeDB()
'Tabelle einlesen
Dim tab_1 As ListObject
Dim lstrow As ListRow
Set tab_1 = tb_Datenbank.ListObjects("tblAltbestand")
Dim Zeile
'Anlegen oder Bearbeiten?
If tb_Bearbeitung.Range("H14").Value = "Neu" Then
Set lstrow = tab_1.ListRows.Add
lstrow.Range(1) = WorksheetFunction.Max(tab_1.ListColumns("ID-Nr.").DataBodyRange) + 1
ListeAktualisieren
Else
Zeile = Application.WorksheetFunction.Match(tb_Bearbeitung.Range("H14").Value, tab_1.ListColumns("ID-Nr.").DataBodyRange, 0)
If IsNumeric(Zeile) Then
Set lstrow = tab_1.ListRows(Zeile)
Else
Set lstrow = Nothing
End If
End If
If Not lstrow Is Nothing Then
'Datenbank befüllen
With tb_Bearbeitung
Application.EnableEvents = False
'lstrow.Range(1).Value = .Range("H14").Value 'wird nur bei Neu gesetzt.
lstrow.Range(4).Value = .Range("H20").Value
lstrow.Range(6).Value = .Range("H22").Value
lstrow.Range(5).Value = .Range("H24").Value
lstrow.Range(8).Value = .Range("H26").Value
lstrow.Range(2).Value = .Range("L20").Value
lstrow.Range(3).Value = .Range("L22").Value
lstrow.Range(7).Value = .Range("L24").Value
lstrow.Range(9).Value = Date
.Range("H14,H20,H22,H24,H26,L20,L22,L24").ClearContents
Application.EnableEvents = True
End With
End If
End Sub
Sub Anlegen_DBEingabe()
'Tabelle einlesen
Dim tbl As ListObject
Set tbl = tb_Datenbank.ListObjects(1)
With Worksheets("Eingabeformular")
Application.EnableEvents = False
.Range("H14,H20,H22,H24,H26,L20,L22,L24").ClearContents
'ID-Nr. einfügen
.Range("H14").Value = "Neu" ' WorksheetFunction.Max(tbl.ListColumns("ID-Nr.").DataBodyRange) + 1
Application.EnableEvents = True
End With
End Sub
Sub Formularfuellen(Optional id& = 0)
'Tabelle einlesen
Dim tbl As ListObject, lstrow As ListRow, Zeile
Set tbl = tb_Datenbank.ListObjects(1)
With Worksheets("Eingabeformular")
Application.EnableEvents = False
.Range("H20,H22,H24,H26,L20,L22,L24").ClearContents
If id > 0 Then
Zeile = Application.WorksheetFunction.Match(id, tbl.ListColumns("ID-Nr.").DataBodyRange, 0)
If IsNumeric(Zeile) Then
Set lstrow = tbl.ListRows(Zeile)
'Eingabeformular befüllen
'.Range("H14").Value = lstrow.Range(1).Value 'dropdown: einlesen unnötig
.Range("H20").Value = lstrow.Range(4).Value
.Range("H22").Value = lstrow.Range(6).Value
.Range("H24").Value = lstrow.Range(5).Value
.Range("H26").Value = lstrow.Range(8).Value
.Range("L20").Value = lstrow.Range(2).Value
.Range("L22").Value = lstrow.Range(3).Value
.Range("L24").Value = lstrow.Range(7).Value
Application.EnableEvents = True
End If
End If
End With
End Sub
Sub ListeAktualisieren()
'dropdown für H14
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=Altbestand!" & tb_Datenbank.ListObjects(1).ListColumns(1).DataBodyRange.Address
.IgnoreBlank = True
.InCellDropdown = True
.ShowInput = True
.ShowError = True
End With
End Sub