Es soll bei Eingabe eines Werts in einem bestimmten Zellbereich innerhalb des aktiven Tabellenblatts der eingegebene Wert durch einen anderen Wert, welcher in Spalte B in einer anderen Tabelle steht, ersetzt werden. In dem Tabellenblatt wo die zu ersetzende Werte stehen, steht logischerweise in Spalte A des Eingabewerts.
Dazu habe ich auch eine gute Lösung gefunden, welche wie folgt aussieht...
Private Sub Worksheet_Change(ByVal Target As Range)
'** Dimensionierung der Variablen
Dim varWert As Variant
'** Vorgaben definieren
Set wsEin = ThisWorkbook.Sheets("Eingabe")
Set wsDat = ThisWorkbook.Sheets("Daten")
'** Zellbereich festlegen, in dem die Daten ersetzt werden sollen.
'** Im vorliegenden Beispiel soll dies im Bereich A4 bis A100 der Fall sein
If Not Application.Intersect(Target, Range("G5:AB22")) Is Nothing Then
On Error GoTo ende
'** Auslesen des erfassten Wertes und suchen des neuen Wertes in der Ersetzungs-Tabelle
varWert = WorksheetFunction.VLookup(Target.Value, wsDat.Range("A4:C100"), 3, False)
'** Eintragen der neuen Daten und ersetzen der Eingabe
Application.EnableEvents = False
Target.Value = varWert
Application.EnableEvents = True
End If
Exit Sub
'** Errorhandling mit Ausgabe eines Hinweises, wenn kein Treffer in der Liste gefunden wurde
ende:
If Target "" Then
MsgBox "In der Datenliste wurde kein Treffer gefunden!", vbCritical, "Hinweis"
End If
End Sub
diese Lösung funktioniert soweit ganz gut, bis auf die Problematik dass ich in Spalte B des Tabellenblatts ("Daten") eigentlich nicht nur einen Zellinhalt sondern einen Hyperlink stehen habe, welcher in Tabellenblatt ("Eingabe")auch als Link wiedergegeben werden soll. Das funktioniert derzeit leider noch nicht, egal ob ich den Pfad alleine oder direkt als verlinkten Zellwert ausgeben lasse. Der Link geht leider unterwegs verloren und es erscheint nur der reine Zellwert.
Vielen Dank, Gruß