nach längerer Recherche ohne das gewünschte Ergebnis, bin ich auf dieses Forum gestoßen. Ich hatte mir vorgenommen Duplikate in einer Spalte beim Eintragen sichtbar zu machen. Das hat auch super geklappt und erfüllt genau das was ich mir vorgestellt habe.
Nun aber zu meiner Frage: Ich möchte sofern dies in Excel möglich ist, sobald ein doppelter Eintrag vorgenommen wird, automatisch einen Bezug bzw. eine Verlinkung zu dem Eintrag, welcher bereits in der Spalte existiert, herstellen. Beispielsweise existiert der Name Uwe in Zeile 5. Gebe ich in Zeile 30 ebenfalls den Namen Uwe ein, dann soll hier eine Verlinkung bzw. ein Sprung in die Zeile vorgenommen werden, in welcher der Name bereits existiert.
folgender Code kommt in das schon vorhandene VBA-Modul des entsprechenden Tabellenblattes:
Code:
Private Sub Worksheet_Change(ByVal Target As Range) Dim lngZ As Long lngZ = Application.Match(Target.Value, Target.EntireColumn, 0) If lngZ < Target.Row Then On Error Resume Next Application.EnableEvents = False Target.Formula = "=" & Cells(lngZ, Target.Column).Address(0, 0) Application.EnableEvents = True On Error GoTo 0 End If End Sub
Hallo Uwe, vielen Dank für die schnelle Antwort! Ich habe die Spalte über "Bedingte Formatierung" auf Duplikate gefiltert. Ist das mit dem von dir gezeigten Makro kompatibel? Den Code verstehe ich, allerdings stellt sich mir die Frage mit welchem der Elemente ich das implementieren soll. Es gibt Formularsteuerelemente und die ActiveX-Steuerelemente, die Unterschiede sind mir nicht bekannt. Damit hatte ich leider noch nicht zu tun
ist nicht so ganz die Aussage, mit der man weiter arbeiten kann
eventuell meinst Du es so?
Code:
Private Sub Worksheet_Change(ByVal Target As Range) Dim lngZ As Long 'Suche in der Spalte die erste gefundene Zeile mit dem Begriff lngZ = Application.Match(Target.Value, Target.EntireColumn, 0) If lngZ < Target.Row Then On Error Resume Next Application.EnableEvents = False ' Target.Formula = "=" & Cells(lngZ, Target.Column).Address(0, 0) 'Erzeugt einen Link nach Spalte A zur ersten gefundenen Zeile mit dem Begriff ActiveSheet.Hyperlinks.Add Anchor:=Target, Address:="", SubAddress:= _ "Tabelle1!A" & lngZ, TextToDisplay:=Target.Value Application.EnableEvents = True On Error GoTo 0 End If End Sub
Könnte man auch statt nach Ax in die Target-Spalte verlinken...
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Wenn man unter Optionen - Erweitert - Bearbeitungsoptionen den Haken bei Direkte Zellbearbeitung zulassen enfernt, gelangt man per Doppelklick auch auf die in der Formel stehende direkte Vorgängerzelle.
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 • Fred11
@Fred11 Eventuell habe ich etwas übersehen, aber die Formel scheint bei mir nicht das erwünschte Ergebnis zu bringen :( Habe es mal im Anhang verlinkt. Denke aber mit einem Makro komme ich eher weiter, da ich die von dir gezeigte Formel in etwa als "Doppelte Werte" anzeigen implementiert habe. Oder enthält die Formel eine Verlinkung der doppelten Einträge? Konnte es leider nicht ausprobieren.
@schauan & @Kuwer Ich habe es eben erneut getestet und hatte bereits einen längeren Bericht geschrieben mit Anhängen wieso es denn nicht klappt :) Mir ist dann aufgefallen, dass die Duplikate unterstrichen sind. Es funktioniert genauso wie gewünscht. Danke!!!
Leider referenziert er nur den ersten Eintrag. Wie müsste ich das Makro abändern um immer zu dem Eintrag zu springen der als letztes eingetragen wird? Also wie die Funktion "suchen" mit Strg-F?
LG
PS: Ein super-Forum! Wäre mir in meiner Uni-Zeit sehr gelegen gekommen.
Private Sub Worksheet_Change(ByVal Target As Range) Dim lngZ As Long On Error Resume Next 'Suche in der Spalte die letzte gefundene Zeile mit dem Begriff 'ab Zeile 1 und vor der Eingabezelle lngZ = Application.Match(Target.Value, _ Cells(1, Target.Column).Resize(Target.Row - 1, 1)) If lngZ > 0 And lngZ < Target.Row Then Application.EnableEvents = False 'Erzeugt einen Link nach Spalte A zur letzten gefundenen Zeile mit dem Begriff ActiveSheet.Hyperlinks.Add Anchor:=Target, Address:="", SubAddress:= _ "Tabelle1!A" & lngZ, TextToDisplay:=Target.Value Application.EnableEvents = True End If End Sub
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:1 Nutzer sagt Danke an schauan für diesen Beitrag 28 • Münzenminister