Aufgabe:
Fertigen Sie ein VB-Programm an, das der Berechnung von Dachziegeln auf einer vorgegebenen Dachfläche dient.Alle Größen werden in den entsprechenden Einheiten eingesetzt.
Bei verlassen jedes Eingabefeldes formatiert das Programm den Wert automatisch in die Anzeige mit 2 Nachkommastellen um.
Nach Betätigung der "Berechnung" Taste wird die benötigte Dachziegelmenge aufgerundet angezeigt. Die Ausgabe erfolgt in einem Lösungssatz. Bedenken Sie, dass die Dachfläche aus zwei symmetrischen Hälften besteht!
"Neu" löscht alle Eingabefelder. Ohne "Neu" ist keine weitere Berechnung / Eingabe möglich!
"Ende" beendet das Programm:
Oberfläche:
Quellcode:
Option Explicit
Dim dblDachLänge As Double
Dim dblDachBreite As Double
Dim dblZiegelLänge As Double
Dim dblZiegelBreite As Double
Dim dblZiegelfürLänge As Double
Dim dblZiegelfürBreite As Double
Dim dblZiegelanzahltot As Double
Dim dblZiegelanzahlopt As Double
Dim dblZiegelanzahlmin As Double
Dim strAusgabe As String
Private Sub commandoBerechnen_Click()
If IsNumeric(dblDachLänge) And IsNumeric(dblDachBreite) And IsNumeric(dblZiegelLänge) And IsNumeric(dblZiegelBreite) And dblDachLänge > 0 And dblDachBreite > 0 And dblZiegelLänge > 0 And dblZiegelBreite > 0 Then
'Totalberechnung##################################
dblZiegelfürLänge = dblDachLänge * 100 / dblZiegelLänge 'dblziegelfürLänge speichert Ziegelanzahl in Länge
'Runden oder nicht runden, das ist eine Frage
If dblZiegelfürLänge = Int(dblZiegelfürLänge) Then
dblZiegelfürLänge = dblZiegelfürLänge
Else
dblZiegelfürLänge = (Int(dblZiegelfürLänge)) + 1
End If
dblZiegelfürBreite = dblDachBreite * 100 / dblZiegelBreite 'dblziegelfürBreite speichert Ziegelanzahl in Breite
'Runden oder nicht runden, das ist eine Frage
If dblZiegelfürBreite = Int(dblZiegelfürBreite) Then
dblZiegelfürBreite = dblZiegelfürBreite
Else
dblZiegelfürBreite = (Int(dblZiegelfürBreite)) + 1
End If
dblZiegelanzahltot = dblZiegelfürLänge * dblZiegelfürBreite * 2
'##################################################
'Optimalberechnung HIER NOCH MACHEN !!!!!!!!!! <<<<-------
'dblZiegelanzahlopt =
'Minimalberechnung################################
dblZiegelanzahlmin = 2 * ((dblDachLänge * 100 * dblDachBreite * 100) / (dblZiegelLänge * dblZiegelBreite))
'Runden oder nicht runden, das ist eine Frage
If dblZiegelanzahlmin = Int(dblZiegelanzahlmin) Then
dblZiegelanzahlmin = dblZiegelanzahlmin
Else
dblZiegelanzahlmin = (Int(dblZiegelanzahlmin)) + 1
End If
'################################################
'Ausgabe des Ergebnisses als Text
lblausgabe.Caption = "Es werden minmal " & dblZiegelanzahlmin & " Ziegel benötigt. Ohne den überstehenden Rest zu verwenden werden " & dblZiegelanzahltot & " benötigt."
Else
MsgBox ("Bitte reale Angaben machen!")
End If
'Ende Durchlauf, erst wieder auf Neu klicken
commandoBerechnen.Enabled = False
commandoNeu.Enabled = True
End Sub
Private Sub commandoEnde_Click()
'ENDE !?!?!
End
End Sub
Private Sub commandoNeu_Click()
'Machen wir mal alles in den Ausgangszustand!
txtDachLänge.Text = "0"
txtDachBreite.Text = "0"
txtZiegelLänge.Text = "0"
txtZiegelBreite.Text = "0"
dblDachLänge = 0
dblDachBreite = 0
dblZiegelLänge = 0
dblZiegelBreite = 0
dblZiegelanzahltot = 0
dblZiegelanzahlopt = 0
dblZiegelanzahlmin = 0
commandoBerechnen.Enabled = True
commandoNeu.Enabled = False
End Sub
Private Sub Form_Load()
'Voreinstellungen
dblDachLänge = 0
dblDachBreite = 0
dblZiegelLänge = 0
dblZiegelBreite = 0
dblZiegelanzahltot = 0
dblZiegelanzahlopt = 0
dblZiegelanzahlmin = 0
End Sub
'### Alle Gleich!!
' Wenn es eine Zahl ist, wird diese Formatiert und in eine Cariable geschrieben, sonst gibts eine Fehlermeldung
Private Sub txtDachBreite_LostFocus()
If IsNumeric(txtDachBreite.Text) Then
dblDachBreite = Format(txtDachBreite.Text, "fixed")
txtDachBreite.Text = dblDachBreite
Else
MsgBox ("ZAHL!")
End If
End Sub
Private Sub txtDachLänge_LostFocus()
If IsNumeric(txtDachLänge.Text) Then
dblDachLänge = Format(txtDachLänge.Text, "fixed")
txtDachLänge.Text = dblDachLänge
Else
MsgBox ("ZAHL!")
End If
End Sub
Private Sub txtZiegelBreite_LostFocus()
If IsNumeric(txtZiegelBreite.Text) Then
dblZiegelBreite = Format(txtZiegelBreite.Text, "fixed")
txtZiegelBreite.Text = dblZiegelBreite
Else
MsgBox ("ZAHL!")
End If
End Sub
Private Sub txtZiegelLänge_LostFocus()
If IsNumeric(txtZiegelLänge.Text) Then
dblZiegelLänge = Format(txtZiegelLänge.Text, "fixed")
txtZiegelLänge.Text = dblZiegelLänge
Else
MsgBox ("ZAHL!")
End If
End Sub
Zu kompliziert??
Dann Download als Projekt (4,5 KB)