(Ergebnisse: Kohlemenge täglich 61,714 kt, Asche täglich 22,217 kt, Kohlewaggons 372,62, Aschewaggons 108,38)
In der Praxis werden sich einige Werte von Zeit zu Zeit ändern. Wenn Sie den Waggonbedarf täglich berechnen müssen, ist eine Berechnungshilfe nützlich.
UserForm gestalten, Anfangswerte eintragen

Was man im Bild nicht sieht: Im Frame "Tagesbedarf" ist ein Label eingeordnet, dessen "Caption" gelöscht wurde. Es heißt hier Label9 und wird später die Ergebnisse anzeigen. Es muß deshalb ausreichend groß gezogen werden.
| 'Deklarationsteil Option Explicit Dim Leistung As Single, Wirkungsgrad As Single, Brennwert As Single Dim Kohledichte As Single, Aschegehalt As Single, Aschedichte As Single Dim Tragfähigkeit As Single, Volumen As Single Dim Kohlewaggons As Single, Aschewaggons As Single Dim Kohlenmenge As Single, Aschenmenge As Single 'Auswertung des Klick-Ereignisses auf dem Button "Rechne" Private Sub Command1_Click() 'Auslesen der vom Nutzer evtl. veränderten Zahlenwerte 'Auf eine Überprüfung der Einträge wird zunächst verzichtet. 'Im schlimmsten Falle hagelt es Programmabbrüche! Leistung = Text1.Text Wirkungsgrad = Text2.Text Brennwert = Text3.Text Kohledichte = Text4.Text Aschegehalt = Text5.Text Aschedichte = Text6.Text Tragfähigkeit = Text7.Text Volumen = Text8.Text 'Rechenbasis Tag: Kohlenmenge = Leistung * 1000000000# * 24 * 3600 / Brennwert / 1000 / (Wirkungsgrad / 100) Label9.Caption = "Kohlemenge = " & Format$(Kohlenmenge, "Standard") & " t" & vbCrLf Aschenmenge = Kohlenmenge * Aschegehalt / 100 Label9.Caption = Label9.Caption & "Aschenmenge = " & Format$(Aschenmenge, "Standard") & " t" & vbCrLf Label9.Caption = Label9.Caption & vbCrLf 'Kohlewaggons If Volumen * Kohledichte < Tragfähigkeit * 1000 Then Kohlewaggons = Kohlenmenge / (Kohledichte / 1000) / Volumen Else Kohlewaggons = Kohlenmenge / Tragfähigkeit End If Label9.Caption = Label9.Caption & "Kohlewaggons = " & Format(Kohlewaggons, "Standard") & vbCrLf 'Aschenwaggons If Volumen * Aschedichte < Tragfähigkeit * 1000 Then Aschewaggons = Aschenmenge / (Aschedichte / 1000) / Volumen Else Aschewaggons = Aschenmenge / Tragfähigkeit End If End SubLabel9.Caption = Label9.Caption & "Aschewaggons = " & Format$(Aschewaggons, "Standard") 'Auswertung des Klick-Ereignisses auf dem Button "Ende" Private Sub Command2_Click() End End Sub |
Anmerkung für (einige) Studenten der TFH Wildau: Das Wort 'Standard' schreibt sich auch nach den neuen Rechtschreibregeln hinten mit 'd', sonst klappt nämlich die Formatierung nicht.
Da es bestimmt mehrere Waggontypen gibt, deren Kennwerte feststehen, ist es günstiger, unter Typen auszusuchen und die Kennwerte der Typen vom Programm verwalten zu lassen.
Es empfehlen sich "Option-Buttons":

Zusätzlich vorgesehen ist ein neuer CommandButton, der den Druck einer Waggonbestellung auslösen soll. Er ist anfänglich deaktiviert, weil noch keine Berechnung erfolgt ist. Nach Berechnung soll er aktiviert werden.
Es gibt einige Veränderungen im Programmcode, zunächst im Deklarationsteil:
| Dim Typ As Integer'ergänzende Dimensionierung |
Veränderung in der Procedur PrivateSub CommandButton1_Click():
| Aschedichte = TextBox5.Text'alter Programmtext 'neuer Programmcode If Option1.Value Then Typ = 1'die Auswahl einer Variablen zuweisen If Option2.Value Then Typ = 2 If Option3.Value Then Typ = 3 If Option4.Value Then Typ = 4 Select Case Typ 'Auswahlstruktur zur Zuweisung der Parameterwerte Case 1 Tragfähigkeit = 205 Volumen = 127,4 Case 2 Tragfähigkeit = 55 Volumen = 136 Case 3 Tragfähigkeit = 43 Volumen = 114 Case 4 Tragfähigkeit = 88 End SelectVolumen = 232 'Erweiterung mit Druckoption Command3.Enabled = True'Druck kann erfolgen, Druckroutine hier nicht ausgeführt! |
Eine naheliegende Verbesserung sei nur erbeten: Um die komplizierten Formatierungsstrings zu umschiffen, wurde hier mit "Standard" formatiert. Die Folge ist, daß die Waggonzahlen mit zwei Nachkommastellen angezeigt werden. Dies sollte der Übende ändern, damit das Ergebnis nicht auf Dauer so blöd aussieht!