Option Explicit

Sub taschenrechnerMitFunktion()
    
' Taschenrechnerprogramm mit Funktionen
    ' Dateiname: taschenrechnerMitFunktion
    Dim ersterOperand As Double
    
Dim zweiterOperand As Double
    
Dim operator As String
    
Dim eingabe As String
    
Dim ergebnis As Double
    
' Gib Programmbeschreibung aus
    MsgBox ("Geben Sie zwei Operanden und einen Operator ein!" _
            & Chr$(13) & "Das Programm verhält sich wie ein" _
            & " Taschenrechner. Als Operatoren sind +, - / und *" _
            & " zugelassen! Das Programm endet durch die Eingabe von " _
            & Chr$(13) & "0 als erstem Summanden!")
    
' Lies ersten Summanden ein
    eingabe = InputBox("Geben Sie nun den ersten Operanden ein!")
    
Do While eingabe <> "0"
        
If Not Lies_und_ueberpruefe_Benutzereingaben(eingabe, _
                                        ersterOperand, operator, _
                                        zweiterOperand) 
Then Exit Sub
        
If Not Fuehre_Berechnung_durch(ersterOperand, _
                                        operator, _
                                        zweiterOperand, _
                                        ergebnis) 
Then Exit Sub
        
' Gib das Ergebnis aus
        MsgBox (" " & ersterOperand & " " & operator & " " _
                    & zweiterOperand & " = " & ergebnis)
        
' Lies ersten Operanden ein
        eingabe = InputBox("Geben Sie nun den ersten Operanden ein!")
    
Loop
End Sub

Function Lies_und_ueberpruefe_Benutzereingaben(ByVal eingabe As String, _
                                            ersterOperand 
As Double, _
                                            operator 
As String, _
                                            zweiterOperand 
As Double) _
                                            
As Boolean
    Lies_und_ueberpruefe_Benutzereingaben = 
True
    
If Not wandle_in_Double_um(eingabe, ersterOperand) Then
        Lies_und_ueberpruefe_Benutzereingaben = 
False
        
Exit Function
    
End If
    operator = InputBox("Geben Sie nun den Operator ein!")
    eingabe = InputBox("Geben Sie nun den zweiten Operanden ein!")
    
If Not wandle_in_Double_um(eingabe, zweiterOperand) Then
        Lies_und_ueberpruefe_Benutzereingaben = 
False
        
Exit Function
    
End If
End Function

Function Fuehre_Berechnung_durch(ByVal ersterOperand As Double, _
                                
ByVal operator As String, _
                                
ByVal zweiterOperand As Double, _
                                ergebnis 
As Double) _
                                
As Boolean
    Fuehre_Berechnung_durch = 
True
    
Select Case operator
        
Case "+"
                ergebnis = ersterOperand + zweiterOperand
        
Case "-"
                ergebnis = ersterOperand - zweiterOperand
        
Case "*"
                ergebnis = ersterOperand * zweiterOperand
        
Case "/"
            
If (zweiterOperand = 0) Then
                MsgBox ("Der Nenner ist 0!")
                Fuehre_Berechnung_durch = 
False
                
Exit Function
            
End If
            ergebnis = ersterOperand / zweiterOperand
        
Case Else
            MsgBox ("Der eingegebene Operator wird nicht " _
                    & "unterstützt!")
            Fuehre_Berechnung_durch = 
False
            
Exit Function
        
End Select
End Function