#1 16. Mai 2008 Zuletzt von einem Moderator bearbeitet: 14. April 2017 Taschenrechner Guten Morgen! Ich habe schon alle Threads der SuFu durchgelsen, habe aber nichts hilfreiches gefunden. Ich bringe mir gerade selbst ein bisschen Programmieren in Access bei. Mein Ziel -> Ein Taschenrechner. Soweit klappt alles einigermaßen, aber ich habe noch 2 Probleme. 1. Wenn ich eine Zahl im Textfeld(txtAusgabefeld)eingebe, soll der jeweilige Knopf (bei einer "0" dementsprechend der Button "0"[cmdNull]) aktiviert werden(also so aussehen, als würde man ihn gerade drücken). 2. Wenn man mehrmals eine Rechenart(z.B. Addition)durchfürhen will, ohne dazwischen auf "=" zu klicken, klappt das leider nicht. Ich wäre euch seeehr dankbar, wenn ihr mir helfen würdet! Hier ist mal meine Datei. lg Chantal + Multi-Zitat Zitieren
#2 17. Mai 2008 AW: Taschenrechner Hab hier kein Access, kannst du das Projekt mal im VBA-Editor von Word 2003 erstellen und das hochladen? + Multi-Zitat Zitieren
#3 17. Mai 2008 Zuletzt von einem Moderator bearbeitet: 14. April 2017 AW: Taschenrechner Also ich weiß jetzt nicht was du mit "VBA - Editor von Word 2003" meinst, aber ich habe den Code einfach mal in ein Word Dokument kopiert.(habe Office 2007) Hier die Datei! lg Chantal + Multi-Zitat Zitieren
#4 18. Mai 2008 AW: Taschenrechner Ich mein den Editor, in den du über Extras -> Makro -> Visual Basic Editor kommst :] + Multi-Zitat Zitieren
#5 18. Mai 2008 AW: Taschenrechner Sry, aber ich finde das nicht unter Office 07...^^ Bw haste aber schon mal! lg Chantal + Multi-Zitat Zitieren
#6 18. Mai 2008 AW: Taschenrechner Schau mal hier! Ich hoffe mal, dass du weißt, wie man in dieses Menü kommt (ich konnte den "früheren Blog", in dem das beschrieben sein soll, nicht finden ) // Edit Hab mir den Code in der Word-Datei mal angeschaut. Ich würde es so machen: Du überprüfst einfach im KeyDown-Event von der Textbox txtAusgabe den KeyCode. Entsprechend des KeyCodes rufst du Addition, Division, Subtraktion oder Multiplikation auf (oder gar nichts, wenn keine dieser Tasten gedrückt wurde). Das würde dann so aussehen: Code: Private Sub txtAusgabe_KeyDown(KeyCode As Integer, Shift As Integer) Select Case KeyCode Case 106 '* Call cmdMultiplikation_Click Case 107 '+ Call cmdAddition_Click Case 109 '- Call cmdSubtraktion_Click Case 111 '/ Call cmdDivision_Click End Select End Sub Bei Druck auf Enter (KeyCode 13, wenn ich mich nicht irre) kannst du ja dann den Klick auf den =-Button aufrufen! Natürlich wäre es besser, Funktionen zu verwenden (z. B. SetRechenart), aber für den Anfang wird das genügen + Multi-Zitat Zitieren
#7 18. Mai 2008 AW: Taschenrechner Hier mal nen Link zu den verschiedenen KeyCode Konstanten Key Code-Konstanten für Visual Basic 6.0-Benutzer mfg + Multi-Zitat Zitieren
#8 18. Mai 2008 Zuletzt von einem Moderator bearbeitet: 14. April 2017 AW: Taschenrechner Also soweit ich das verstanden habe, ist dein Code dazu gut, dass man die Rechenarten(Addition,...)auch über die Tasten auf dem Keyboard und nicht nur über die Buttons im Programm aufrufen kann? Oder bedeutet "KeyDown" nicht die "Pfeiltaste runter", sondern dass der Button im Programm als gedrückt angezeit wird?^^ //Btw: Habe es jetzt mal in dem VBA Editor abgespeichert Klick Danke, Bw ist raus! + Multi-Zitat Zitieren
#9 18. Mai 2008 Zuletzt von einem Moderator bearbeitet: 14. April 2017 AW: Taschenrechner Richtig. Aber ich hab deine Frage falsch verstanden, wie ich grade seh KeyDown ist das Event, das aufgerufen wird, wenn eine Taste gedrückt wird. Danke, werds mir später oder morgen mal anschauen (und mir die Frage nochmal durchlesen, damit ich nicht wieder was falsches mach ) + Multi-Zitat Zitieren
#10 19. Mai 2008 AW: Taschenrechner Ok, ich habe aber noch mal eine Frage. Für was deklarierst du Shift? (Shift as Integer) Bei folgendem Code, wird der Button "0" ausgewählt, aber nicht gedrückt, da ich die Syntax dafür nicht kenne... Weißt du welchen Code ich schreiben könnte, damit die Taste kurz gedrückt wird und danach der Focus wieder auf dem Textfeld liegt? Das mit dem Focus müsste ja so gehen: "me.txtAusgabefeld.SetFocus" Code: Private Sub txtAusgabefeld_Keydown(Keycode As Integer, Shift As Integer) Select Case Keycode Case 48 cmdNull.SetFocus End Select End Sub Dann habe ich noch eine Frage. Wenn ich auf 2 Tastendrücken eine Funktion haben will(z.B. wenn man die normale "0" drückt und die "0" auf dem NumPad), kann ich das dann zusammenfassen(z.B. "Case 48, Case 96")? lg Chantal + Multi-Zitat Zitieren
#11 19. Mai 2008 AW: Taschenrechner Zur Frage 2 deines ersten Posts: Füg einfach diese drei Zeilen (mit der entsprechenden Rechenart) in die Click-Ereignisse der Rechen-Buttons (+, -, *, /) über den bisherigen Code ein: Code: If Not strZahl1 = "" Then Me.txtAusgabefeld = Addition(CDbl(strZahl1), CDbl(txtAusgabefeld)) End If Das war nicht ich, sondern VB So weit ich weiß, sagt die Variable Shift nur aus, ob die Shift-Taste gedrückt (1) oder nicht gedrückt (0) ist, wenn das KeyDown-Event aufgerufen wird. Das hätte ich mit der API SendMessage gelöst, aber da die Steuerelemente unter VBA keine Handles haben, fällt diese Möglichkeit aus. Du kannst aber das Click-Event des Buttons aufrufen: Code: Private Sub txtAusgabefeld_Keydown(Keycode As Integer, Shift As Integer) Select Case Keycode Case 48 cmdNull.SetFocus Call cmdNull_Click() End Select End Sub Nachteil: der Button wird grafisch nicht gedrückt. Ja, da schreibst du einfach die Cases nebeneinander: Code: Case "asd", "bla" Das würde dann sowohl auf "asd" als auch auf "bla" zutreffen! + Multi-Zitat Zitieren
#12 19. Mai 2008 AW: Taschenrechner Vielen vielen Dank für deine nette Hilfe! Leider habe ich immer noch ein paar Probleme-.- Weißt du ob das überhaupt möglich ist, dass die Buttons einfach nur grafisch gedrückt werden? Und wenn ich jetzt nur eine Rechenoperation(nehmen wir mal "+")hintereinander ausführe(ohne auf "=" zu gehen), klappt das einwandfrei. Aber sobald ich dann auf eine andere Rechenoperation gehe passiert folgendes: Z.B. 4 + 2 - 4 = -2 Grund: Nachdem ich auf das Minus geklickt habe, zieh er schon die "2" von der 1. "4" ab und danach zieht er noch mal die 2. "4" ab. Sry für die vielen Anforderungen^^aber danach ist es ja geschafft! Eine Bw kann ich dir leider noch nicht wieder geben... lg Chantal + Multi-Zitat Zitieren
#13 19. Mai 2008 AW: Taschenrechner Lassen sich deinen Buttons Hotkeys zuweisen? Dann kannst du das nämlich darüber steuern und der Rechen-"String" wird dann jeweils um den gedrückten Button erweitert oder sowas... hab mich mit VB bisher noch nicht beschäftigt. Eingabe erfolgt dann nicht mehr über ein Textfeld sondern Hotkeys/Buttonklick. + Multi-Zitat Zitieren
#14 20. Mai 2008 Zuletzt von einem Moderator bearbeitet: 14. April 2017 AW: Taschenrechner Ich wüsste nicht, wie das mit den Hotkeys gehen sollte, aber die Eingabe sollte über die Buttons und über das Textfeld(Tastatureingabe)möglich sein. lg Chantal //Das mit dem "Select Case", bzw. mit "Call (z.B.)cmdAddition_Click" funktioniert nicht so richtig. Wenn ich auf den Knopf "+" klicke, schreibt er die Zahl des Textfeldes in die Variable "strZahl1". Aber wenn über "Select Case" den Knopf "+" aktiviere, schreibt er die Zahl nicht in die Variable. Also klappt das Rechnen mit der Tastatureingabe leider nicht so-.- Ich habe den bisherigen Code noch mal hochgeladen. Klick. lg Chantal + Multi-Zitat Zitieren
#15 20. Mai 2008 AW: Taschenrechner rechne das ergebnis auch bei +-/* auch aus. dann hast des problem nimmer das sowas ned geht: 1+2-1 dazu legst du dir ne neue globale var an, zb: boolean rechneBeiAktion = false wenn dann eine zahl angegeben wurde kannst die var auf true setzen und bei der nächsten zahl das rechnen anfangen. + Multi-Zitat Zitieren
#16 20. Mai 2008 AW: Taschenrechner Sorry Murdoc, aber ich habe dein Post nur bis zu, 2. Absatz verstanden...^^ Ich kann noch nicht so viel in Richtung programmieren...daher weiß ich nicht, wie ich den 3. Absatz programmieren könnte. lg Chantal //Also müsste dieser Code: Code: Private Sub cmdAddition_Click() If Not strZahl1 = "" Then Me.txtAusgabefeld = Addition(CDbl(strZahl1), CDbl(txtAusgabefeld)) End If strZahl1 = txtAusgabefeld Me.txtAusgabefeld = "" strRechenart = "Addition" Me.txtAusgabefeld.SetFocus End Sub Dann so aussehen?: Code: Private Sub cmdAddition_Click() If Not strZahl1 = "" Then blnRechneBeiAktion = False Elseif blnRechneBeiAktion = True Then strZahl1 = txtAusgabefeld strRechenart = "Addition" Me.txtAusgabefeld = Addition(CDbl(strZahl1), CDbl(txtAusgabefeld)) Me.txtAusgabefeld = "" Me.txtAusgabefeld.SetFocus End If End Sub Oder setzt der blnRechneBeiAktion nicht automatisch auf True, wenn er es nicht auf False setzt? + Multi-Zitat Zitieren