Umlaute bei Eingabe ersetzen

In man­chen Spread­sheets ist es sin­nvoll, wenn nur inter­na­tionale Zei­chen ver­wen­det wer­den. Und die (deut­schen) Um­lau­te ge­hö­ren nun ein­mal nicht dazu. Es soll die Mög­lich­keit geschaf­fen wer­den, dass bei Ein­ga­be ei­nes Um­lauts oder des „ß” eine automa­tis­che Umwand­lung ge­schieht. Die­ses Vor­ha­ben lässt sich mit ein­er Proze­dur gut real­isieren. Hier nun der Code da­fü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 die­se Sub in das Mod­ul des entsprechen­den Arbeits­blatts ein. Automa­tisch wird nun bei jed­er Ein­ga­be in eine Zel­le ge­prüft, ob Um­lau­te oder das „ß” enthal­ten sind und bei Vorhan­den­sein erset­zt. Soll sich die Erset­zung auf ei­nen de­fi­nier­ten Bere­ich be­schrän­ken, 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 Zei­chen in jew­eils ei­nem Ar­ray ste­hen, lässt sich der Code prob­lem­los auch auf an­de­re Spra­chen anwen­den oder um weit­ere Zei­chen erweit­ern. In dem Fall (oder auch ge­ne­rell) kann statt der Zei­le

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 Ar­rays und wen­det den kor­rek­ten Wert an.

Hin­weis: Möcht­en Sie bere­its exis­tie­ren­de Ta­bel­len umwan­deln? Dann wen­den Sie sich ver­trauensvoll an mich (G.​Mumme@​PC-​Hilfe-​Nord.​de), ich hel­fe Ih­nen ger­ne ge­gen eine klei­ne Spen­de.

▲ 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.