Zugegeben, das hört sich etwas kryptisch an, was da in der Überschrift steht. Aber dort sind nun einmal kurze, knackige Texte gefragt. Gemeint ist folgendes: Eine Zelle enthält einen beliebigen Text, genauer gesagt ein Wort. In diesem Wort soll an beliebiger, zufällig bestimmter Position ein Zeichen durch ein wiederum zufällig gewähltes anderes Zeichen ersetzt werden. Die Groß- Kleinschreibung soll erhalten bleiben und es sollen alle Buchstaben des deutschen Alphabets genutzt werden.
Wir bieten Ihnen hier eine kleine VBA-Lösung an, die das gut löst. Voraussetzung ist, dass wirklich nur das eine Wort ohne Satzzeichen in der Zelle steht. Ein Doppelklick auf die Zelle wird sofort ein beliebiges/zufälliges Zeichen ändern:
Option Explicit Option Base 1 Sub WorkSheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim Lg As Integer, Pos As Integer, Zeichen As String, Ersatz As String Dim aUcase(29), aLcase(30) Dim i As Integer If VarType(Target) > 8 Then 'Eventuell eine Fehlermeldung, dass es kein Text ist ... Cancel = True Exit Sub End If 'Arrays mit Buchstaben füllen For i = 65 To 90 aUcase(i - 64) = Chr(i) Next i aUcase(27) = "Ä" aUcase(28) = "Ö" aUcase(29) = "Ü" For i = 97 To 122 aLcase(i - 96) = Chr(i) Next i aLcase(27) = "ä" aLcase(28) = "ö" aLcase(29) = "ü" aLcase(30) = "ß" 'Und ersetzen Lg = Len(Target) Pos = WorksheetFunction.RandBetween(1, Lg) Zeichen = Mid(Target, Pos, 1) If Zeichen = UCase(Zeichen) Then 'Großbuchstaben ersetzen Do While True Ersatz = aUcase(WorksheetFunction.RandBetween(1, 29)) If Ersatz > Zeichen Then Exit Do Loop Else 'Kleinbuchstaben Do While True Ersatz = aLcase(WorksheetFunction.RandBetween(1, 30)) If Ersatz > Zeichen Then Exit Do Loop End If Target = Left(Target, Pos - 1) & Ersatz & Right(Target, Lg - Pos) Cancel = True End Sub
Hinweis: Führende oder nachgestellte Leerzeichen werden hier nicht abgefangen, sie werden als ganz normale Zeichen gewertet und bei entsprechender Position mit einem Zeichen des Alphabets ersetzt.
Mit etwas Programmier-Erfahrung können Sie den Code auch so umändern, dass das Ersetzen in allen Zellen eines definierten Bereichs bzw. einer Markierung erfolgt.
[NachObenLetzte Verweis=„ZufallsZeichen in Wort ersetzen”]