Daten direkt bei Eingabe ersetzen

In diesem Beispiel zeigen wir, eine Alternative Methode zur AutoKorrektur-Option um Daten direkt bei der Eingabe ersetzen zu lassen.

Sehr wir uns aber zunächst die integrierte AutoKorrektur-Option und die Damit verbundenen Einschränkungen etwas näher an. Diese Funktion wird über das Menü Datei / Dokumentenprüfung / Schaltfläche: AutoKorrektur-Optionen aufgerufen, siehe Abbildung 1.


Abb. 1

Dort können nun die Begriffe eingetragen werden, die durch einen neuen Begriff ersetzt werden sollen. Wenn Sie diese Ersetzen-Methode verwenden, werden Sie mit folgenden Beschränkungen konfrontiert:

  • Sie müssen die zu ersetzenden Begriffe nacheinander manuell in das Dialogfenster eintragen
  • Die Ersetzungen gelten in der gesamten Arbeitsmappe, auf allen Tabellenblättern
  • Die Ersetzungen gelten in allen geöffneten Excel-Dateien. Eine Beschränkung auf Bereiche oder Tabellenblätter ist nicht möglich

Und genau an dieser Stelle setzt unser Beispiel an. Dort kann genau definiert werden, in welchem Zellbereich die automatischen Ersetzungen gelten sollen. Die zu ersetzenden und neuen Begriffe werden dabei ganz einfach in einem separaten Tabellenblatt gespeichert und können wie gewohnt per Copy und Paste kopiert und ergänzt werden, siehe Abbildung 2.


Abb. 2

In dem Beispiel werden unter Anderem 6-stellige Nummern durch 7-stellige Ziffernfolgen direkt bei der Eingabe ersetzt. Wie die Liste zeigt, können aber nicht nur Zahlen sondern beliebige Zeichenfolgen und Wörter ersetzt werden.

Damit das automatisierte Ersetzen funktioniert, sind ein paar Zeilen VBA-Code notwendig.

Erfassen Sie deshalb den folgenden VBA-Code in dem Codemodul des Tabellenblattes, in dem die Eingaben ersetzt werden sollen.

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("A4:A100")) 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:B100"), 2, 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:

End Sub

Durch die Verwendung des Befehls Intersect wird im vorliegenden Beispiel die Gültigkeit für die automatische Ersetzung auf den Zellbereich A4:A100 beschränkt und kann natürlich beliebig geändert werden. Das bedeutet, dass sobald ein Begriff, der sich auf der Korrekturtabelle in Spalte A befindet, in dem Zellbereich A4:A100 eingetragen wird durch den neuen Begriff aus Spalte B der Korrekturtabelle ersetzt wird.

Damit steht mit dieser Lösung eine der integrierten AutoKorrektur-Option ähnliche Funktion zur Verfügung, die aber individueller an die Anforderungen angepasst werden kann.

Die Beispieldatei können Sie über den folgenden Link herunterladen.