Ich möchte Buchstaben in Namen umwandeln. Aus „r“ soll „Rudi“, aus „c“ „Christian“ usw. werden. Insgesamt geht es um 6 Namen die ersetzt werden sollen.
Select - Case kannte ich schon, aber das ist vom Zeilenverbrauch auch nicht besser als mein If - Then.
Durch meinen Hinterkopf wabert die ganze Zeit eine andere Variante, aber ich komm nicht drauf.
Warum lässt du uns hier erst mit Zahlen jonglieren? Sag doch gleich, dass es um Strings geht. Wie wär’s mit sowas?
Option Explicit
Option Base 1
Sub namen()
MsgBox ganzerName("r")
MsgBox ganzerName("c")
End Sub
Function ganzerName(initiale As String) As String
Dim namen As Variant
namen = Array("Anna", "Bert", "Cordula", "Dieter", "Elke", "Fritz", "Gerda", "Helmut", "Inge", "Johann", "Käthe", "Lutz", "Manuela", "Norbert", \_
"Olga", "Paul", "Quina", "Richard", "Siglinde", "Thomas", "Ute", "Viktor", "Walburga", "Xeno", "Ypsilanta", "Zacharias")
ganzerName = namen(Asc(initiale) - 96)
End Function
Excel? ohne VBA
Hallo Martin,
falls Du in Excel arbeitest, gibt es noch zwei Möglichkeiten ohne VBA:
1.) Suchen und Ersetzen
2.) „AutoVervollständigen“ in den Optionen aktivieren( wenn die Ergänzung während der Eingabe erfolgen soll )
Freundliche Grüße
Thomas
Durch meinen Hinterkopf wabert die ganze Zeit eine andere
Variante, aber ich komm nicht drauf.
Eine Variante, bei der nur die Vorbereitung lang aussieht, die eigentliche Auswahl dann aber sehr kurz:
Dim Vornamen(5) As String
Dim Auswahl As String
Dim Pos As Integer
Dim Zeichen As String
Vornamen(0) = "Paul"
Vornamen(1) = "Berta"
Vornamen(2) = "Christian"
Vornamen(3) = "Susi"
Vornamen(4) = "Viktor"
Vornamen(5) = "Lara"
Auswahl = "pbcsvl"
Zeichen = "C"
Pos = InStr(Auswahl, LCase(Zeichen)) - 1
If Pos \>= 0 Then
Me.Caption = Vornamen(Pos)
Else
Me.Caption = "Unbekannt"
End If
Hast Du an so etwas gedacht?
Es gibt oft sehr viele Möglichkeiten, die gleichwertig sind.
Tatsächlich haben manche der Namenskürzel sogar eine Länge von 2 Zeichen - was die Sache weiter verkompliziert. Letzten Endes habe ich mich von Andreas’ und Chewpapas Idee inspirieren lassen. Ich habe jetzt verwendet:
i = InStr(strKürzel, Left(strEingabe & " ", 2))
i = Namen((i + 1) / 2 - 1)
Namen ist das Array mit den Namen, wobei auf Pos. 0 ein Leerstring steht. Das ist nötig weil INSTR im Falle keines Treffers als Resultat 0 liefert.
In strKürzel stehen die Namenskürzel auf eine Einzellänge von 2 Zeichen erweitert (" mwr c d mgg ").