Zahl in String _ Ascii

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 37 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Zahl in String _ Ascii

    Hallo und einen schönen Abend an alle,

    Folgendermaßen - Ich habe in einer Textbox das Ergebnis aus 2 Textboxen rechnen lassen. Das Ergebnis ist z.B.: 1.200. Gern möchte ich, das beim Click Ereignis die 1.200 als Buchstaben dargestellt werden - eintausendzweihundert. Folgender Code ist mir in die Hände gefallen:

    VB.NET-Quellcode

    1. If IsNumeric(txt_gesamt.Text) Then
    2. For Each Buchstabe As Char In txt_gesamt.Text
    3. txt_euroworte.AppendText(Chr(Integer.Parse(Buchstabe) + 64))
    4. Next
    5. Else
    6. For Each Buchstabe As Char In txt_gesamt.Text
    7. txt_euroworte.AppendText((Asc(Buchstabe.ToString.ToUpper) - 64).ToString)
    8. Next
    9. End If


    (Geklauter Code)

    Dieses wirft mir logischerweise die Buchstaben bei 1 = A, bei 2 = B, bei 3 = C, u.s.w raus.

    Wie bekomme ich es hin, das z.B. in der ausgerechneten Box in Ziffern 100 steht, nach Click auf btn_berechnen in einer anderen Textbox (txt_euroworte) einhundert steht. Quasi automatisch nach dem Click Ereignis die Zahl als kleine Buchstaben in das andere Textfeld (txt_euroworte) schreibt.
    Da ich nun gegoogelt habe und nichts gefunden habe, muss ich doch hier nachfragen und euch belästigen.
    Hier noch der Code für das Rechnen:

    VB.NET-Quellcode

    1. Dim Zahl1 As Double
    2. Dim Zahl2 As Double
    3. Dim Ergebnis As Double
    4. Double.TryParse(txt_netto.Text, Zahl1)
    5. Double.TryParse(txt_summe.Text, Zahl2)
    6. Ergebnis = Zahl1 + Zahl2
    7. txt_gesamt.Text = Ergebnis.ToString()


    Ich hoffe, ich wurde verstanden ;)

    Grüße aus - momentan Wentorf - an alle...

    Viddi
    Guten Morgen an alle...
    @Hilfe0987 vielen Dank für den Tip, nur wo schreibe ich innerhalb des Codes, das bei dem Click Ereignis btn_rechnen sich sich aus dem nachstehenden Code ergebenen Buchstaben automatisch in die Textbox txt_euroworte schreibt.

    Hier der Code von Dir:

    VB.NET-Quellcode

    1. Private Sub btn_rechnen_Click(sender As Object, e As EventArgs) Handles btn_rechnen.Click
    2. Dim Zahl1 As Double
    3. Dim Zahl2 As Double
    4. Dim Ergebnis As Double
    5. Double.TryParse(txt_netto.Text, Zahl1)
    6. Double.TryParse(txt_summe.Text, Zahl2)
    7. Ergebnis = Zahl1 + Zahl2
    8. txt_gesamt.Text = Ergebnis.ToString()
    9. End Sub
    10. Function CurStr(ByVal inputValue As Double, _
    11. Optional ByVal round As Integer = 0, _
    12. Optional ByVal nulls As Boolean = False _
    13. ) As String
    14. 'Gibt #InputValue in Worten aus, wobei auf #Round gerundet wird
    15. 'Standardeinstellung #Round = 0 (ohne Nachkommastellen)
    16. 'z.B. #Round = 3 (nur Tausender), oder -2 (zwei Nachkommastellen)
    17. 'Standardeinstellung #Nulls = False (0 wird nicht ausgeschrieben)
    18. Dim Dec As String
    19. Select Case round
    20. Case Is > 0
    21. Dec = "..."
    22. inputValue = CLng(CLng(inputValue) \ CLng(10 ^ round)) * (10 ^ round)
    23. Case -1
    24. Dec = " komma " & CurStr((CLng((inputValue - Int(inputValue)) * 100) \ 10) * 10, , True)
    25. inputValue = CLng(Int(inputValue))
    26. Case Is < -1
    27. Select Case (inputValue - Int(inputValue)) * 100
    28. Case Is = 0
    29. Dec = " komma null" 'oder Leerstring wenn nicht geschrieben werden soll
    30. Case 1 To 9
    31. Dec = " komma null" & CurStr(((inputValue * 10 - Int(inputValue * 10)) * 10), , True)
    32. Case Else
    33. Dec = " komma " & CurStr(((inputValue - Int(inputValue)) * 100), , True)
    34. End Select
    35. inputValue = CLng(Int(inputValue))
    36. Case Else
    37. Dec = ""
    38. inputValue = CLng(Int(inputValue))
    39. End Select
    40. Select Case inputValue
    41. Case Is >= 1000000000 : CurStr = "#FEHLER"
    42. Case 0 : CurStr = If(nulls, "null", "").ToString 'wenn Parameter Nulls wahr ist
    43. Case 1 : CurStr = "ein"
    44. Case 2 : CurStr = "zwei"
    45. Case 3 : CurStr = "drei"
    46. Case 4 : CurStr = "vier"
    47. Case 5 : CurStr = "fünf"
    48. Case 6 : CurStr = "sechs"
    49. Case 7 : CurStr = "sieben"
    50. Case 8 : CurStr = "acht"
    51. Case 9 : CurStr = "neun"
    52. Case 10 : CurStr = "zehn"
    53. Case 20 : CurStr = "zwanzig"
    54. Case 30 : CurStr = "dreißig"
    55. Case 40 : CurStr = "vierzig"
    56. Case 50 : CurStr = "fünfzig"
    57. Case 60 : CurStr = "sechzig"
    58. Case 70 : CurStr = "siebzig"
    59. Case 80 : CurStr = "achzig"
    60. Case 90 : CurStr = "neunzig"
    61. Case 11 : CurStr = "elf"
    62. Case 12 : CurStr = "zwölf"
    63. Case 13 To 19 : CurStr = CurStr(inputValue - 10) & "zehn"
    64. Case 100 To 999 : CurStr = CurStr(CLng(inputValue) \ 100) & "hundert" & _
    65. CurStr(inputValue - ((CLng(inputValue) \ 100) * 100))
    66. Case 1000 To 999999 : CurStr = CurStr(CLng(inputValue) \ 1000) & "tausend " & _
    67. CurStr(inputValue - ((CLng(inputValue) \ 1000) * 1000))
    68. Case 1000000 To 999999999 : CurStr = CurStr(CLng(inputValue) \ 1000000) & "million" & _
    69. IIf(CLng(inputValue) \ 1000000 = 1, " ", "en ").ToString() & _
    70. CurStr(inputValue - ((CLng(inputValue) \ 1000000) * 1000000))
    71. Case Else : CurStr = CurStr(inputValue - ((CLng(inputValue) \ 10) * 10)) & "und" & _
    72. CurStr(((CLng(inputValue) \ 10) * 10))
    73. End Select
    74. CurStr = LTrim(Trim(CurStr) & Dec)
    75. End Function
    76. 'Beispielaufrufe und Ergebnisse:
    77. 'Debug.Print (CurStr(55.78,-1))
    78. '=> fünfundfünfzig komma siebzig
    79. 'Debug.Print (CurStr(55.78,0))
    80. '=> fünfundfünfzig
    81. 'Debug.Print (CurStr(55.78,-2))
    82. '=> fünfundfünfzig komma achtundsiebzig
    83. 'Debug.Print (CurStr(55.78,1))
    84. '=> fünfzig...


    Anbei noch ein Bildchen, vieleicht liegt hier auch irgendwo der Fehler:



    P.S.: Nicht das ihr denkt ich lerne nicht, ich bin gerade bei dem "Schinken" Visual Basic 2010 von Löffelmann...

    Grüße

    Friehdelm

    Viddi schrieb:

    helfen
    So was:

    VB.NET-Quellcode

    1. TextBox4.Text = CurStr(Ergebnis)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @ Rod, habe deinen Code eingefügt, klappt leider nicht, ich drehe noch durch :evil:

    Hier mein Versuch, was mache ich bloß falsch ??????

    VB.NET-Quellcode

    1. Function CurStr(ByVal inputValue As Double, _
    2. Optional ByVal round As Integer = 0, _
    3. Optional ByVal nulls As Boolean = False _
    4. ) As String
    5. 'Gibt #InputValue in Worten aus, wobei auf #Round gerundet wird
    6. 'Standardeinstellung #Round = 0 (ohne Nachkommastellen)
    7. 'z.B. #Round = 3 (nur Tausender), oder -2 (zwei Nachkommastellen)
    8. 'Standardeinstellung #Nulls = False (0 wird nicht ausgeschrieben)
    9. Dim Dec As String
    10. Select Case round
    11. Case Is > 0
    12. Dec = "..."
    13. inputValue = CLng(CLng(inputValue) \ CLng(10 ^ round)) * (10 ^ round)
    14. Case -1
    15. Dec = " komma " & CurStr((CLng((inputValue - Int(inputValue)) * 100) \ 10) * 10, , True)
    16. inputValue = CLng(Int(inputValue))
    17. Case Is < -1
    18. Select Case (inputValue - Int(inputValue)) * 100
    19. Case Is = 0
    20. Dec = " komma null" 'oder Leerstring wenn nicht geschrieben werden soll
    21. Case 1 To 9
    22. Dec = " komma null" & CurStr(((inputValue * 10 - Int(inputValue * 10)) * 10), , True)
    23. Case Else
    24. Dec = " komma " & CurStr(((inputValue - Int(inputValue)) * 100), , True)
    25. End Select
    26. inputValue = CLng(Int(inputValue))
    27. Case Else
    28. Dec = ""
    29. inputValue = CLng(Int(inputValue))
    30. End Select
    31. Select Case inputValue
    32. Case Is >= 1000000000 : CurStr = "#FEHLER"
    33. Case 0 : CurStr = If(nulls, "null", "").ToString 'wenn Parameter Nulls wahr ist
    34. Case 1 : CurStr = "ein"
    35. Case 2 : CurStr = "zwei"
    36. Case 3 : CurStr = "drei"
    37. Case 4 : CurStr = "vier"
    38. Case 5 : CurStr = "fünf"
    39. Case 6 : CurStr = "sechs"
    40. Case 7 : CurStr = "sieben"
    41. Case 8 : CurStr = "acht"
    42. Case 9 : CurStr = "neun"
    43. Case 10 : CurStr = "zehn"
    44. Case 20 : CurStr = "zwanzig"
    45. Case 30 : CurStr = "dreißig"
    46. Case 40 : CurStr = "vierzig"
    47. Case 50 : CurStr = "fünfzig"
    48. Case 60 : CurStr = "sechzig"
    49. Case 70 : CurStr = "siebzig"
    50. Case 80 : CurStr = "achzig"
    51. Case 90 : CurStr = "neunzig"
    52. Case 11 : CurStr = "elf"
    53. Case 12 : CurStr = "zwölf"
    54. Case 13 To 19 : CurStr = CurStr(inputValue - 10) & "zehn"
    55. Case 100 To 999 : CurStr = CurStr(CLng(inputValue) \ 100) & "hundert" & _
    56. CurStr(inputValue - ((CLng(inputValue) \ 100) * 100))
    57. Case 1000 To 999999 : CurStr = CurStr(CLng(inputValue) \ 1000) & "tausend " & _
    58. CurStr(inputValue - ((CLng(inputValue) \ 1000) * 1000))
    59. Case 1000000 To 999999999 : CurStr = CurStr(CLng(inputValue) \ 1000000) & "million" & _
    60. IIf(CLng(inputValue) \ 1000000 = 1, " ", "en ").ToString() & _
    61. CurStr(inputValue - ((CLng(inputValue) \ 1000000) * 1000000))
    62. Case Else : CurStr = CurStr(inputValue - ((CLng(inputValue) \ 10) * 10)) & "und" & _
    63. CurStr(((CLng(inputValue) \ 10) * 10))
    64. End Select
    65. CurStr = LTrim(Trim(CurStr) & Dec)
    66. If btn_rechnen_Click() Then
    67. txt_euroworte.Text = CurStr(Ergebnis)
    68. End If
    69. End Function


    Menno.... wo ist das problem, wenn ich auf den Button ausrechnen klicke, das die Summe automatisch in das Textfeld txt_euroworte.Text geschrieben wird.
    Hallo an alle und einen entspannten verschneiten sonntag Nachmittag.

    Nun habe ich alles probiert. Eine variable gesetzt etc. Und auch anderes versucht z.B.:

    VB.NET-Quellcode

    1. If IsNumeric(txt_gesamt.Text) Then
    2. For Each Buchstabe As Char In txt_gesamt.Text
    3. txt_euroworte.AppendText(Chr(Integer.Parse(Ergebnis)))
    4. Next
    5. Else
    6. For Each Buchstabe As Char In txt_gesamt.Text
    7. txt_euroworte.AppendText((Asc(Buchstabe.ToString.ToUpper) Ergebnis).ToString)
    8. Next
    9. End If


    Der Code sollte schon richtig sein, nur wie bekomme ich das Ergebnis aus der txt_gesamt (Zahlen) in die Textbox txt_euroworte.
    Bekomme es einfach nicht hin.

    Kann mir denn keiner bei dem Code helfen? Ich weiß, das es warscheinlich für EuchSpielkram ist, aber ich bin gerade bei dem Buch von Löffelmann bei den Variablen ;)

    Grüße aus Hamburg

    Friedhelm

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Viddi“ ()

    Viddi schrieb:

    Gern möchte ich, das beim Click Ereignis die 1.200 als Buchstaben dargestellt werden - eintausendzweihundert.
    Das ist überhaupt kein Spielkram, sondern äusserst kompliziert.
    Sprache ist ein gewachsenes Konglomerat aus Konventionen, dabei sind viele Regeln, und immer wieder Ausnahmen vonne Regeln.
    Das dürfte ziemlich schwierig werden, codemäßig sauber in den Griff zu kriegen.
    Ich kann zwar so leidlich deutsch, aber nach welchen Regeln genau ich Zahl-Worte bilde, weiß ich garnicht im einzelnen. Also um sowas zu programmieren, müsste ich erstmal fleißig deutsche Grammatik recherchieren.
    Denn ohne die Regeln verstanden und formuliert zu haben, kann ich da nix entsprechendes coden.

    Ein anderer Punkt ist, dass mir das nicht sonderlich wichtig vorkommt. Was ist an 123456789 nicht gut? Warum sollte ich hundertdreiundzwanzigmillionenvierhundertsechsundfunfzigtausendsiebenhundertneunundachtzig davon machen?
    @erfinder des Rades

    Ich habe es schon einmal hinbekommen, allerdings ist die Platte weg, das war allerdings unter VB 6. Der vorhandene Code stimmt schon inetwa, muss nur noch von der einen in ie andere Textbox. Also wie schon vorher beschrieben.

    @ mox: Ne ne man braucht keine mehrere Subs, ein Code reicht aus.

    Mal schauen, die nächsten Tage habe ich es und dann werde ich den Code hier posten... für alle die das mal irgendwann brauchen und dann werde ich darauf aufpasssen :( :) :P :P

    Viddi schrieb:

    klappt leider nicht
    Was klappt nicht?

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub btn_rechnen_Click(sender As Object, e As EventArgs) Handles btn_rechnen.Click
    2. Dim Zahl1 As Double
    3. Dim Zahl2 As Double
    4. Dim Ergebnis As Double
    5. Double.TryParse(txt_netto.Text, Zahl1)
    6. Double.TryParse(txt_summe.Text, Zahl2)
    7. Ergebnis = Zahl1 + Zahl2
    8. txt_gesamt.Text = Ergebnis.ToString()
    9. TextBox4.Text = CurStr(Ergebnis)
    10. End Sub

    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    VB.NET-Quellcode

    1. Private Sub btn_rechnen_Click(sender As Object, e As EventArgs) Handles btn_rechnen.Click
    2. Dim Zahl1 As Double
    3. Dim Zahl2 As Double
    4. Dim Ergebnis As Double
    5. Double.TryParse(txt_netto.Text, Zahl1)
    6. Double.TryParse(txt_summe.Text, Zahl2)
    7. Ergebnis = Zahl1 + Zahl2
    8. txt_gesamt.Text = Ergebnis.ToString()
    9. txt_euroworte.Text = CurStr(Ergebnis)
    10. End Sub
    11. Function CurStr(ByVal inputValue As Double, _
    12. Optional ByVal round As Integer = 0, _
    13. Optional ByVal nulls APrivate Sub btn_rechnen_Click(sender As Object, e As EventArgs) Handles btn_rechnen.Click
    14. 'Gibt #InputValue in Worten aus, wobei auf #Round gerundet wird
    15. 'Standardeinstellung #Round = 0 (ohne Nachkommastellen)
    16. 'z.B. #Round = 3 (nur Tausender), oder -2 (zwei Nachkommastellen)
    17. 'Standardeinstellung #Nulls = False (0 wird nicht ausgeschrieben)
    18. Dim Dec As String
    19. Select Case round
    20. Case Is > 0
    21. Dec = "..."
    22. inputValue = CLng(CLng(inputValue) \ CLng(10 ^ round)) * (10 ^ round)
    23. Case -1
    24. Dec = " komma " & CurStr((CLng((inputValue - Int(inputValue)) * 100) \ 10) * 10, , True)
    25. inputValue = CLng(Int(inputValue))
    26. Case Is < -1
    27. Select Case (inputValue - Int(inputValue)) * 100
    28. Case Is = 0
    29. Dec = " komma null" 'oder Leerstring wenn nicht geschrieben werden soll
    30. Case 1 To 9
    31. Dec = " komma null" & CurStr(((inputValue * 10 - Int(inputValue * 10)) * 10), , True)
    32. Case Else
    33. Dec = " komma " & CurStr(((inputValue - Int(inputValue)) * 100), , True)
    34. End Select
    35. inputValue = CLng(Int(inputValue))
    36. Case Else
    37. Dec = ""
    38. inputValue = CLng(Int(inputValue))
    39. End Select
    40. Select Case inputValue
    41. Case Is >= 1000000000 : CurStr = "#FEHLER"
    42. Case 0 : CurStr = If(nulls, "null", "").ToString 'wenn Parameter Nulls wahr ist
    43. Case 1 : CurStr = "ein"
    44. Case 2 : CurStr = "zwei"
    45. Case 3 : CurStr = "drei"
    46. Case 4 : CurStr = "vier"
    47. Case 5 : CurStr = "fünf"
    48. Case 6 : CurStr = "sechs"
    49. Case 7 : CurStr = "sieben"
    50. Case 8 : CurStr = "acht"
    51. Case 9 : CurStr = "neun"
    52. Case 10 : CurStr = "zehn"
    53. Case 20 : CurStr = "zwanzig"
    54. Case 30 : CurStr = "dreißig"
    55. Case 40 : CurStr = "vierzig"
    56. Case 50 : CurStr = "fünfzig"
    57. Case 60 : CurStr = "sechzig"
    58. Case 70 : CurStr = "siebzig"
    59. Case 80 : CurStr = "achzig"
    60. Case 90 : CurStr = "neunzig"
    61. Case 11 : CurStr = "elf"
    62. Case 12 : CurStr = "zwölf"
    63. Case 13 To 19 : CurStr = CurStr(inputValue - 10) & "zehn"
    64. Case 100 To 999 : CurStr = CurStr(CLng(inputValue) \ 100) & "hundert" & _
    65. CurStr(inputValue - ((CLng(inputValue) \ 100) * 100))
    66. Case 1000 To 999999 : CurStr = CurStr(CLng(inputValue) \ 1000) & "tausend " & _
    67. CurStr(inputValue - ((CLng(inputValue) \ 1000) * 1000))
    68. Case 1000000 To 999999999 : CurStr = CurStr(CLng(inputValue) \ 1000000) & "million" & _
    69. IIf(CLng(inputValue) \ 1000000 = 1, " ", "en ").ToString() & _
    70. CurStr(inputValue - ((CLng(inputValue) \ 1000000) * 1000000))
    71. Case Else : CurStr = CurStr(inputValue - ((CLng(inputValue) \ 10) * 10)) & "und" & _
    72. CurStr(((CLng(inputValue) \ 10) * 10))
    73. End Select
    74. CurStr = LTrim(Trim(CurStr) & Dec)
    75. 'Debug.Print(CurStr(55.78, -1))
    76. '= fünfundfünfzig komma siebzig
    77. 'Debug.Print(CurStr(55.78, 0))
    78. '=> fünfundfünfzig
    79. 'Debug.Print(CurStr(55.78, -2))
    80. '=> fünfundfünfzig komma achtundsiebzig
    81. 'Debug.Print(CurStr(55.78, 1))
    82. '=> fünfzig...
    83. End Function


    @ Rod,
    was ist denn hier bei mir verkehrt??
    Sorry, aber irgendwie komme ich nicht da hinter. :(

    Den bisherigen Code habe ich angehängt.

    Grüße aus Hamburg - ich hau mir die Hukke voll, wenn wir es geschafft haben und spende nochmal... :P

    Friedhelm

    Hier der geamte Code des Quittungsblockes:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub btn_clear_Click(sender As Object, e As EventArgs) Handles btn_clear.Click
    3. txt_euroworte.Text = ""
    4. txt_gesamt.Text = ""
    5. txt_netto.Text = ""
    6. txt_nr.Text = ""
    7. txt_summe.Text = ""
    8. txt_vermerk.Text = ""
    9. cmb_eintragen.Text = ""
    10. comb_emmi.Text = ""
    11. End Sub
    12. Private Sub Timer1_Tick_1(sender As Object, e As EventArgs) Handles Timer1.Tick
    13. lbl_zeit.Text = TimeOfDay
    14. End Sub
    15. Private Sub btn_rechnen_Click(sender As Object, e As EventArgs) Handles btn_rechnen.Click
    16. Dim Zahl1 As Double
    17. Dim Zahl2 As Double
    18. Dim Ergebnis As Double
    19. Double.TryParse(txt_netto.Text, Zahl1)
    20. Double.TryParse(txt_summe.Text, Zahl2)
    21. Ergebnis = Zahl1 + Zahl2
    22. txt_gesamt.Text = Ergebnis.ToString()
    23. txt_euroworte.Text = CurStr(Ergebnis)
    24. End Sub
    25. Function CurStr(ByVal inputValue As Double, _
    26. Optional ByVal round As Integer = 0, _
    27. Optional ByVal nulls APrivate Sub btn_rechnen_Click(sender As Object, e As EventArgs) Handles btn_rechnen.Click
    28. 'Gibt #InputValue in Worten aus, wobei auf #Round gerundet wird
    29. 'Standardeinstellung #Round = 0 (ohne Nachkommastellen)
    30. 'z.B. #Round = 3 (nur Tausender), oder -2 (zwei Nachkommastellen)
    31. 'Standardeinstellung #Nulls = False (0 wird nicht ausgeschrieben)
    32. Dim Dec As String
    33. Select Case round
    34. Case Is > 0
    35. Dec = "..."
    36. inputValue = CLng(CLng(inputValue) \ CLng(10 ^ round)) * (10 ^ round)
    37. Case -1
    38. Dec = " komma " & CurStr((CLng((inputValue - Int(inputValue)) * 100) \ 10) * 10, , True)
    39. inputValue = CLng(Int(inputValue))
    40. Case Is < -1
    41. Select Case (inputValue - Int(inputValue)) * 100
    42. Case Is = 0
    43. Dec = " komma null" 'oder Leerstring wenn nicht geschrieben werden soll
    44. Case 1 To 9
    45. Dec = " komma null" & CurStr(((inputValue * 10 - Int(inputValue * 10)) * 10), , True)
    46. Case Else
    47. Dec = " komma " & CurStr(((inputValue - Int(inputValue)) * 100), , True)
    48. End Select
    49. inputValue = CLng(Int(inputValue))
    50. Case Else
    51. Dec = ""
    52. inputValue = CLng(Int(inputValue))
    53. End Select
    54. Select Case inputValue
    55. Case Is >= 1000000000 : CurStr = "#FEHLER"
    56. Case 0 : CurStr = If(nulls, "null", "").ToString 'wenn Parameter Nulls wahr ist
    57. Case 1 : CurStr = "ein"
    58. Case 2 : CurStr = "zwei"
    59. Case 3 : CurStr = "drei"
    60. Case 4 : CurStr = "vier"
    61. Case 5 : CurStr = "fünf"
    62. Case 6 : CurStr = "sechs"
    63. Case 7 : CurStr = "sieben"
    64. Case 8 : CurStr = "acht"
    65. Case 9 : CurStr = "neun"
    66. Case 10 : CurStr = "zehn"
    67. Case 20 : CurStr = "zwanzig"
    68. Case 30 : CurStr = "dreißig"
    69. Case 40 : CurStr = "vierzig"
    70. Case 50 : CurStr = "fünfzig"
    71. Case 60 : CurStr = "sechzig"
    72. Case 70 : CurStr = "siebzig"
    73. Case 80 : CurStr = "achzig"
    74. Case 90 : CurStr = "neunzig"
    75. Case 11 : CurStr = "elf"
    76. Case 12 : CurStr = "zwölf"
    77. Case 13 To 19 : CurStr = CurStr(inputValue - 10) & "zehn"
    78. Case 100 To 999 : CurStr = CurStr(CLng(inputValue) \ 100) & "hundert" & _
    79. CurStr(inputValue - ((CLng(inputValue) \ 100) * 100))
    80. Case 1000 To 999999 : CurStr = CurStr(CLng(inputValue) \ 1000) & "tausend " & _
    81. CurStr(inputValue - ((CLng(inputValue) \ 1000) * 1000))
    82. Case 1000000 To 999999999 : CurStr = CurStr(CLng(inputValue) \ 1000000) & "million" & _
    83. IIf(CLng(inputValue) \ 1000000 = 1, " ", "en ").ToString() & _
    84. CurStr(inputValue - ((CLng(inputValue) \ 1000000) * 1000000))
    85. Case Else : CurStr = CurStr(inputValue - ((CLng(inputValue) \ 10) * 10)) & "und" & _
    86. CurStr(((CLng(inputValue) \ 10) * 10))
    87. End Select
    88. CurStr = LTrim(Trim(CurStr) & Dec)
    89. 'Debug.Print(CurStr(55.78, -1))
    90. '= fünfundfünfzig komma siebzig
    91. 'Debug.Print(CurStr(55.78, 0))
    92. '=> fünfundfünfzig
    93. 'Debug.Print(CurStr(55.78, -2))
    94. '=> fünfundfünfzig komma achtundsiebzig
    95. 'Debug.Print(CurStr(55.78, 1))
    96. '=> fünfzig...
    97. End Function
    98. Private Sub txt_netto_KeyPress( _
    99. ByVal sender As Object, _
    100. ByVal e As System.Windows.Forms.KeyPressEventArgs) _
    101. Handles txt_netto.KeyPress
    102. Select Case Asc(e.KeyChar)
    103. Case 48 To 57, 8, 32, 44
    104. Case Else
    105. e.Handled = True
    106. End Select
    107. End Sub
    108. Private Sub txt_summe_KeyPress( _
    109. ByVal sender As Object, _
    110. ByVal e As System.Windows.Forms.KeyPressEventArgs) _
    111. Handles txt_summe.KeyPress
    112. Select Case Asc(e.KeyChar)
    113. Case 48 To 57, 8, 32, 44
    114. ' Zahlen, Backspace, Komma und Space zulassen
    115. Case Else
    116. ' alle anderen Eingaben unterdrücken
    117. e.Handled = True
    118. End Select
    119. End Sub
    120. Private Sub txt_gesamt_KeyPress( _
    121. ByVal sender As Object, _
    122. ByVal e As System.Windows.Forms.KeyPressEventArgs) _
    123. Handles txt_gesamt.KeyPress
    124. Select Case Asc(e.KeyChar)
    125. Case 48 To 57, 8, 32, 44
    126. ' Zahlen, Backspace, Komma und Space zulassen
    127. Case Else
    128. ' alle anderen Eingaben unterdrücken
    129. e.Handled = True
    130. End Select
    131. End Sub
    132. Private Sub txt_nr_KeyPress( _
    133. ByVal sender As Object, _
    134. ByVal e As System.Windows.Forms.KeyPressEventArgs) _
    135. Handles txt_nr.KeyPress
    136. Select Case Asc(e.KeyChar)
    137. Case 48 To 57, 8, 32, 44
    138. ' Zahlen, Backspace, Komma und Space zulassen
    139. Case Else
    140. ' alle anderen Eingaben unterdrücken
    141. e.Handled = True
    142. End Select
    143. End Sub
    144. Private Sub btn_close_Click(sender As Object, e As EventArgs) Handles btn_close.Click
    145. Beep()
    146. Select Case MessageBox.Show(" Wollen Sie das Programm wirklich schließen?", "Quittungsblock beenden ?", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
    147. Case Windows.Forms.DialogResult.Yes
    148. If DialogResult.Yes Then
    149. Me.Close()
    150. End If
    151. Case Windows.Forms.DialogResult.No
    152. End Select
    153. End Sub
    154. Private Sub btn_drucken_Click(sender As Object, e As EventArgs) Handles btn_drucken.Click
    155. PrintForm1.Print()
    156. End Sub
    157. Private Sub txt_summe_Click(ByVal sender As Object, _
    158. ByVal e As System.EventArgs) Handles txt_summe.Click
    159. txt_summe.BackColor = Color.White
    160. End Sub
    161. Private Sub txt_netto_Click(ByVal sender As Object, _
    162. ByVal e As System.EventArgs) Handles txt_netto.Click
    163. txt_netto.BackColor = Color.White
    164. End Sub
    165. Private Sub txt_nr_Click(ByVal sender As Object, _
    166. ByVal e As System.EventArgs) Handles txt_nr.Click
    167. txt_nr.BackColor = Color.White
    168. End Sub
    169. Private Sub cmb_eintragen_Click(ByVal sender As Object, _
    170. ByVal e As System.EventArgs) Handles cmb_eintragen.Click
    171. cmb_eintragen.BackColor = Color.White
    172. End Sub
    173. Private Sub comb_emmi_Click(ByVal sender As Object, _
    174. ByVal e As System.EventArgs) Handles comb_emmi.Click
    175. comb_emmi.BackColor = Color.White
    176. End Sub
    177. Private Sub comb_von_Click(ByVal sender As Object, _
    178. ByVal e As System.EventArgs) Handles comb_von.Click
    179. comb_von.BackColor = Color.White
    180. End Sub
    181. End Class


    Hmm nixht einfach, aber der Schinken von Löffelmann ist auch schwere kost ;)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Viddi“ ()

    Viddi schrieb:

    bei mir verkehrt?
    Das ist exakt Dein Code mit der einen einzigen zusätzlichen Zeile.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Du hast die Funktion CurStr zerlegt, der Klickhandle gehört da nicht rein. Bring die Funktion wieder in Ordnung und dan geht auch alles wie es sich gehört.

    Es heißt übrigens achtzig und nicht achzig.

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Function CurStr(ByVal inputValue As Double,
    2. Optional ByVal round As Integer = 0,
    3. Optional ByVal nulls As Boolean = False
    4. ) As String
    5. 'Gibt #InputValue in Worten aus, wobei auf #Round gerundet wird
    6. 'Standardeinstellung #Round = 0 (ohne Nachkommastellen)
    7. 'z.B. #Round = 3 (nur Tausender), oder -2 (zwei Nachkommastellen)
    8. 'Standardeinstellung #Nulls = False (0 wird nicht ausgeschrieben)
    9. Dim Dec As String
    10. Select Case round
    11. Case Is > 0
    12. Dec = "..."
    13. inputValue = CLng(CLng(inputValue) \ CLng(10 ^ round)) * (10 ^ round)
    14. Case -1
    15. Dec = " komma " & CurStr((CLng((inputValue - Int(inputValue)) * 100) \ 10) * 10, , True)
    16. inputValue = CLng(Int(inputValue))
    17. Case Is < -1
    18. Select Case (inputValue - Int(inputValue)) * 100
    19. Case Is = 0
    20. Dec = " komma null" 'oder Leerstring wenn nicht geschrieben werden soll
    21. Case 1 To 9
    22. Dec = " komma null" & CurStr(((inputValue * 10 - Int(inputValue * 10)) * 10), , True)
    23. Case Else
    24. Dec = " komma " & CurStr(((inputValue - Int(inputValue)) * 100), , True)
    25. End Select
    26. inputValue = CLng(Int(inputValue))
    27. Case Else
    28. Dec = ""
    29. inputValue = CLng(Int(inputValue))
    30. End Select
    31. Select Case inputValue
    32. Case Is >= 1000000000 : CurStr = "#FEHLER"
    33. Case 0 : CurStr = If(nulls, "null", "").ToString 'wenn Parameter Nulls wahr ist
    34. Case 1 : CurStr = "ein"
    35. Case 2 : CurStr = "zwei"
    36. Case 3 : CurStr = "drei"
    37. Case 4 : CurStr = "vier"
    38. Case 5 : CurStr = "fünf"
    39. Case 6 : CurStr = "sechs"
    40. Case 7 : CurStr = "sieben"
    41. Case 8 : CurStr = "acht"
    42. Case 9 : CurStr = "neun"
    43. Case 10 : CurStr = "zehn"
    44. Case 20 : CurStr = "zwanzig"
    45. Case 30 : CurStr = "dreißig"
    46. Case 40 : CurStr = "vierzig"
    47. Case 50 : CurStr = "fünfzig"
    48. Case 60 : CurStr = "sechzig"
    49. Case 70 : CurStr = "siebzig"
    50. Case 80 : CurStr = "achtzig"
    51. Case 90 : CurStr = "neunzig"
    52. Case 11 : CurStr = "elf"
    53. Case 12 : CurStr = "zwölf"
    54. Case 13 To 19 : CurStr = CurStr(inputValue - 10) & "zehn"
    55. Case 100 To 999 : CurStr = CurStr(CLng(inputValue) \ 100) & "hundert" &
    56. CurStr(inputValue - ((CLng(inputValue) \ 100) * 100))
    57. Case 1000 To 999999 : CurStr = CurStr(CLng(inputValue) \ 1000) & "tausend " &
    58. CurStr(inputValue - ((CLng(inputValue) \ 1000) * 1000))
    59. Case 1000000 To 999999999 : CurStr = CurStr(CLng(inputValue) \ 1000000) & "million" &
    60. IIf(CLng(inputValue) \ 1000000 = 1, " ", "en ").ToString() &
    61. CurStr(inputValue - ((CLng(inputValue) \ 1000000) * 1000000))
    62. Case Else : CurStr = CurStr(inputValue - ((CLng(inputValue) \ 10) * 10)) & "und" &
    63. CurStr(((CLng(inputValue) \ 10) * 10))
    64. End Select
    65. CurStr = LTrim(Trim(CurStr) & Dec)
    66. End Function



    Nachtrag: Deine Events hast Du nicht über die IDE abonniert. Die sehen so aus als hättest Du sie auch aus einem Buch abgeschrieben. Das ist gar nicht glücklich, es sei denn es sind selbst erstelle Events. Die wären dann aber auch über selbst geschriebenen Code zu abonnieren.
    Schau Dir mal die Eigenschaften der Steuerelemente an, in diesem Fall die der Textboxen. Im Eigenschaftsfenster, wo z.B. die Namen festgelegt werden ist oben auch ein Blitz-Symbol. Das ist für die Ereignisse. Du abonnierst die Ereigneisse, in dem Du dort im gesuchten Ereigniss doppelt klickst, dann führt Dich die IDE direkt in den Code herein und Du brauchst nur noch den Code der Funktion selbst zu schreiben.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Dksksm“ ()

    Achne, vielleicht liest Du ja mal meinen Beitrag.
    Mit einer klitzekleinen Änderung der Funktion CurStr, die ich im Übrigen auch im Post #14 beschrieben habe und Dir sogar den Code der Funktion reingeschrieben habe, würde Dein Programm soweit Du es hier gepostet hast auch funktionieren. Bei mir läuft der Code von hier ja auch. Allerdings war ich so frei die Ereignisse auch wirklich (über die IDE) zu abonnieren, was Du glaub ich, nicht getan hast.

    Aber davon mal ganz ab, solltest Du in die Verlegenheit kommen und auch Nachkommastellen mit als Text ausgeben wollen, so sei gewarnt. Die Funktion rundet nämlich falsch, was darin liegt dass der Datentyp Double verwendet wurde. Um korrekt zu Runden muss der Datentyp Decimal verwendet werden, was aber wirklich nur wenige kleinere Änderungen erfordert.

    Viddi schrieb:

    Fehler hier und da
    äußern sich wie genau?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    bei mir klappt es gut, ok, es werden die Cent nicht geschrieben, aber sonst ok.

    Erfinder des Rades
    Was meinst du damit?

    Grüße
    Friedhelm

    Nebenbei - eas stimmt an diesem Code nicht.

    'If txt_vermerk.Text = "" Then txt_vermerk.BackColor = Color.AliceBlue