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
akariNein, er soll dir zeigen das es besser geht und du sollst dann in SELBSTSTÄNDIGER Arbeit diese Lösung finden.