tutorials.de Buch-Aktion 05/2012
Seite 1 von 3 123 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
30
ZUGRIFFE
2081
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    psycoshooter psycoshooter ist offline Mitglied
    Registriert seit
    Feb 2011
    Beiträge
    18
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    
    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
     

  2. #2
    Avatar von tombe
    tombe tombe ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2004
    Ort
    Möglingen (BaWü)
    Beiträge
    3.109
    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?
     
    Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.

    Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.

  3. #3
    psycoshooter psycoshooter ist offline Mitglied
    Registriert seit
    Feb 2011
    Beiträge
    18
    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 ,,
     

  4. #4
    Avatar von tombe
    tombe tombe ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2004
    Ort
    Möglingen (BaWü)
    Beiträge
    3.109
    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

    Code vb:
    1
    
    Liste.Additem txtErgebnis.Text
     
    Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.

    Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.

  5. #5
    psycoshooter psycoshooter ist offline Mitglied
    Registriert seit
    Feb 2011
    Beiträge
    18
    Danke, nun ist es auch möglich die ganze gleichung da reinzubringen also das da dann schluss entlich steht 2+2=4 ?
    Geändert von psycoshooter (22.02.11 um 12:17 Uhr)
     

  6. #6
    Avatar von tombe
    tombe tombe ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2004
    Ort
    Möglingen (BaWü)
    Beiträge
    3.109
    Code vb:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    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.
     
    Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.

    Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.

  7. #7
    psycoshooter psycoshooter ist offline Mitglied
    Registriert seit
    Feb 2011
    Beiträge
    18
    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
     

  8. #8
    Avatar von tombe
    tombe tombe ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2004
    Ort
    Möglingen (BaWü)
    Beiträge
    3.109
    Ich habe das jetzt bei mir teilweise mal nachgebaut. Die Prozedur die aufgerufen wird wenn auf "=" geklickt wird sieht bei mir so aus:


    Code vb:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    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
     
    Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.

    Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.

  9. #9
    psycoshooter psycoshooter ist offline Mitglied
    Registriert seit
    Feb 2011
    Beiträge
    18
    '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 ....
     

  10. #10
    Avatar von tombe
    tombe tombe ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2004
    Ort
    Möglingen (BaWü)
    Beiträge
    3.109
    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:

    Code vb:
    1
    
    ListBox1.AddItem CDbl(Zahl1) & " " & (Rechenart) & " " & CDbl(txtErgebnis) & " = " & CDbl(DEINE_ERGEBNISVARIABLE)

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

    Code vb:
    1
    
    txtErgebnis = CDbl(DEINE_ERGEBNISVARIABLE)
     
    Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.

    Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.

  11. #11
    psycoshooter psycoshooter ist offline Mitglied
    Registriert seit
    Feb 2011
    Beiträge
    18
    Super jetzt gehts mir is grad klar geworden das ich immer zweimal die txtErgebnis verwendet habe Danke schonmal Herzlichst

    Fals du noch magst: noch die frage -->
    Wie bringe ich das hin das ich mit 3 Zahlen rechnen kann also 1 + 1 + 1, da müsste doch noch eine Dritte Variable sein für die 3te Zahl aber wie ich das machen soll is mir unklar, da er ja dann immer 3 zahlen verlangt

    Wie gesagt bin neu in dem gebiet
     

  12. #12
    Avatar von tombe
    tombe tombe ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2004
    Ort
    Möglingen (BaWü)
    Beiträge
    3.109
    So ein Taschenrechner ist gar nicht so einfach wie man sich das vielleicht vorstellt.

    Wenn du das jetzt mit einer dritten Variablen versiehst, willst du bald mit 4 Zahlen rechnen, dann mit 5, dann mit 6, ...
    Mit einer festen Anzahl von Variablen pro Zahl/Rechenart macht das so keinen Sinn. Du musst hier mit Arrays arbeiten.

    In meinem Beispiel gibt es nur die Zahlen 1 - 6 und die Rechenarten Plus und Minus aber das kannst du ja für dich entsprechend erweitern.

    Hier mal der komplette Code:

    Code vb:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    
    'diese Variablen müssen als Array jedoch ohne Dimension deklariert werden
    Dim art()
    Dim zahl()
     
    Private Sub cb1_Click()
    lblErgebnis.Caption = lblErgebnis.Caption & "1"
    End Sub
     
    Private Sub cb2_Click()
    lblErgebnis.Caption = lblErgebnis.Caption & "2"
    End Sub
     
    Private Sub cb3_Click()
    lblErgebnis.Caption = lblErgebnis.Caption & "3"
    End Sub
     
    Private Sub cb4_Click()
    lblErgebnis.Caption = lblErgebnis.Caption & "4"
    End Sub
     
    Private Sub cb5_Click()
    lblErgebnis.Caption = lblErgebnis.Caption & "5"
    End Sub
     
    Private Sub cb6_Click()
    lblErgebnis.Caption = lblErgebnis.Caption & "6"
    End Sub
     
    Private Sub cbClear_Click()
    lblErgebnis.Caption = ""
     
    'die Arrays zurücksetzen
    ReDim art(0)
    ReDim zahl(0)
    End Sub
     
    Private Sub cbGleich_Click()
    'neu dimensionieren und letzte Zahl zuweisen
    ReDim Preserve zahl(UBound(zahl) + 1)
    zahl(UBound(zahl)) = lblErgebnis.Caption
    lblErgebnis.Caption = ""
    'ersten Teil der Formel erstellen
    formel = zahl(1) & " "
    'erste Zahl zur Berechnung an Variable übergeben
    ergebnis = zahl(1)
     
    'in Schleife alle weiteren Zahle und Rechenarten durchlaufen und den Variablen
    ergebnis und formel entsprechend übergeben
    For a% = 2 To UBound(zahl)
        If art(a% - 1) = "+" Then
            ergebnis = ergebnis + CDbl(zahl(a%))
        ElseIf art(a% - 1) = "-" Then
            ergebnis = ergebnis - CDbl(zahl(a%))
        End If
        formel = formel & art(a% - 1) & " " & zahl(a%) & " "
    Next a%
     
    'an die Formel das "=" und das tatsächliche Ergebnis anhängen und in Liste eintragen
    formel = formel & " = " & ergebnis
    LstFormel.AddItem formel
    'Ergebnis in Textfeld eintragen
    lblErgebnis.Caption = ergebnis
     
    'Arrays auf die Dimension 0 setzen
    End Sub
     
    Private Sub cbMinus_Click()
     
    ReDim Preserve art(UBound(art) + 1)
     
    art(UBound(art)) = "-"
    ReDim Preserve zahl(UBound(zahl) + 1)
    zahl(UBound(zahl)) = lblErgebnis.Caption
    lblErgebnis.Caption = ""
     
    End Sub
     
    Private Sub cbPlus_Click()
     
    ReDim Preserve art(UBound(art) + 1)
     
    art(UBound(art)) = "+"
    ReDim Preserve zahl(UBound(zahl) + 1)
    zahl(UBound(zahl)) = lblErgebnis.Caption
    lblErgebnis.Caption = ""
     
    End Sub
     
    Private Sub UserForm_Activate()
     
    ReDim art(0)
    ReDim zahl(0)
     
    End Sub

    Hoffe mal ich habe es so beschrieben das du verstehst wie es gemeint ist.
     
    Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.

    Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.

  13. #13
    psycoshooter psycoshooter ist offline Mitglied
    Registriert seit
    Feb 2011
    Beiträge
    18
    Super, ich setzt mich mal dahinter ich danke dir für all deine mühe und deine Hilfe.
    Ohne dich wäre ich jetzt ziemlich aufgeschmissen.

    Danke
     

  14. #14
    psycoshooter psycoshooter ist offline Mitglied
    Registriert seit
    Feb 2011
    Beiträge
    18
    HAMMER GEIL einfach derbst hab solche freude das es geht

    1.
    Was noch geil wäre wenn er den Display nicht leert wen man auf den Operator klickt also das er das Display erst wieder leert nach dem ich eine zweite Zahl eingebe oder das Gleich drücke.

    2. Last but not least
    Mit Klammern rechnen
    (3+3) * (3+3) = 36
    Geändert von psycoshooter (23.02.11 um 14:27 Uhr)
     

  15. #15
    Avatar von tombe
    tombe tombe ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2004
    Ort
    Möglingen (BaWü)
    Beiträge
    3.109
    Mist habe meinen Recner geschlossen und nicht gespeichert. Deshalb jetzt mal eine Idee aus dem Kopf.

    Du deklarierst im allgemeinen Teil eine zusätzliche Variable "clear" und weißt im im UserForm_Activate-Ereignis den Wert FALSE zu.

    Bei allen Rechenarten änderst du den Wert von "clear" auf TRUE und bei allen Click-Ereignissen der einzelnen Zahlen prüfst du diesen Wert.

    Code vb:
    1
    2
    3
    4
    
    If clear = True Then
       lblErgebnis.Caption = ""
       clear = False
    End If

    Dann musst du nur noch an den Stellen an denen der Inhalt nicht gelöscht werden soll den entsprechenden Code löschen.

    Das sollte so klappen. Ist aber wie gesagt jetzt nur aus dem Kopf und nicht getestet.
     
    Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.

    Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.

Ähnliche Themen

  1. taschenrechner
    Von Michi2610 im Forum Javascript & Ajax
    Antworten: 4
    Letzter Beitrag: 03.12.07, 19:36
  2. Taschenrechner mit C
    Von psytekk im Forum C/C++
    Antworten: 6
    Letzter Beitrag: 10.09.07, 18:57
  3. Taschenrechner mit VB 6
    Von atlantyz im Forum Visual Basic 6.0
    Antworten: 7
    Letzter Beitrag: 29.04.07, 11:11
  4. taschenrechner
    Von smista im Forum Borland CBuilder und VCL
    Antworten: 0
    Letzter Beitrag: 11.11.05, 15:04
  5. taschenrechner mit vb
    Von computers im Forum Visual Basic 6.0
    Antworten: 5
    Letzter Beitrag: 24.10.03, 10:11