Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1052to1056
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zeile finden und Zellinhalte ändern

Zeile finden und Zellinhalte ändern
24.02.2009 15:37:44
schneewittchen123
Hallo zusammen,
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


2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeile finden und Zellinhalte ändern
24.02.2009 16:37:20
fcs
Hallo Melanie,
ungetestet, aber folgendes müsste eigentlich zum Ziel führen.
Gruß
Franz

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Weiter, lngZeile As Long, rngZelle As Long, bolUeberschreiben As Boolean
Dim wksSchrott As Worksheet
If Target.Column = 8 Then
Set wksSchrott = Worksheets("Material verschrotten")
'Nächste leere Zeile in "Material verschrotten"
With wksSchrott
lngZeile = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
End With
bolUeberschreiben = False
'Prüfen, Eintrag bereits vorhanden
If Application.CountIf(wksSchrott.Range("A:A"), Cells(Target.Row, 1).Value) > 0 Then
Weiter = MsgBox("Achtung, Eintrag bereits vorhanden. " & vbLf _
& " Möchten Sie den vorhandenen Eintrag überschreiben?", vbYesNo)
If Weiter = vbYes Then
bolUeberschreiben = True
End If
End If
If bolUeberschreiben = True 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"
With wksSchrott
Set rngZelle = .Columns(1).Find(what:=Cells(Target.Row, 1).Value, LookIn:=xlValues, _
lokat:=xlWhole)
lngZeile = rngZelle.Row
End With
wksSchrott.Cells(lngZeile, 2).Value = Cells(Target.Row, 8).Value
Else
wksSchrott.Cells(lngZeile, 1).Value = Cells(Target.Row, 2).Value 'oder ?
wksSchrott.Cells(lngZeile, 1).Value = Cells(Target.Row, 1).Value '? Wert aus Spalte A
wksSchrott.Cells(lngZeile, 2).Value = Cells(Target.Row, 8).Value
wksSchrott.Cells(lngZeile, 3).Value = Cells(Target.Row, 29).Value
wksSchrott.Cells(lngZeile, 4).Value = Cells(Target.Row, 75).Value
End If
End If
End Sub


Anzeige
AW: Zeile finden und Zellinhalte ändern
24.02.2009 16:57:36
schneewittchen123
Hallo Franz,
funktioniert super...
ich habe nur noch rngZelle auf Range statt auf Long dimensioniert und aus dem "lokat" ein lookat gemacht und schon klappert´s :-))))
Vielen, vielen Dank!!!
Gruß,
Melanie

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige