VBA Taschenrechner mit Listbox


tombe

Erfahrenes Mitglied
Ok, ich teste hier mit den UserForms von Excel. Wenn du nicht aktueller als Word/Office 2000 bist, dann stelle die Datei mal hier rein.

Könnte einen anderen Grund haben den ich so jetzt nicht finde.
 

psycoshooter

Grünschnabel
Ok also das mit den Klammern funtzt in Excel
war wol das problem...

aber die Zahlen werden immernoch vom Display gelöscht wenn man einen Operator drückt...
 

tombe

Erfahrenes Mitglied
Dann steht bei "+", "-", "*" und/oder "/" irgendwo noch lblErgebnis.Caption = "" drin wo es nicht hingehört.

Bei mir klappt es so:

Visual Basic:
Private Sub cbMal_Click()
'zuerst die Zahl übernehmen
ReDim Preserve wert(UBound(wert) + 1)
wert(UBound(wert)) = lblErgebnis.Caption
'dann dieses Zeichen
ReDim Preserve wert(UBound(wert) + 1)
wert(UBound(wert)) = "*"
clear = True
End Sub
 

psycoshooter

Grünschnabel
So der Rechner ist nun für mich fertig.. danke dir für alles :)

jetzt wollte ich di
ch mal fragen ob du irgend ne HP kennst wo folgende befehle beschrieben sind da wir das VBA programm noch dokumentieren müssen:

art(a% - 1) vorallem das a% - 1
zahl(UBound(zahl)) = lblErgebnis.Caption vorallem UBound

oder kannst du mir diese kurz und bündig beschreiben was diese befehle genau machen
 

tombe

Erfahrenes Mitglied
Also die UBound Anweisung sollte in der Excel Hilfe beschrieben sein, aber egal.

Normalerweise ist ein Array mit einer bestimmten "Größe" definiert.

Visual Basic:
Dim variable(5)

Mit Redim kann es neu dimensioniert und die Größe verändert werden. Nimmt man dann noch Preserve dazu, bleiben die bereits im Array enthaltenen Werte erhalten.

Visual Basic:
'zuerst ohne Wert deklarieren
Dim variable()
'neue Dimension festlegen, Werte gehen verloren
Redim variable(5)
'nochmal neue Dimension, Werte bleiben erhalten
Redim Preserve variable(10)


Mit a% -1 wird einfach der Zeiger des Arrays entsprechend verändert.
 

psycoshooter

Grünschnabel
Hey

Habe doch noch ein Problem beim Calc

Die Rechen weise mit einer Division durch 0 ist ja Unzulässig,,, wie kann ich diese mit einer MSG box erläutern und den Sub dann verlassen ?

ansonsten will er das immer Debuggen

Danke ;)
 

tombe

Erfahrenes Mitglied
Wenn du keine gezielte Fehlerbehandlung willst, kannst du es so lösen

Visual Basic:
Sub irgendwas()
On Error Goto fehler
'hier der eigentliche Code
Exit Sub
fehler:
MsgBox Err.Description
End Sub

Diesen Code trägst du überall dort ein wo eventuell Fehler entsehen können. Wenn du bestimmte Fehler besonders behandeln willst, kannst du in einem IF-Block prüfen welcher Fehler aufgetreten ist indem du Err.Number prüfst.
 

psycoshooter

Grünschnabel
Hey, Wollte dich mal noch fragen was er hier genau macht:

Private Sub cbGleich_Click()
'Zahl übernehmen und eintragen
ReDim Preserve zahl(UBound(zahl) + 1)
zahl(UBound(zahl)) = lblErgebnis.Caption

For a% = 1 To UBound(zahl)
formel = formel & zahl(a%)
Next a%

Vorallem die For Next schlaufe versteh ich ned :) Fals der Lehrer fragt
 

tombe

Erfahrenes Mitglied
Na das ist ja was ganz neues "...Falls der Lehrer fragt..."

Ich dachte du machst das für dich privat und nicht weil ihr es in der Schule als Aufgabe gestellt bekommt. Zu helfen ist eine Sache aber die "Hausaufgaben" zu lösen eine andere :mad: !


Die SUB wird dann aufgerufen wenn auf "=" geklickt wird.
Was "ReDim Preserve" und "UBound" machen habe ich dir ja oben schon erklärt, das sollte also klar sein.

Dem Array "zahl" werden alle Werte (Zahlen, Operatoren, Klammern, ...) übergeben die zum Rechnen verwendet werden. In der FOR/NEXT Schleife wird dann einfach durch aneinanderreihen dieser Werte die Formel gebildet um sie in das Listenfeld einzutragen.
 

Neue Beiträge

Forum-Statistiken

Themen
272.359
Beiträge
1.558.621
Mitglieder
187.832
Neuestes Mitglied
SirrDansen