Hallo Leute,
ich wollte einen Taschenrechner programmieren und stoße auf einige Schwierigkeiten, da ich noch nie mit VBA gearbeitet habe. Kenne teils die Befehle nur in C#.
Vermutlich etwas unübersichtlich, aber ich poste einfach mal alles.
Fehler bei denen ich nicht weiter komme sind in der Klasse (Function) speicherTextinArray als auch in berechneErgebnis.
Ist noch in der Ausprobierphase, daher auch mal was auskommentiert oder eventuell etwas überflüssiges dabei.
Hoffe jemand hat Ratschläge.
Grüße
ich wollte einen Taschenrechner programmieren und stoße auf einige Schwierigkeiten, da ich noch nie mit VBA gearbeitet habe. Kenne teils die Befehle nur in C#.
Visual Basic:
Public Sub class()
Dim berechnen As String
Dim PI As Double
Dim zahl1 As String
Dim zahlen As String
zahlen = 1234567890
Dim charArrayZeichen() As String
ReDim charArrayZeichen(50)
Dim intArrayZahlen() As Integer
ReDim intArrayZahlen(50)
'Private intArrayZahlen As Integer() = New Integer(49) {}
End Sub
Private Sub cmdKlammer1_Click()
txtBoxAnzeige.Text = txtBoxAnzeige.Text + "("
End Sub
Private Sub cmdKlammer2_Click()
txtBoxAnzeige.Text = txtBoxAnzeige.Text + ")"
End Sub
Private Sub cmdKommata_Click()
txtBoxAnzeige.Text = txtBoxAnzeige.Text + ","
End Sub
Private Sub cmdZahl0_Click()
txtBoxAnzeige.Text = txtBoxAnzeige.Text + "0"
End Sub
Private Sub cmdZahl1_Click()
txtBoxAnzeige.Text = txtBoxAnzeige.Text + "1"
End Sub
Private Sub cmdZahl2_Click()
txtBoxAnzeige.Text = txtBoxAnzeige.Text + "2"
End Sub
Private Sub cmdZahl3_Click()
txtBoxAnzeige.Text = txtBoxAnzeige.Text + "3"
End Sub
Private Sub cmdZahl4_Click()
txtBoxAnzeige.Text = txtBoxAnzeige.Text + "4"
End Sub
Private Sub cmdZahl5_Click()
txtBoxAnzeige.Text = txtBoxAnzeige.Text + "5"
End Sub
Private Sub cmdZahl6_Click()
txtBoxAnzeige.Text = txtBoxAnzeige.Text + "6"
End Sub
Private Sub cmdZahl7_Click()
txtBoxAnzeige.Text = txtBoxAnzeige.Text + "7"
End Sub
Private Sub cmdZahl8_Click()
txtBoxAnzeige.Text = txtBoxAnzeige.Text + "8"
End Sub
Private Sub cmdZahl9_Click()
txtBoxAnzeige.Text = txtBoxAnzeige.Text + "9"
End Sub
Private Sub cmdAddition_Click()
zahl1 = txtBoxAnzeige.Text
txtBoxAnzeige.Text = ""
txtBoxAnzeige.Text = zahl1 + "+" + txtBoxAnzeige.Text
berechnen = "addition"
End Sub
Private Sub cmdDivision_Click()
zahl1 = txtBoxAnzeige.Text
txtBoxAnzeige.Text = ""
txtBoxAnzeige.Text = zahl1 + "/" + txtBoxAnzeige.Text
berechnen = "division"
End Sub
Private Sub cmdMultiplikation_Click()
zahl1 = txtBoxAnzeige.Text
txtBoxAnzeige.Text = ""
txtBoxAnzeige.Text = zahl1 + "*" + txtBoxAnzeige.Text
berechnen = "multiplikation"
End Sub
Private Sub cmdSubtraktion_Click()
zahl1 = txtBoxAnzeige.Text
txtBoxAnzeige.Text = ""
txtBoxAnzeige.Text = zahl1 + "-" + txtBoxAnzeige.Text
berechnen = "subtraktion"
End Sub
Private Sub cmdWurzel_Click()
zahl1 = txtBoxAnzeige.Text
berechnen = "wurzel"
End Sub
Private Sub cmdQuadrieren_Click()
zahl1 = txtBoxAnzeige.Text
txtBoxAnzeige.Text = ""
txtBoxAnzeige.Text = zahl1 + "^2" + txtBoxAnzeige.Text
berechnen = "quadrieren"
End Sub
Private Sub cmdPotenzieren_Click()
zahl1 = txtBoxAnzeige.Text
txtBoxAnzeige.Text = ""
berechnen = "potenzieren"
End Sub
Private Sub cmdTangens_Click()
zahl1 = txtBoxAnzeige.Text
berechnen = "tangens"
End Sub
Private Sub cmdCosinus_Click()
zahl1 = txtBoxAnzeige.Text
berechnen = "cosinus"
End Sub
Private Sub cmdSinus_Click()
zahl1 = txtBoxAnzeige.Text
berechnen = "sinus"
End Sub
Private Sub cmdPI_Click()
'Zeigt die Zahl PI
PI = 3.14159265358979
txtBoxAnzeige.Text = PI
zahl1 = txtBoxAnzeige.Text
berechnen = "pi"
End Sub
Private Sub cmdDelte_Click()
txtBoxAnzeige.Text = ""
zahl1 = 0
End Sub
Private Sub cmdErgebnis_Click()
speichereTextInArray
'Wandelt die Textbox in Zahlen und mathematische Operatoren um
textBoxBerechnung.Text = textBoxBerechnung.Text + " = " + CStr(berechneErgebnis)
'Gibt das Ergebnis zusätzlich aus
End Sub
'Select Case berechnen
'Case "addition"
'txtBoxAnzeige.Text = CDbl(zahl1) + CDbl(txtBoxAnzeige.Text)
'Case "subtraktion"
'txtBoxAnzeige.Text = CDbl(zahl1) - CDbl(txtBoxAnzeige.Text)
'Case "multiplikation"
'txtBoxAnzeige.Text = CDbl(zahl1) * CDbl(txtBoxAnzeige.Text)
'Case "division"
'txtBoxAnzeige.Text = CDbl(zahl1) / CDbl(txtBoxAnzeige.Text)
'Case "wurzel"
'txtBoxAnzeige.Text = Math.Sqr(zahl1)
'Case "quadrieren"
'txtBoxAnzeige.Text = CDbl(zahl1) ^ 2
'Case "potenzieren"
'txtBoxAnzeige.Text = CDbl(zahl1) ^ CDbl(txtBoxAnzeige.Text)
'Case "tangens"
'txtBoxAnzeige.Text = Math.Tan(zahl1)
'Case "cosinus"
'txtBoxAnzeige.Text = Math.Cos(zahl1)
'Case "sinus"
'txtBoxAnzeige.Text = Math.Sin(zahl1)
'Case "pi"
'txtBoxAnzeige.Text = CDbl(PI) * CDbl(zahl1)
'End Select
Public Function speichereTextInArray()
Dim temporäreZahl As String
temporäreZahl = ""
Dim anzahlGespeicherterZahlen As Integer
anzahlGespeicherterZahlen = 0
'Laufvariable für das Zahlen-Array
Dim anzahlGespeicherterZeichen As Integer
anzahlGesepeicherterZeichen = 0
Dim intArrayZahlen() As Integer
ReDim intArrayZahlen(50)
Dim charArrayZeichen() As String
ReDim charArrayZeichen(50)
'Laufvariable für das Zeichen-Array
Dim i As Integer
For i = 0 To Len(txtBoxAnzeige.Text)
'Gehe Textbox durch
If InStr(zahlen, txtBoxAnzeige.Text) Then
'Wenn die Stelle eine Zahl ist
'Füge es der aktuellen "temporären" Zahl hinzu
temporäreZahl = temopräreZahl + txtBoxAnzeige.Text
Else
'Ansonsten
intArrayZahlen(anzahlGespeicherterZahlen) = "temporäreZahl"
'**Speichere temporäre Zahl im Array
anzahlGespeicherterZahlen = anzahlGespeicherterZahlen + 1
'Erhöhe die Laufvariable für die Zahlen, damit nächste Zahl an nächsten Index gepackt wird
temporäreZahl = ""
'Leere temporäre Zahl, damit im nachhinein die nächste Zahl darin gespeichert werden kann
charArrayZeichen(anzahlGespeicherterZeichen) = textBoxBerechnung.Text(i)
'Füge Zeichen dem Zeichen-Array hinzu
'Erhöhe Laufvariable für die Zeichen, damit nächstes Zeichen an nächsten Index gesetzt wird
anzahlGespeicherterZeichen = anzahlGespeicherterZeichen + 1
End If
Next i
intArrayZahlen(anzahlGespeicherterZahlen) = CDbl(temporäreZahl)
'Füge die letzte Zahl ins Zahlen-Array hinzu
'**Relevant, da bei der letzten Zahl die else-Bedingung nicht erreicht wird
End Function
Private Function berechneErgebnis() As Integer
'Rückgabewert int!
Dim ergebnis As Integer
ergebnis = intArrayZahlen(0)
'Ergebnis nimmt die erste Zahl aus dem Array an
'*Beispiel: 50 + 3 => Ergebnis = 50
Dim i As Interior
For i = 0 To Len(charArrayZeichen)
'Durchlaufe das ZEICHEN-Array
Select Case charArrayZeichen(i)
'Überprüfe das jeweilige Zeichen
Case "+"
'Wenn Zeichen plus ist
ergebnis = ergebnis + intArrayZahlen(i + 1)
'Ergebnis plus nächste Zahl aus dem Array
'*Beispiel => Ergebnis = 50 + 3 = 53
Case "-"
ergebnis = ergebnis - intArrayZahlen(i + 1)
Case "*"
ergebnis = ergebnis * intArrayZahlen(i + 1)
Case "/"
ergebnis = InlineAssignHelper(ergebnis, intArrayZahlen(i + 1))
End Select
Next i
'*Gebe 53 zurück
End Function
Vermutlich etwas unübersichtlich, aber ich poste einfach mal alles.
Fehler bei denen ich nicht weiter komme sind in der Klasse (Function) speicherTextinArray als auch in berechneErgebnis.
Ist noch in der Ausprobierphase, daher auch mal was auskommentiert oder eventuell etwas überflüssiges dabei.
Hoffe jemand hat Ratschläge.
Grüße
Zuletzt bearbeitet von einem Moderator: