ich möchte ein Makro noch ein bisschen verfeinern und benötige noch mal Eure Hilfe:
Was funktioniert ist folgendes:
Ich habe ein Tabellenblatt "Tabelle1", in dem ich in Spalte A eine Artikelnummer stehen habe. Nun gibt es für dieses Material bestimmte Entscheidungen zu treffen (z.B. das Material zu löschen). Sobald ich in Spalte H (=8) einen Eintrag mache, wird die Materialnummer aus Spalte A sowie die Information aus Spalte H (und noch 2 weitere Informationen aus Spalte 29 + 75) in das Tabellenblatt "Material verschrotten" übertragen. Somit sind dann die Spalten A - D in Tabellenblatt "Material verschrotten ausgefüllt. So weit, so gut.
Nun kommt die Verfeinerung:
Jetzt möchte ich, dass ich vor dem Eintrag in dem Tabellenblatt "Material verschrotten" erst einmal nachgucke, ob die Materialnummer bereits vorhanden ist. Dann möchte ich - falls das so ist - dass die Einträge aktualisiert, d.h. überschrieben werden. Meine erste Überlegung war, das über eine MsgBox zu machen, um so noch entscheiden zu können, ob ich das will oder nicht. Falls ich die Aktualisierung nicht möchte (vbNo), sollen die Daten wie gehabt in die erste freie Zeile geschrieben werden.
Ich komme einfach nicht auf die Lösung, wie ich die Zeile mit der bereits vorhandenen Materialnummer anspreche. Könnt Ihr helfen?
VG,
Melanie
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Weiter
If Target.Column = 8 Then
If Application.CountIf(Sheets("Material verschrotten").Range("A:A"), Cells(Target.Row, 1).Value) _
_
> 0 Then
Weiter = MsgBox("Achtung, Eintrag bereits vorhanden. Möchten Sie den vorhandenen Eintrag ü _
berschreiben?", vbYesNo)
If Weiter = vbYes Then
'finde in "Material verschrotten" die Zeile mit dem Wert von Spalte A (Tabellenblatt "Tabelle1" _
_
und überschreibe in Tabellenblatt "Material verschrotten" Spalte 2 mit dem neuen Wert von _
Spalte 8 aus "Tabelle1"
Else:
'finde in Tabellenblatt "Material verschrotten" die erste freie Zeile und füge die Werte s.u. _
_
ein
Worksheets("Material verschrotten").Cells(65000, 1).End(xlUp).Offset(1, 0).Value = _
Cells(Target.Row, 2).Value
Worksheets("Material verschrotten").Cells(65000, 1).End(xlUp).Offset(0, 1).Value = _
Cells(Target.Row, 8).Value
Worksheets("Material verschrotten").Cells(65000, 1).End(xlUp).Offset(0, 2).Value = _
Cells(Target.Row, 29).Value
Worksheets("Material verschrotten").Cells(65000, 1).End(xlUp).Offset(0, 3).Value = _
Cells(Target.Row, 75).Value
End If
Else:
End If
Worksheets("Material verschrotten").Cells(65000, 1).End(xlUp).Offset(1, 0).Value = Cells(Target. _
_
Row, 2).Value
Worksheets("Material verschrotten").Cells(65000, 1).End(xlUp).Offset(0, 1).Value = Cells(Target. _
_
Row, 8).Value
Worksheets("Material verschrotten").Cells(65000, 1).End(xlUp).Offset(0, 2).Value = Cells(Target. _
_
Row, 29).Value
Worksheets("Material verschrotten").Cells(65000, 1).End(xlUp).Offset(0, 3).Value = Cells(Target. _
_
Row, 75).Value
End If
End Sub