VBA Taschenrechner mit Listbox

psycoshooter

Grünschnabel
Hallo zusammen

Ich bin momentan gerade ein bisschen am anschlag und zwar habe ich meinen Taschenrechner fertig Programmiert mit VBA und wollte nun noch eine Listbox erstellen die folgendes Beinhaltet: "Zahl" "Operator" "Zahl" = "Ergebnis" also z.B 2 + 2 = 4

bitte helft mir.. danke :)

Code:
Dim Zahl1 As String
Dim Rechenart As String

Private Sub cmd0_Click()
        txtErgebnis = txtErgebnis + "0"
    'Display = Display + 0
End Sub

Private Sub cmd1_Click()
        txtErgebnis = txtErgebnis + "1"
    'Display = Display + 1
End Sub

Private Sub cmd2_Click()
        txtErgebnis = txtErgebnis + "2"
    'Display = Display + 2
End Sub

Private Sub cmd3_Click()
        txtErgebnis = txtErgebnis + "3"
    'Display = Display + 3
End Sub

Private Sub cmd4_Click()
        txtErgebnis = txtErgebnis + "4"
    'Display = Display + 4
End Sub

Private Sub cmd5_Click()
        txtErgebnis = txtErgebnis + "5"
    'Display = Display + 5
End Sub

Private Sub cmd6_Click()
        txtErgebnis = txtErgebnis + "6"
    'Display = Display + 6
End Sub

Private Sub cmd7_Click()
        txtErgebnis = txtErgebnis + "7"
    'Display = Display + 7
End Sub

Private Sub cmd8_Click()
        txtErgebnis = txtErgebnis + "8"
    'Display = Display + 8
End Sub
Private Sub cmd9_Click()
        txtErgebnis = txtErgebnis + "9"
    'Display = Display + 9
End Sub
Private Sub cmdKomma_Click()
        txtErgebnis = txtErgebnis + "."
    'Display = Display + .
End Sub

                'Nun kommen die Rechenarten
            
Private Sub cmdPlus_click()
        Zahl1 = txtErgebnis
    'die Variable soll genau den Wert des Displays erhalten
        Rechenart = "addieren"
    'Variable "Rechenart" soll den Wert "addieren" erhalten
        txtErgebnis = ""
    'Display leeren
End Sub

Private Sub cmdMinus_click()
        Zahl1 = txtErgebnis
    'die Variable soll genau den Wert des Displays erhalten
        Rechenart = "subtrahieren"
    'Variable "Rechenart" soll den Wert "subtrahieren" erhalten
        txtErgebnis = ""
    'Display leeren
End Sub

Private Sub cmdGeteilt_click()
        Zahl1 = txtErgebnis
    'die Variable soll genau den Wert des Displays erhalten
        Rechenart = "dividieren"
    'Variable "Rechenart" soll den Wert "dividieren" erhalten
        txtErgebnis = ""
    'Display leeren
End Sub

Private Sub cmdMal_click()
        Zahl1 = txtErgebnis
    'die Variable soll genau den Wert des Displays erhalten
        Rechenart = "multiplizieren"
    'Variable "Rechenart" soll den Wert "multiplizieren" erhalten
        txtErgebnis = ""
    'Display leeren
End Sub

Private Sub cmdHoch_click()
        Zahl1 = txtErgebnis
    'die Variable soll genau den Wert des Displays erhalten
        Rechenart = "potenzieren"
    'Variable "Rechenart" soll den Wert "potenzieren" erhalten
        txtErgebnis = ""
    'Display leeren
End Sub

                'Hiermit wird alles gelöscht
                
Private Sub cmdClear_click()
        txtErgebnis = ""
        Zahl1 = ""
    'Variable und Display löschen
End Sub
                'Hier kommt die eigentliche Rechnung
                
Private Sub cmdGleich_click()
    If Rechenart = "addieren" Then
        txtErgebnis = CDbl(Zahl1) + CDbl(txtErgebnis)
    'mit cdbl() wird der jeweilige Inhalt in Zahlen umgewandelt
    ElseIf Rechenart = "subtrahieren" Then
        txtErgebnis = CDbl(Zahl1) - CDbl(txtErgebnis)
    ElseIf Rechenart = "multiplizieren" Then
        txtErgebnis = CDbl(Zahl1) * CDbl(txtErgebnis)
    ElseIf Rechenart = "dividieren" Then
        txtErgebnis = CDbl(Zahl1) / CDbl(txtErgebnis)
    ElseIf Rechenart = "potenzieren" Then
        txtErgebnis = CDbl(Zahl1) ^ CDbl(txtErgebnis)
    End If
End Sub

Private Sub ListBox1_Click()

ListBox1.AddItem "cmdGleich", ["Zahl1" & "Rechenart" & "txtErgebnis"]
End Sub
 
Ich versteh nicht so ganz was du haben willst.

Es soll das dargestellt werden was du zum Berechnen eingibst oder? Wieso dann aber eine Listbox?
 
Ich will, dass wen ich z.B 5+5 = 10 rechne und dan C drücke (Reset) das dan das in der listbox angezeigt wird.. also sozusagen die vorher gerechnete gleichung,,,

dann kann ich nähmlich weiterrechnen und sehe rechts die vorher gerechnete aufgabe :)

________________________________________
was auch noch ist.. vieleicht weisst du gerade warum.. beim Hoch rechnen--> 2 hoch 2 ergibt 4 das stimmt auch bei meinem rechner
3 hoch 3 ergibt bei meinem rechner aber schon 27 sollte aber 9 ergeben ,,
 
Wenn ich das richtig sehe, dann steht in "txtErgebnis" ja immer die aktuelle "Formel".

Dann kannst du entweder beim Klick auf "C" oder auch auf "=" folgenden Code schreiben

Visual Basic:
Liste.Additem txtErgebnis.Text
 
Danke, nun ist es auch möglich die ganze gleichung da reinzubringen also das da dann schluss entlich steht 2+2=4 ?
 
Zuletzt bearbeitet:
Visual Basic:
Private Sub cmdGleich_click()
'Inhalt von txtErgebnis zwischenspeichern
formel = txtErgebnis

    If Rechenart = "addieren" Then
        txtErgebnis = CDbl(Zahl1) + CDbl(txtErgebnis)
    'mit cdbl() wird der jeweilige Inhalt in Zahlen umgewandelt
    ElseIf Rechenart = "subtrahieren" Then
        txtErgebnis = CDbl(Zahl1) - CDbl(txtErgebnis)
    ElseIf Rechenart = "multiplizieren" Then
        txtErgebnis = CDbl(Zahl1) * CDbl(txtErgebnis)
    ElseIf Rechenart = "dividieren" Then
        txtErgebnis = CDbl(Zahl1) / CDbl(txtErgebnis)
    ElseIf Rechenart = "potenzieren" Then
        txtErgebnis = CDbl(Zahl1) ^ CDbl(txtErgebnis)
    End If

'Formel und Ergebnis in Liste eintragen
ListBox1.Additem formel & " = " & txtErgebnis
End Sub

Wenn du das dann später wieder auslesen willst, musst du alles rechts vom "=" abschneiden.

Ungetestet, aber sollte so gehen.
 
He He jetzt haben wirs dan gleich ;)

nun steht einfach 1 = 2 bei der rechnung 1 + 1 = 2 ^^ weisste an was das liegt ? er nimmt irgendwie nur eine der beiden zahlen
 
Ich habe das jetzt bei mir teilweise mal nachgebaut. Die Prozedur die aufgerufen wird wenn auf "=" geklickt wird sieht bei mir so aus:


Visual Basic:
Private Sub cbGleich_Click()
If art = "+" Then
    ergebnis = CDbl(zahl) + CDbl(lblErgebnis.Caption)
ElseIf art = "-" Then
    ergebnis = CDbl(zahl) - CDbl(lblErgebnis.Caption)
End If

lstBox.AddItem CDbl(zahl) & " " & art & " " & CDbl(lblErgebnis.Caption) & " = " & CDbl(ergebnis)
lblErgebnis.Caption = ergebnis
zahl = 0
End Sub

"art" ist das Rechenzeichen
"ergebnis" ist zum Zwischenspeichern des Ergebnisses
"zahl" enthält die zuerst eingegebene Zahl
 
'Hier kommt die eigentliche Rechnung
Private Sub cmdGleich_click()

'Inhalt von txtErgebnis zwischenspeichern
formel = txtErgebnis

If Rechenart = "+" Then
txtErgebnis = CDbl(Zahl1) + CDbl(txtErgebnis)

'mit cdbl() wird der jeweilige Inhalt in Zahlen umgewandelt
ElseIf Rechenart = "-" Then
txtErgebnis = CDbl(Zahl1) - CDbl(txtErgebnis)

ElseIf Rechenart = "*" Then
txtErgebnis = CDbl(Zahl1) * CDbl(txtErgebnis)

ElseIf Rechenart = "/" Then
txtErgebnis = CDbl(Zahl1) / CDbl(txtErgebnis)

ElseIf Rechenart = "xX" Then
txtErgebnis = CDbl(Zahl1) ^ CDbl(txtErgebnis)

End If

'Formel und Ergebnis in Liste eintragen
ListBox1.AddItem CDbl(Zahl1) & " " & (Rechenart) & " " & CDbl(txtErgebnis) & " = " & CDbl(txtErgebnis)
End Sub


Hmm entweder zu müde oder eifach zu dumm bis jetzt immer mehr erfolg
Rechnung: 1 + 1 = 2
Anzeige in Listbox 1 + 2 = 2
das heisst der nimmt das Ergebnis auch als zweitzahl ....
 
Du darfst das Ergebnis nicht gleich dem Textfeld "txtErgebnis" zuweisen sondern musst es in einer Variablen zwischenspeichern (siehe mein Beispiel und die Variable "ergebnis").

Dann erstellst du die Formel und trägst sie in die Liste ein:

Visual Basic:
ListBox1.AddItem CDbl(Zahl1) & " " & (Rechenart) & " " & CDbl(txtErgebnis) & " = " & CDbl(DEINE_ERGEBNISVARIABLE)

und dann trägst du das Ergebnis in das Text-/Bezeichnungsfeld ein:

Visual Basic:
txtErgebnis = CDbl(DEINE_ERGEBNISVARIABLE)
 
Zurück