Zahlen in Buchstaben automatisch umwandeln!
Hallo zusammen,
ich brauche für eine Datei (Zahlungsformular in Excel) in einer Zeile z.B. A1 die Zahlen und in z.B. B1 die Zahlen als Wörter / Buchstaben.
z.B.
A1 = 12345
in B1 soll dann folgendes erscheinen: EINS--ZWEI--DREI--VIER--FÜNF
In der Zeile A1 werden sowieso die Zahlen abgetippt! Damit sollen automatisch in Zeile B1 automatisch die Zahlenwörter automatisch erscheinen.
Ich habe bereits ein Makro, aber die Bedienung ist, dass die Zahl/Zahlen noch mal in der Zelle B1 abgetippt werden und dann das Macro starten und die Zeile (Ziel) im InputBox eingeben.
Anbei der Macro-Code:
Kann mir jemand helfen, diese Eingabe zu automatisieren?
Vielen Dank im Voraus
ich brauche für eine Datei (Zahlungsformular in Excel) in einer Zeile z.B. A1 die Zahlen und in z.B. B1 die Zahlen als Wörter / Buchstaben.
z.B.
A1 = 12345
in B1 soll dann folgendes erscheinen: EINS--ZWEI--DREI--VIER--FÜNF
In der Zeile A1 werden sowieso die Zahlen abgetippt! Damit sollen automatisch in Zeile B1 automatisch die Zahlenwörter automatisch erscheinen.
Ich habe bereits ein Makro, aber die Bedienung ist, dass die Zahl/Zahlen noch mal in der Zelle B1 abgetippt werden und dann das Macro starten und die Zeile (Ziel) im InputBox eingeben.
Anbei der Macro-Code:
Sub umwandeln_Zahlen_in_Wörter()
Dim sZiel As String
sZiel = InputBox("Geben Sie die Adresse der " & vbCr & _
"Zelle mit dem umzuwandelnden " & vbCr & _
"Text ein:", "Bitte Zelladresse angeben!")
For Each zelle In ThisWorkbook.ActiveSheet.Range(sZiel)
On Error Resume Next
With zelle
.Replace What:="1", Replacement:="EINS--"
.Replace What:="2", Replacement:="ZWEI--"
.Replace What:="3", Replacement:="DREI--"
.Replace What:="4", Replacement:="VIER--"
.Replace What:="5", Replacement:="FÜNF--"
.Replace What:="6", Replacement:="SECHS--"
.Replace What:="7", Replacement:="SIEBEN--"
.Replace What:="8", Replacement:="ACHT--"
.Replace What:="9", Replacement:="NEUN--"
.Replace What:="0", Replacement:="NULL--"
.Replace What:=".", Replacement:=", "
End With
If Right(zelle, 2) = "--" Then
zelle.Value = Application.WorksheetFunction.Replace(zelle, Len(zelle), 1, "")
zelle.Value = Application.WorksheetFunction.Replace(zelle, Len(zelle), 1, "")
End If
zelle.Value = Application.WorksheetFunction.Replace(zelle, InStr(2, zelle, ", ") - 2, 2, "")
Next zelle
sZiel = ""
End Sub
Kann mir jemand helfen, diese Eingabe zu automatisieren?
Vielen Dank im Voraus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 230263
Url: https://administrator.de/contentid/230263
Ausgedruckt am: 22.11.2024 um 21:11 Uhr
8 Kommentare
Neuester Kommentar
Hallo winget,
füge das mal in den Code des entsprechenden Sheets ein:
Im Beispiel wird bei jeder Änderung der Zellen "A1:A10" der entsprechende Wert automatisch in die Zelle daneben geschrieben, sobald man die Bearbeitung der Zelle abschließt.
Siehe auch das Demo-Sheet
Grüße Uwe
füge das mal in den Code des entsprechenden Sheets ein:
Im Beispiel wird bei jeder Änderung der Zellen "A1:A10" der entsprechende Wert automatisch in die Zelle daneben geschrieben, sobald man die Bearbeitung der Zelle abschließt.
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
'Range bei dem eine Änderung etwas bewirken soll
Set changeRange = Range("A1:A10")
If Not Application.Intersect(changeRange, Target) Is Nothing Then
If Target.Value <> "" Then
Set rngTarget = Target.Offset(0, 1)
strText = Replace(Target.Value, "1", "EINS--", 1, -1, vbTextCompare)
strText = Replace(strText, "2", "ZWEI--", 1, -1, vbTextCompare)
strText = Replace(strText, "3", "DREI--", 1, -1, vbTextCompare)
strText = Replace(strText, "4", "VIER--", 1, -1, vbTextCompare)
strText = Replace(strText, "5", "FÜNF--", 1, -1, vbTextCompare)
strText = Replace(strText, "6", "SECHS--", 1, -1, vbTextCompare)
strText = Replace(strText, "7", "SIEBEN--", 1, -1, vbTextCompare)
strText = Replace(strText, "8", "ACHT--", 1, -1, vbTextCompare)
strText = Replace(strText, "9", "NEUN--", 1, -1, vbTextCompare)
strText = Replace(strText, "0", "NULL--", 1, -1, vbTextCompare)
strText = Replace(strText, ".", ", ", 1, -1, vbTextCompare)
If Right(strText, 2) = "--" Then
strText = Left(strText, Len(strText) - 2)
End If
strText = Replace(strText, "--,", ",", 1, -1, vbTextCompare)
rngTarget.Value = strText
End If
End If
End Sub
Grüße Uwe
Das ist auch kein Problem,
dazu machst du aus der Prozedur eine Public Function und fügst sie in ein Modul ein:
dann fügst du folgenden Code in jedes Sheet ein welches diese Funktion haben soll:
Demo Sheet von oben ist darauf hin aktualisiert, falls das nicht klar war.
Grüße Uwe
dazu machst du aus der Prozedur eine Public Function und fügst sie in ein Modul ein:
Public Function zahlToText(zahl)
strText = Replace(zahl, "1", "EINS--", 1, -1, vbTextCompare)
strText = Replace(strText, "2", "ZWEI--", 1, -1, vbTextCompare)
strText = Replace(strText, "3", "DREI--", 1, -1, vbTextCompare)
strText = Replace(strText, "4", "VIER--", 1, -1, vbTextCompare)
strText = Replace(strText, "5", "FÜNF--", 1, -1, vbTextCompare)
strText = Replace(strText, "6", "SECHS--", 1, -1, vbTextCompare)
strText = Replace(strText, "7", "SIEBEN--", 1, -1, vbTextCompare)
strText = Replace(strText, "8", "ACHT--", 1, -1, vbTextCompare)
strText = Replace(strText, "9", "NEUN--", 1, -1, vbTextCompare)
strText = Replace(strText, "0", "NULL--", 1, -1, vbTextCompare)
strText = Replace(strText, ".", ", ", 1, -1, vbTextCompare)
If Right(strText, 2) = "--" Then
strText = Left(strText, Len(strText) - 2)
End If
strText = Replace(strText, "--,", ",", 1, -1, vbTextCompare)
zahlToText = strText
End Function
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Set changeRange = Range("A1:A10")
If Not Application.Intersect(changeRange, Target) Is Nothing Then
If Target.Value <> "" Then
Target.Offset(0, 1).Value = zahlToText(Target.Value)
Else
Target.Offset(0, 1).Value = ""
End If
End If
End Sub
Grüße Uwe
Ach so, auch kein Thema, schau einfach ins obige Demo-Sheet, hab's da angepasst ...
alles klar,
Zeile 3 in der Function ist noch doppelt, die kannst du noch löschen.
Wenns das dann war, den Beitrag bitte noch auf gelöst setzen, und die Lösungskommentare markieren. Merci.
Grüße Uwe
Zeile 3 in der Function ist noch doppelt, die kannst du noch löschen.
Wenns das dann war, den Beitrag bitte noch auf gelöst setzen, und die Lösungskommentare markieren. Merci.
Grüße Uwe