Thema Datum  Von Nutzer Rating
Antwort
Rot Kleines Problem im Code (Geld zählen)
26.05.2015 10:38:54 Was_ist_VBA
NotSolved

Ansicht des Beitrags:
Von:
Was_ist_VBA
Datum:
26.05.2015 10:38:54
Views:
1509
Rating: Antwort:
  Ja
Thema:
Kleines Problem im Code (Geld zählen)

Hallo zusammen,

ich habe hier bereits einen fertigen Code der auch einwandfrei funktioniert. Nur eine Kleinigkeit passt nichts ganz.

Über einen Button wird eine Userform mit Textbox und Spinbutton geöffnet, indem ein Betrag eingegeben werden soll.

Es wird dann errechnet wieviel Geldscheine oder Münzen darin enthalten sind. (siehe Bild)

Mein Problem ist nur dass mein Code den letzten Cent nicht mit rechnet (siehe Bild, rote Markierung). Ich vermute das liegt an dem Befehl Application.Rounddown in der Rechnung aber da ich Anfänger bin und keine Ahnung hab bin ich mir nicht sicher.

Hier mein Code:

Private Sub TextBox1_Change()

    'Falls der gerechnete Wert manuell aus der Textbox1 gelöscht wird, erscheint die Null als Anfangswert'
If TextBox1 = "" Then
TextBox1.Value = 0

Else

    'Die CLng-Funktion wandelt den gerechneten Wert in der Textbox1 auf ganze Zahlen um ; Die CDbl-Funktion wandelt den gerechneten Wert in 2 Nachkommastellen um'
SpinButton1.Value = CLng(CDbl(TextBox1.Text) * 100)

End If

End Sub

Sub Anzahl_Zahlungsmittel()
Dim i As Integer, a As Double, b As Double

i = 4   'Start ab Zeile 4'
a = Cells(2, 2).Value 'a = Der Wert aus Spalte B Zeile 2'

    'Der Loop beginnt ab Zeile 4 Spalte 12'
Do Until IsEmpty(Cells(i, 12).Value) = True

    'Der Wert der in Spalte B Zeile 4 steht wird mit dem Wechselgeldbetrag der ab Spalte 12 Zeile 4 verrechnet'
        'Z.B.: b = 25,34 € / 20€ = 1,267'
b = a / Cells(i, 12).Value

    'Der errechnete Wert wird Richtung Null gerundet'
b = Application.RoundDown(b, 0)

    'Der abgerundete Wert wird in die jeweilige Zeile/Spalte eingesetzt --> hier am Beispiel Spalte 11 Zeile 5'
Cells(i, 11).Value = b

    'a muss wieder Null ergeben, da der Loop sonst mit einem Restwert weiter rechnet, der das weitere Ergebnis verfälscht'
a = a - (Cells(i, 12).Value * Cells(i, 11).Value)

    'Die Rechnung im Loop rutscht eine Zeile nache unten'
i = i + 1
Loop
End Sub

Private Sub CommandButton1_Click()
Call Anzahl_Zahlungsmittel
End Sub

 

 

Ich hoffe Ihr könnt mir helfen ohne den Code stark zu verändern.

Danke schonmal im Vorraus und für den edlen Helfer gibts ein fettes virtuelles High Five! :D


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Kleines Problem im Code (Geld zählen)
26.05.2015 10:38:54 Was_ist_VBA
NotSolved