Umlaute bei Eingabe ersetzen

In manchen Spread­sheets ist es sin­nvoll, wenn nur inter­na­tionale Zeichen ver­wen­det wer­den. Und die (deutschen) Umlaute gehören nun ein­mal nicht dazu. Es soll die Möglichkeit geschaf­fen wer­den, dass bei Eingabe eines Umlauts oder des „ß” eine automa­tis­che Umwand­lung geschieht. Dieses Vorhaben lässt sich mit ein­er Proze­dur gut real­isieren. 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 Mod­ul des entsprechen­den Arbeits­blatts ein. Automa­tisch wird nun bei jed­er Eingabe in eine Zelle geprüft, ob Umlaute oder das „ß” enthal­ten sind und bei Vorhan­den­sein erset­zt. Soll sich die Erset­zung auf einen definierten Bere­ich beschränken, dann kön­nte der Code so ausse­hen:

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 erset­zen­den Zeichen in jew­eils einem Array ste­hen, lässt sich der Code prob­lem­los auch auf andere Sprachen anwen­den oder um weit­ere Zeichen erweit­ern. In dem Fall (oder auch generell) kann statt der Zeile

For i = 0 To 6

der Code

For i = 0 To UBound(aUmlaute)

ver­wen­det wer­den. VBA berech­net dann die Größe des Arrays und wen­det den kor­rek­ten Wert an.

Hin­weis: Möcht­en Sie bere­its existierende Tabellen umwan­deln? Dann wen­den Sie sich ver­trauensvoll 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.