Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1936to1940
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Umlaute umwandeln

Umlaute umwandeln
19.07.2023 12:48:13
Daniela
Guten Tag zusammen, Ich muss in einer Tabelle die Umlaute (Ö in Oe, Ä in Ae usw.) umwandeln. Dazu habe ich ein Makro gefunden, weiß aber nicht wie ich diese Makro per Button aktiviere. Kann mir jemand einen Tipp geben?

Public Function Umlaut(S)
Dim I As Integer, Ch As String * 1, Ch1 As String * 1, _
    IsUpCase As Boolean, Res As String
  If IsNull(S) Then Umlaut = Null: Exit Function
  Res = ""
  For I = 1 To Len(S)
    Ch = Mid(S, I, 1)
    Ch1 = IIf(I  Len(S), Mid(S, I + 1, 1), " ")
    ' Nächstes Zeichen ist kein Kleinbuchstabe:
    IsUpCase = (Asc(Ch1) = Asc(UCase(Ch1)))
    Select Case Asc(Ch)
      Case Asc("Ä"): Res = Res & IIf(IsUpCase, "AE", "Ae")
      Case Asc("Ö"): Res = Res & IIf(IsUpCase, "OE", "Oe")
      Case Asc("Ü"): Res = Res & IIf(IsUpCase, "UE", "Ue")
      Case Asc("ä"): Res = Res & "ae"
      Case Asc("ö"): Res = Res & "oe"
      Case Asc("ü"): Res = Res & "ue"
      Case Asc("ß"): Res = Res & "ss"
      Case Else: Res = Res & Ch
    End Select
  Next I
  Umlaut = Res
End Function

Grüsse Daniela

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Umlaute umwandeln
19.07.2023 12:56:25
Rudi Maintaire
Hallo,
das ist eine Funktion, die du auch in einer Tabelle anwenden kannst.
z.B. B1: = Umlaut(A1)
Du kannst sie aber auch in einem Makro verwenden
Sub aaa()
  MsgBox Umlaut(Range("A1"))
End Sub
Gruß
Rudi

AW: Umlaute umwandeln
19.07.2023 13:06:51
Daniela
Hallo Rudi

Vielen herzlichen Dank für deine schnelle Hilfe. Ich habe dein Sub aaa mal eingebaut. Wenn ich das Aufrufe, zeigt es mir lediglich an dass das Ö, OE sein soll. Es wird jedoch nichts umgewandelt. Mache ich noch was falsch?

Gruß Daniela

Anzeige
AW: Umlaute umwandeln
19.07.2023 13:03:19
Daniel
Hi
dafür ist dieses Makro jetzt auch nicht geeignet, weil es kein eigentliches Makro, sondern eine Funktion ist.
dh mit diesem Code kannst du einen einzelnen Zellwert umwandeln, in dem du in eine andere Zelle die Formel schreibst: =Umlaut(A1), nachdem du diesen Code in ein allgemeines Modul kopiert hast.

Wenn du eine ganze Tabelle umwandeln willst, nimmst du besser die Menüfunktion Start - Bearbeiten - Suchen und Auswählen - Ersetzen und ersetzt dann nacheinander die einzelnen Umlaute, das geht dann mit einem Schritt für die ganze Tabelle.
Beachte ,dass du die Option "Groß/Kleinschreibung beachten" aktiveren musst.
das ganze kannst du gut mit dem Recorder aufzeichnen, so dass du dein Makro hast, dass du einem Button zuweisen kannst.

Gruß Daniel


Anzeige
AW: Umlaute umwandeln
19.07.2023 13:10:46
Daniela
Hallo Daniel, danke dir. Ich möchte natürlich die Umwandlung automatisieren und probiere mal deine Idee mit dem Makro Recorder aus.
Gruß Daniela

AW: Umlaute umwandeln
19.07.2023 13:21:25
GerdL
Hallo Daniela!
Private Sub CommandButton1_Click()
    
    Dim C As Range
    
    For Each C In Range("A1:A200").Cells
        C.Value = Umlaut(C)
    Next

End Sub
Gruß Gerd

AW: Umlaute umwandeln
19.07.2023 13:35:38
Daniela
Hallo Gerd, deine Variante macht genau das was ich mir erhofft hatte.
Ich hatte in der Zwischenzeit den Recorder im Einsatz. Auch das klappt am Schluss, ist aber nicht so benutzerfreundlich wie deine Variante.
Sub Umlaute()
'
' Umlaute Makro
'

'
    Columns("A:A").Select
    Selection.Replace What:="Ö", Replacement:="Oe", LookAt:=xlPart, _
        SearchOrder:=xlByColumns, MatchCase:=True, SearchFormat:=False, _
        ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
        
        Columns("A:A").Select
    Selection.Replace What:="Ä", Replacement:="Ae", LookAt:=xlPart, _
        SearchOrder:=xlByColumns, MatchCase:=True, SearchFormat:=False, _
        ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
        
        Columns("A:A").Select
    Selection.Replace What:="ä", Replacement:="ae", LookAt:=xlPart, _
        SearchOrder:=xlByColumns, MatchCase:=True, SearchFormat:=False, _
        ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
        
        Columns("A:A").Select
    Selection.Replace What:="ö", Replacement:="oe", LookAt:=xlPart, _
        SearchOrder:=xlByColumns, MatchCase:=True, SearchFormat:=False, _
        ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
End Sub
Von daher, lieber auf deine Variante umsteigen. Vielen herzlichen Dank an alle.
lg Daniela

Anzeige
AW: Umlaute umwandeln
19.07.2023 15:55:51
snb
Sub M_snb()
   sn = Array(252, 228, 235, 246, 117, 97, 105, 111)

   For j = 0 To 3
     Sheet1.Cells.Replace Chr(sn(j)), Chr(sn(j + 4)) & "e"
   Next
End Sub

Nachfrage
19.07.2023 17:56:20
KlausFz
Hallo snb,

interessante Lösung mittels Array, bringt aber in Zeile Sheet1.... die Fehlermeldung "Laufzeitfehler 424: Objekt erforderlich"
Ich komme da mit meinen Anfängerkenntnissen in VBA nicht weiter.
Imho behandeln die Charaktercodes doch nur Kleinbuchstaben, oder?

Gruß!
Klaus

AW: Nachfrage
19.07.2023 18:09:32
GerdL
Hallo Klaus,
in einem deutschen Excel ist der Codename des ersten Blattes standardmäßig statt Sheet1
Tabelle1
Gruß Gerd

Anzeige
Danke!
19.07.2023 18:27:50
KlausFz
Hallo Gerd,

da hätte sogar ich drauf kommen können.
Aber mal wieder so ein Fall, wo man immer wieder drüberwegliest und es nicht "Klick" macht.
Danke für Dein Augenöffnen!

Gruß!
Klaus

AW: Umlaute umwandeln
19.07.2023 19:21:26
volti
Und noch 'ne Variante

Sub Ersetzen()
  For i = 1 To 6
    Tabelle1.Cells.Replace Mid$("ÄÖÜäöü", i, 1), Mid$("AOUaou", i, 1) & "e"
  Next i
End Sub
Gruß KH

Noch ne Nachfrage
20.07.2023 00:48:04
KlausFz
Hallo Volti,

Dein Code setzt die Umlaute richtig um, aber liefert bei mir (Excel 2021) immer nur die Großschreibung.
Aus "ändern" wird immer "Aendern".
Ne Idee?

Gruß!
Klaus

Anzeige
AW: Noch ne Nachfrage
20.07.2023 01:02:23
Daniel
Du musst für das Ersetzen/Replace dir richtige Parametereinstellung angeben.
Schau dir den Code an, den Daniela aufgezeichnet hat, da stehen alle Parameter drin.
Man muss nicht alle angeben, aber die wichtigen sollte man nicht weglassen.

Gruß Daniel

AW: Noch ne Nachfrage
20.07.2023 07:45:01
Sigi.21
Hallo Klaus,

mit meiner VBA-Fkt. werden die dt. Umlaute unter Berücksichtigung der Groß- u. Kleinschreibung umgesetzt. (s. Mappe)

Gruß Sigi
https://www.herber.de/bbs/user/159990.xlsm

Danke!!
20.07.2023 08:55:04
KlausFz
Hallo Daniel, Hallo Sigi,

besten Dank Euch beiden für die Hilfe!!!
@Daniel:
Ich komme erst heute Nachmittag dazu, mir die Parameter von Replace (bei Daniela) genauer anzuschauen. Aber ich denke, das pack' ich.
@Sigi:
Ich brauche das als Sub, um im eMailversand via Outlook die Umlaute zu eleminieren. Ich denke, das pack ich auch.
Und 2. Dank: das "ß" hatte ich bisher glatt vergessen.

Schönen Tag Euch beiden!
Klaus

Anzeige
AW: Noch ne Nachfrage
20.07.2023 08:55:55
volti
Hallo Klaus,

hate ich vergessen....

Hier eine ergänzte Version und noch eine abweichende Version, bei der jeder Buchstabe komplett einzeln behandelt werden könnte (also nicht nur "e" angehängt wird) und so auch das ß ersetzt werden kann.

Code:


Sub Ersetzen1() For i = 1 To 6 Tabelle13.Cells.Replace What:=Mid$("ÄÖÜäöü", i, 1), _ Replacement:=Mid$("AOUaou", i, 1) & "e", _ LookAt:=xlPart, MatchCase:=True Next i End Sub Sub Ersetzen2() For i = 1 To 7 Tabelle13.Cells.Replace What:=Mid$("ÄÖÜäöüß", i, 1), _ Replacement:=Mid$("AeOeUeaeoeuess", (i * 2) - 1, 2), _ LookAt:=xlPart, MatchCase:=True Next i End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz


Anzeige
AW: Noch ne Nachfrage
20.07.2023 13:08:05
Daniel
Hi
ich würde das so machen:

dim Ersetzen
dim i as long

Ersetzen = Array("Ä", "Ae", "Ü", "Ue", "Ö", "Oe", "ß", "ss") 'also alle zu ersetzenden Texte auflisten, immer abwechselnd der neue und er alte Wert
For i = 0 to Ubound(Ersetzen) Step 2
    Cells.Replace Ersetzen(i), Ersetzen(i + 1), lookat:=xlpart, MatchCase:=True
    Cells.Replace LCase(Ersetzen(i)), LCase(Ersetzen(i + 1)), lookat:=xlpart, MatchCase:=True
Next
bei der Methode kann man auch unterschiedlich lange Zeichenfolgen austauschen.
dadurch dass man immer abwechselnd alt und neu hinschreibt, hat man eine bessere Übersicht und muss nicht durch abzählen rausfinden, was zusammengehört.
das auflisten der Kleingeschriebenen Zeichenfolgen kann man sich mit hilfe der zweiten Replace-Zeile ersparen.

Gruß Daniel

Anzeige
Letztes Danke!!!
20.07.2023 16:24:59
KlausFz
Hallo Daniel, Hallo Karl-Heinz,

zu den beiden Parametern lookat und MatchCase habe ich mich bei Danielas Code nun auch durchgekämpft.
MS-Hilfe war mal (wieder) wenig hilfreich, eher schon andere VBA-Seiten und natürlich hier - HWH.
Aber Eure beiden Codes sind für mich "VBA-Recordler" natürlich eine Augenweide.
Wieder was dazugelernt!
Riesiges Dankeschön Euch beiden!!!

Gruß!
Klaus

Recorder = Große Hilfe
20.07.2023 17:26:35
Daniel
gerade bei solchen Funktionen, die viele Parameter haben, ist der Recorder eine große Hilfe, weil man sich für die verschiedenen Einstellungen nicht durch die Hilfe quälen muss, sondern einfach von Hand im Assistenten die einzeln Parameter setzen kann und sich dann in Ruhe anschauen kann, wie sich das auf den Code auswirkt.
wenn man das passende hat, dann kopiert man sich den Teil der Aufzeichnung in seinen regulären Code.
Gruß Daniel

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige