Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Zahl zu Wort nach Word

Begonnen von Harsefeld, April 02, 2015, 09:49:47

⏪ vorheriges - nächstes ⏩

Harsefeld

Hallo,

ich hab ein kleines Problem.

Ich möchte eine Zahl aus Access in ein Wordformular übertragen. Diese Zahl muss aber als Text wiederholt werden .. also 20 = Zwanzig .. 133 = Einhunderdreiunddreißig.

Bislang habe ich das Ganze über einen Bericht ausgegeben, aber ich möchte es umstellen, da der Bericht häufiger auf Änderungenangepasst werden muss und dies in Word leichter geht. Bisher hatte ich hierfür eine Funktion eingerichtet .. diese funktioniert aber nicht bei der Übergabe zu Word.

Function ZahlzuText(Number)
Number = Abs(Fix(Number)) 'Vergesse Nachkommastellen
If Number = 0 Then ZahlzuText = "Null": Exit Function
Dim Chr(12) As String, Block As Integer, z As Integer, hz As Integer, ze As Integer, zz As Integer, EZ As Integer
Dim ztext As String, t As String, Bst1 As String, Wortrest As String, WLänge As Variant

Chr(0) = "": Chr(1) = "ein": Chr(2) = "zwei": Chr(3) = "drei"
Chr(4) = "vier": Chr(5) = "fünf": Chr(6) = "sechs": Chr(7) = "sieben"
Chr(8) = "acht": Chr(9) = "neun": Chr(10) = "zehn": Chr(11) = "elf"
Chr(12) = "zwölf"
For Block = 3 To 1 Step -1 'Millionen,Tausender,Hunderter-Block
    'extrahiere Hunderter-Blöcke in z:
    z = (Number Mod (10 ^ (Block * 3))) \ 10 ^ ((Block - 1) * 3)
    If z > 0 Then 'Blockwert >0
        'bestimme HunderterZiffer in HZ, ZehnerZiffer in ZZ
        'ZehnerundEinerZahl in ZE und die EinerZiffer in EZ:
        hz = z \ 100: ze = z Mod 100: zz = ze \ 10: EZ = z Mod 10
        ztext$ = "" 'der Zahltext für einen Hunderter-Block
        If hz > 0 Then 'Es gibt Hunderter
            ztext$ = Chr(hz) & "hundert"
            If ze > 0 And ze < 10 Then ztext$ = ztext$ & "und" 'z.B 303
        End If
        'die Hunderter sind gesetzt. Setzte nun Zehner und Einer:
        If ze > 0 Then 'Falls es überhaupt Zehner/Einer gibt
            If ze < 13 Then    'Zehner/Einer<13
                If Block = 1 And Number > 999 And z < 10 Then 'Hunderter-Block
                    ztext$ = ztext$ & "und" 'xxx.00v zu "und" v
                End If
                ztext$ = ztext$ & Chr(ze)
            Else   'Zehner/Einer = 13-99
                If EZ > 0 Then    'zunächst die Einer
                    If EZ = 7 And zz = 1 Then
                        ztext$ = ztext$ & "sieb" 'Siebzehn statt siebenzehn
                    Else
                        ztext$ = ztext$ & Chr(EZ)
                    End If
                    If zz > 1 Then ztext$ = ztext$ & "und" 'z.B. drei "und" zwanzig
                End If
                If zz = 1 Then
                    ztext$ = ztext$ + "zehn"
                ElseIf zz = 2 Then
                    ztext$ = ztext$ + "zwanzig"
                ElseIf zz = 3 Then
                    ztext$ = ztext$ + "dreißig"
                ElseIf zz = 6 Then
                    ztext$ = ztext$ + "sechzig"
                ElseIf zz = 7 Then
                    ztext$ = ztext$ + "siebzig"
                Else
                    ztext$ = ztext$ & Chr(zz) & "zig"
                End If
               
            End If
        End If
        t$ = ""
        If Block = 3 Then
            t$ = "Millionen"
            If Right(ztext$, 3) = "ein" Then ztext$ = ztext$ + "e": t$ = "million"
        ElseIf Block = 2 Then
            If Right(ztext$, 3) = "ein" And z <> 1 Then ztext$ = ztext$ + "s"
            t$ = "tausend"
        ElseIf Block = 1 Then
            If Right(ztext$, 3) = "ein" Then ztext$ = ztext$ + "s"
        End If
        ZahlzuText = ZahlzuText & ztext$ & t$
        Bst1 = Left(ZahlzuText, 1)
        Bst1 = UCase(Bst1)
        WLänge = Len(ZahlzuText)
        WLänge = WLänge - 1
        Wortrest = (Right(ZahlzuText, WLänge))
        ZahlzuText = Bst1 + Wortrest
               
    End If
Next
End Function

Harsefeld

Hallo,

Kommando zurück .. ich hab das Problem gefunden.

MaggieMay

Hallo,

was auch immer die Lösung deines wie auch immer gearteten Problems sein mag, CHR() ist eine Access-Funktion und sollte nicht für eigene Deklarationen verwendet werden.
Freundliche Grüße
MaggieMay