Ich habe in Spalte A Namen stehen ( ca. 500 St. ) sein, in Spalte B dazugehörige Zahlen.
Nach der Eingabe eines Namens in E1 und einer Zahl in G1 soll geprüft werden, ob der Namen bereits vorhanden ist.
Wenn ja, dann soll die zum Namen gehörende Zahl (in Spalte B) aktualisiert werden. Wenn nein, soll in Spalte A und B unter dem letzten vorhanden Namen der neue Namen und die Zahl eingetragen werden.
Ich hoffe ihr könnt mir weiterheflen, Screenshot anbei...
folgender Code kommt in das schon vorhandene VBA-Modul des entsprechenden Tabellenblattes:
Private Sub Worksheet_Change(ByVal Target As Range) Dim lngZ As Long If Target.Address = "$G$1" Then If IsNumeric(Target.Value) And Len(Range("E1").Value) Then On Error Resume Next Application.EnableEvents = False lngZ = Application.WorksheetFunction.Match(Range("E1").Value, Columns(1), 0) If lngZ = 0 Then lngZ = Cells(Rows.Count, 1).End(xlUp).Row + 1 Cells(lngZ, 1).Value = Range("E1").Value End If Cells(lngZ, 2).Value = Cells(lngZ, 2).Value + Range("G1").Value Range("E1,G1") = "" Range("E1").Activate Application.EnableEvents = True On Error GoTo 0 End If End If End Sub
Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28 • Wiiinnniii
31.10.2016, 19:37 (Dieser Beitrag wurde zuletzt bearbeitet: 31.10.2016, 19:38 von snb.)
In der Codemodule des Arbeitsblattes:
Code:
Dim d_00 As Object
Sub M_snb() Cells(1, 5).Validation.Add 3, , , "=" & Cells(1).CurrentRegion.Columns(1).Address End Sub
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$E$1" Then If d_00 Is Nothing Then Set d_00 = CreateObject("scripting.dictionary") sn = Sheet1.Cells(1).CurrentRegion For j = 1 To UBound(sn) d_00(sn(j, 1)) = sn(j, 2) Next End If
Target.Offset(, 2) = d_00(Target.Value) End If End Sub
Zelle E1 enthällt ein Validation: die Werten in Spalte A
Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:1 Nutzer sagt Danke an snb für diesen Beitrag 28 • Wiiinnniii
vielen Dank für Deine Antwort. Leider habe ich Probleme, den Code einzufügen. An welcher Stelle genau füge ich ihn ein ?
Wenn ich z.B. mit dem Makro-Recorder in diesem Tabellenblatt ein Makro erzeuge, entsteht ein Modul. In dieses habe ich dann Deinen Code reinkopiert, hat aber leider nicht funktioniert
Danke, aber genau das habe ich gemacht, siehe Screensot.
Nur habe ich leider keine Ahnung wie ich das Makro starte, da es (auch nach Neustart der Datei) nicht in der Makroliste erscheint. Oder wie rufe ich es auf ?
(31.10.2016, 23:40)Wiiinnniii schrieb: Nur habe ich leider keine Ahnung wie ich das Makro starte, da es (auch nach Neustart der Datei) nicht in der Makroliste erscheint. Oder wie rufe ich es auf ?
gib einfach Daten in E1 und G1 ein.
Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28 • Wiiinnniii
:05: Boa, wie geil ist das denn! Vielen herzlichen Danke !!! Hab noch etwas angepasst, da ich keine aufaddierung der Werte haben möchte, sondern die Löschung des alten und Ersetzung mit dem neuen Wert haben möchte.
Vielen Dank Uwe, ich wäre froh, wenn ich verstehen könnte wie das funktioniert und ich das auch erstellen könnte !