Umlaute bei Eingabe ersetzen

In manchen Spreadsheets ist es sinnvoll, wenn nur internationale Zeichen verwendet werden. Und die (deutschen) Umlaute gehören nun einmal nicht dazu. Es soll die Möglichkeit geschaffen werden, dass bei Eingabe eines Umlauts oder des “ß” eine automatische Umwandlung geschieht. Dieses Vorhaben lässt sich mit einer Prozedur gut realisieren. Hier nun der Code dafür:

Option Explicit
 
Sub Worksheet_Change(ByVal Target As Range)
   Dim aUmlaute, aUmlErsatz
   Dim i As Integer
 
   aUmlaute = Array("Ä", "ä", "Ö", "ö", "Ü", "ü", "ß")
   aUmlErsatz = Array("Ae", "ae", "Oe", "oe", "Ue", "ue", "ss")
 
   On Error GoTo ErrorHandler
   Application.EnableEvents = False
 
   For i = 0 To 6
     Target.Value = Replace(Target, aUmlaute(i), aUmlErsatz(i))
   Next i
ErrorHandler:
   Application.EnableEvents = True
End Sub

Fügen Sie diese Sub in das Modul des entsprechenden Arbeitsblatts ein. Automatisch wird nun bei jeder Eingabe in eine Zelle geprüft, ob Umlaute oder das “ß” enthalten sind und bei Vorhandensein ersetzt. Soll sich die Ersetzung auf einen definierten Bereich beschränken, dann könnte der Code so aussehen:

Sub Worksheet_Change(ByVal Target As Range)
   Dim aUmlaute, aUmlErsatz
   Dim i As Integer
   Dim rngNoUmlaut As Range
   
   Set rngNoUmlaut = Range("B2:F20")  'Anpassen
   aUmlaute = Array("Ä", "ä", "Ö", "ö", "Ü", "ü", "ß")
   aUmlErsatz = Array("Ae", "ae", "Oe", "oe", "Ue", "ue", "ss")

   On Error GoTo ErrorHandler
   Application.EnableEvents = False
   
   If Not Intersect(Target, rngNoUmlaut) Is Nothing Then
      For i = 0 To UBound(aUmlaute)
         Target.Value = Replace(Target, aUmlaute(i), aUmlErsatz(i))
      Next i
   End If
ErrorHandler:
   Application.EnableEvents = True
End Sub

Da die zu ersetzenden Zeichen in jeweils einem Array stehen, lässt sich der Code problemlos auch auf andere Sprachen anwenden oder um weitere Zeichen erweitern. In dem Fall (oder auch generell) kann statt der Zeile

For i = 0 To 6

der Code

For i = 0 To UBound(aUmlaute)

verwendet werden. VBA berechnet dann die Größe des Arrays und wendet den korrekten Wert an.

Hinweis: Möchten Sie bereits existierende Tabellen umwandeln? Dann wenden Sie sich vertrauensvoll an mich (G.Mumme@PC-Hilfe-Nord.de), ich helfe Ihnen gerne gegen eine kleine Spende.

▲ nach oben …

Dieser Beitrag wurde unter Code-Schnipsel, Coding / Programmieren, Mit VBA/Makro, Text, Tipps und Tricks abgelegt und mit , , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.