Hallo Gast36809,
Deine Aufgabenstellung hat eine kleine Ungenauigkeit. Der Mindestbetrag für den Fahrpreis ist nicht 0,00 Euro, sondern 0,05 Euro. Das musst Du so eigentlich auch im Code abbilden. Denn ansonsten sind Eingaben von 0,01 Euro bis 0,04 Euro für den Fahrpreis möglich, die aber in der Folge nicht aufgelöst werden können. Du musst also den Eingabewert in einer Schleife prüfen, die verlassen wird, wenn ein gültiger Fahrpreis zwischen 0,05 Euro und 5,00 Euro eingegeben wurde.
Für den eingeworfenen Betrag zum Bezahlen musst Du genauso verfahren. Genau genommen musst Du eigentlich prüfen, ob ein Betrag eingegeben wurde, der sich ohne Rest durch 0,05 teilen lässt, da 0,05 Euro die kleinste Münze ist, die verarbeitet werden kann.
Für die Berechnung des Rückgeldes teilst Du die Differenz von Eingeworfenem Geld und Fahrpreis als erstes durch den Wert der größten zur Verfügung stehenden Münze, also 2,00 Ist das Ergebnis kleiner 1, gehst Du zum Teilen durch den nächsten Münzwert über, also 1,00. Ist das Ergebnis über 1, ziehst Du den ganzzahligen Anteil vom Rückgeld ab und berechnest dann mit der nächst kleineren Münze. Das geht am Ende mit den 0,05 Euro dann immer auf und Du bekommst automatisch die optimale Rückgeldkombination. Also die mit den wenigsten Münzen.
Wie Du das machst, da musst Du mal etwas nachdenken. Als Tip noch der Hinweis, mit der Funktion Int() wirst Du den Nachkommaanteil einer Double Zahl los und es bleibt nur der Ganzzahlanteil übrig. Achte darauf, den verwendeten Variablen die richtigen Datentypen zuzuweisen. Die Funktion Int() wandelt eine Zahl in einen Integerwert um.
https://docs.microsoft.com/de-de/office/vba/language/reference/user-interface-help/int-fix-functions
Ich verwende das z.B., um von Zeitstempeln die Uhrzeit abzuschneiden, wenn ich nur das Datum haben will. Das funktioniert, weil Excel Zeitstempel bestehend aus Datum und Uhrzeit als Double verwaltet. Der Ganzzahlanteil sind die Tage seit dem 01.01.1900, der Nachkommaanteil ist die Uhrzeit, bzw. die vergangenen Stunden des laufenden Datums.
Angewendet wird Int() dabei so:
1 2 3 4 5 6 7 | aktuellesDatum= Int(Now())
AktuelleUhrzeit = Now() - Int(Now())
|
Viele Grüße,
Zwenn
|