VBA: Programm unsauber / schlecht ?



  • huhu, ich wollt mal etwas fragen. ich hab heut das 1. mal vba gehabt und da musten wir n programm schreiben. es handelte sich um einen taschenrechner. nur leider sagt mir der lehrer, das teil 2 des codes total fürn a* ist 😞

    kann mir mal jemand sagen wie ich das besser mache? er sagte das is viel zuviel code und so :S

    hier mal modul1.

    Option Explicit
    
    Function doAdd(strZahl1 As String, strZahl2 As String) As String
      Dim res As Double
      res = CDbl(strZahl1) + CDbl(strZahl2)
      doAdd = CStr(res)
    End Function
    
    Function doSub(strZahl1 As String, strZahl2 As String) As String
      Dim res As Double
      res = CDbl(strZahl1) - CDbl(strZahl2)
      doSub = CStr(res)
    End Function
    
    Function doMul(strZahl1 As  String, strZahl2 As String) As String
      Dim res As  Double
      res = CDbl(strZahl1) * CDbl/strZahl2)
      doMul =CStr(res)
    End Function
    
    Function doDiv(strZahl1 As String, strZahl2 As String) As String
      Dim res As Double
      Dim resultat As String
      If(CDbl(strZahl2) = 0) Then
        resultat = "Division durch NULL"
      Else
        res = CDbl(strZahl1) / CDbl(strZahl2)
        resultat = CStr(res)
      End If
      doDiv = resultat
    End Function
    
    Function sumString(strZahl As String, str As String) As String
      strZahl = strZahl & str
      sumString = strZahl
    End  Function
    

    tabelle1 der schlechte code, da ich für jeden button die selbe function habe, nur mit einem anderen zahlenwert dahinter...:

    Option Explicit
    Dim strZahl1 As String
    Dim strZahl2 As String
    Dim plus, minus, mal, div AsBoolean
    
    Private  Sub  CmdBtn0_Click()
      If(plus Or minus Or  mal Or div) Then
        strZahl2 = Modul1.sumString(strZahl2, "0")
        TextBoxZahl2.Text = strZahl2
      Else
        strZahl1 = Modul1.sumString(strZahl1, "0")
        TextBoxZahl1.Text = strZahl1
      End If
    End Sub
    
    //für jede Zahl von 1-0 alles  sind also 10x die selben funktionen und die //sollen umgeschrieben werden, da sie viel zu kompliziert sind....
    

    danke schonmal im voraus.

    gruss



  • Hallo

    Ist es nicht Aufgabe deines Lehres, bei (von ihm so bezeichneter ...) unzureichender Lösung einer Aufgabe dir eine bessere Lösung zu zeigen?

    bis bald
    akari



  • kann leider kein vb mehr *g* aber dein lehrer meint wahrscheinlich, dass du für

    If(plus Or minus Or  mal Or div) Then
        strZahl2 = Modul1.sumString(strZahl2, "0")
        TextBoxZahl2.Text = strZahl2
      Else
        strZahl1 = Modul1.sumString(strZahl1, "0")
        TextBoxZahl1.Text = strZahl1
      End If
    

    eine funktion schreiben sollst, und nicht immer das gleiche codefragment bei jedem button verwenden sollst, also in etwa so:

    Private Sub Rechne (zz As String)
      If(plus Or minus Or  mal Or div) Then
        strZahl2 = Modul1.sumString(strZahl2, zz)
        TextBoxZahl2.Text = strZahl2
      Else
        strZahl1 = Modul1.sumString(strZahl1, zz)
        TextBoxZahl1.Text = strZahl1
      End If
    End Sub
    
    Private  Sub  CmdBtn0_Click()
      Rechne("0");
    End Sub
    
    Private  Sub  CmdBtn1_Click()
      Rechne("1");
    End Sub
    
    Private  Sub  CmdBtn2_Click()
      Rechne("2");
    End Sub
    
    Private  Sub  CmdBtn3_Click()
      Rechne("3");
    End Sub
    


  • wunderbar, danke 🙂 jetzt wird er wohl zufrieden sein.

    gruss



  • akari schrieb:

    Hallo

    Ist es nicht Aufgabe deines Lehres, bei (von ihm so bezeichneter ...) unzureichender Lösung einer Aufgabe dir eine bessere Lösung zu zeigen?

    bis bald
    akari

    Nein, er soll dir zeigen das es besser geht und du sollst dann in SELBSTSTÄNDIGER Arbeit diese Lösung finden.


Anmelden zum Antworten