![]() |
Anzeige:
|
|
|||||||
| Visual Basic, Visual Basic.NET Alles zum Thema - Visual Basic und Visual Basic.NET
Fragen zu VBA bitte in das Forum Office-Anwendungen posten! |
|
![]() |
|
|
LinkBack | Themen-Optionen | Ansicht |
|
|
#1 (Direktlink) |
|
Weiß worum´s geht
![]() Registriert seit: 22.01.2009
Beiträge: 235
|
Hi an alle. ich mache gerade ein Praktikum als Fachinformatiker. Ich hab heut damit anfangen müssen, einen taschenrechner mit visual basic zu programmieren. ich hab schon ein bisschen erfahrung in dem programm.
ich hab jetz mal angefangen mit dem aussehen, und hab den tasten schon funktionen hinzugefügt. also, dass wenn man z.b. auf 1 klickt, dass es in einem textfeld auch 1 hinschreibt, usw. und jetz hab ich leider keine ahnung, wie man den taschenrechner dazu bringt, dass er sich die zahlen merkt und, dass er es auch noch ausrechnet. wär echt nett, wenn mir jemand helfen könnte ps: es reicht, wenn die Addition funktioniert so sieht mein taschenrechner aus: und so sieht mein Quelltext bis jetzt aus: Private Sub cb_g_Click() 'teilen zeichen End Sub Private Sub cb_i_Click() '"Ist gleich" zeichen End Sub Private Sub cb_m_Click() 'mal zeichen End Sub Private Sub cb_mi_Click() 'minus zeichen End Sub Private Sub cb_p_Click() 'plus zeichen End Sub Private Sub cb0_Click() 'Ziffer 0 Label1.Caption = 0 End Sub Private Sub cb1_Click() 'Ziffer 1 Label1.Caption = 1 End Sub Private Sub cb2_Click() 'Ziffer 2 Label1.Caption = 2 End Sub Private Sub cb3_Click() 'Ziffer 3 Label1.Caption = 3 End Sub Private Sub cb4_Click() 'Ziffer 4 Label1.Caption = 4 End Sub Private Sub cb5_Click() 'Ziffer 5 Label1.Caption = 5 End Sub Private Sub cb6_Click() 'Ziffer 6 Label1.Caption = 6 End Sub Private Sub cb7_Click() 'Ziffer 7 Label1.Caption = 7 End Sub Private Sub cb8_Click() 'Ziffer 8 Label1.Caption = 8 End Sub Private Sub cb9_Click() 'Ziffer 9 Label1.Caption = 9 End Sub Private Sub Label1_Click() 'Textfeld End Sub bitte ich brauch hilfe... danke schonmal im vorraus
__________________
![]() |
|
|
|
|
|
|
#2 (Direktlink) |
|
Weiß worum´s geht
![]() Registriert seit: 11.02.2009
Ort: Hagen, Westf.
Alter: 41
Beiträge: 171
|
Hallo Tequila99,
da ich mit meinem neuen Laptop Vista fahre ist mir der Zugang zu Visual Basic 6 leider nicht mehr möglich. Habe das Problem mir mal unter VBA durch den Kopf gehen lassen und für eine einfache Addition folgen Code durchgespielt (funktioniert musst Du aber auf Deinen Code anpassen). Wie gewünscht ein Beispiel für die Addition von zwei Zahlen. ' ------------------------------------------------------------------ Dim ZahlMerker As Integer ' wird benötigt um die 1.Zahl zu merken Dim RechMerker As String ' wird benötigt um die Rechenart zu merken ' ------------------------------------------------------------------ Private Sub cmd3_Click() lbl1.Caption = "3" End Sub ' --------------------------------------------------------- Private Sub cmd1_Click() lbl1.Caption = "1" End Sub ' --------------------------------------------------------- Private Sub cmd2_Click() lbl1.Caption = "2" End Sub ' --------------------------------------------------------- Private Sub cmd4_Click() lbl1.Caption = "4" End Sub ' --------------------------------------------------------- Private Sub cmd5_Click() lbl1.Caption = "5" End Sub ' --------------------------------------------------------- Private Sub cmd6_Click() lbl1.Caption = "6" End Sub ' --------------------------------------------------------- Private Sub cmd7_Click() lbl1.Caption = "7" End Sub ' --------------------------------------------------------- Private Sub cmd8_Click() lbl1.Caption = "8" End Sub ' --------------------------------------------------------- Private Sub cmd9_Click() lbl1.Caption = "9" End Sub ' --------------------------------------------------------- Private Sub cmdGleich_Click() Select Case RechMerker Case "+" lbl1.Caption = ZahlMerker + Val(lbl1.Caption) End Select End Sub ' --------------------------------------------------------- Private Sub cmdplus_Click() ZahlMerker = Val(lbl1.Caption) RechMerker = "+" lbl1.Caption = "" End Sub Wenn ich Dir damit helfen konnte, bitte schön. Gruß Sascha
__________________
Wer ein Problem erkennt, und nichts zu seiner Beseitigung unternimmt, der ist möglicherweise ein Teil dieses Problems. Besucht mich auf meiner HP: http:\\www.saolha.bplaced.net |
|
|
|
|
|
#3 (Direktlink) |
|
Dauergast
Registriert seit: 28.11.2008
Beiträge: 1.197
|
hi,
ein Label als Zahlenausgabe ist aber eher ungeeignet du möchtest doch damit rechnen nimm besser ne Textbox, die läßt sich besser formatieren zum Zahl merken gibt es die Tag Eigenschaft hier ein Beispiel http://www.planet-source-code.com/vb...31260&lngWId=1 Geändert von Jochen2011 (17.06.2009 um 21:40 Uhr) |
|
|
|
|
|
#4 (Direktlink) |
|
Weiß worum´s geht
![]() Registriert seit: 22.01.2009
Beiträge: 235
|
Hey danke Sascha. jetzt müsste es noch so sein, dass man mehrere Zahlen eintragen kann. wie kann ich diese Funktion noch dazu machen?
__________________
![]() |
|
|
|
|
|
#5 (Direktlink) |
|
Weiß worum´s geht
![]() Registriert seit: 23.11.2008
Beiträge: 104
|
Hallo liebe Community
Erstmal ein Nasenrümpfer Dein Vorgestellter Code ist als solcher nicht vorhanden,schöner wäre es gewesen wenn du einen Ansatz fomuliert hättest und zur Ergänzung dann in einem Forum fragst ! Hier mal ein Ansatz mit Excel 2000 VB,du weisst das das ein größeres Projekt ist und mindestens 1-2 Tage intensivste Arbeit erfordert(bei Profis) Habe jetzt schon festgestellt das die Fehlerroutine das größte Modul sein wird. Liebe Grüße euer Tanto Meine Idee dazu war, Zahlen wie Operanden jeweils zu Isolieren und in ein Array zu legen,beachte aber das Operanden auch vorangestellt werden dürfen,habe aber weitere Arbeit eingestellt,ist zu umfangreich Code:
Sub Gleich()
ReDim DatZahlen(0) As String
ReDim DatOP(0) As String
'prüfung auf falsche zeichen,auf mehrfache fehlt noch
For Zeichen = 1 To Len(Cells(4, 4))
If Mid(Cells(4, 4), Zeichen, 1) Like "0-9+-*/" = True Then
Lager = Lager + Cells(4, 4)
End If
Next Zeichen
For Zeichen = 1 To Len(Cells(4, 4))
'Zahlen Isolieren
If Mid(Cells(4, 4), Zeichen, 1) Like "0-9" = True Then
DatZahlIndex = DatZahlIndex + 1
ReDim Preserve DatZahlen(DatZahlIndex)
DatZahlen(DatZahlIndex) = Mid(Cells(4, 4), Zeichen, 1)
End If
'Operanden Isolieren
If Mid(Cells(4, 4), Zeichen, 1) Like "+-*/" = True Then
DatOpIndex = DatOpIndex + 1
ReDim Preserve DatOP(DatOpIndex)
DatOP(DatOpIndex) = Mid(Cells(4, 4), Zeichen, 1)
End If
Next Zeichen
For Zzahl = 1 To UBound(DatZahlen())
'hier sollten jetzt die Felder miteinander Operieren
Next Zzahl
End Sub
Code:
Sub Plus()
Cells(4, 4) = Cells(4, 4) & "+"
End Sub
Code:
Sub Minus()
Cells(4, 4) = Cells(4, 4) & "-"
End Sub
Code:
Sub Mal()
Cells(4, 4) = Cells(4, 4) & "*"
End Sub
Code:
Sub Geteilt()
Cells(4, 4) = Cells(4, 4) & "/"
End Sub
On Error Goto ErrorHandler/Über Functionen auslagern Operanden können vor/hinter angestellt sein(nicht vergessen) Erstelle dir eine Liste mit möglichen Fehlern um gegebenenfalls zu korrigieren Vorrangig sind Einschränkungen statt Korrigierung Viel spass bei dem Projekt Geändert von Tanto (18.06.2009 um 12:17 Uhr) |
|
|
|
|
|
|
#6 (Direktlink) |
|
Weiß worum´s geht
![]() Registriert seit: 22.01.2009
Beiträge: 235
|
ich möchte gern noch, dass der taschenrechner minus, mal, geteilt kann, ich möchte dafür aber nicht gleich einen ganz neuen code schreiben, sonder die funktion einfach hinzufügen.
so sieht es im moment aus Code:
Dim ZahlMerker As String
Dim RechMerker As String
Dim Zahl1 As Double
Private Sub cb_0_Click() 'button 0
If ZahlMerker <> "" Then
ZahlMerker = ZahlMerker & "0"
Label1.Caption = ZahlMerker
End If
End Sub
Private Sub cb_1_Click() 'button 1
ZahlMerker = ZahlMerker & "1"
Label1.Caption = ZahlMerker
End Sub
Private Sub cb_2_Click() 'button 2
ZahlMerker = ZahlMerker & "2"
Label1.Caption = ZahlMerker
End Sub
Private Sub cb_3_Click() 'button 3
ZahlMerker = ZahlMerker & "3"
Label1.Caption = ZahlMerker
End Sub
Private Sub cb_4_Click() 'button 4
ZahlMerker = ZahlMerker & "4"
Label1.Caption = ZahlMerker
End Sub
Private Sub cb_5_Click() 'button 5
ZahlMerker = ZahlMerker & "5"
Label1.Caption = ZahlMerker
End Sub
Private Sub cb_6_Click() 'button 6
ZahlMerker = ZahlMerker & "6"
Label1.Caption = ZahlMerker
End Sub
Private Sub cb_7_Click() 'button 7
ZahlMerker = ZahlMerker & "7"
Label1.Caption = ZahlMerker
End Sub
Private Sub cb_8_Click() 'button 8
ZahlMerker = ZahlMerker & "8"
Label1.Caption = ZahlMerker
End Sub
Private Sub cb_9_Click() 'button 9
ZahlMerker = ZahlMerker & "9"
Label1.Caption = ZahlMerker
End Sub
Private Sub cb_c_Click() 'C taste, zum entfernen der eingabe
RechMerker = ""
ZahlMerker = ""
Ergebnis = ""
Label1.Caption = ""
Zahl1 = "0"
End Sub
Private Sub cb_k_Click() 'Komma button
ZahlMerker = ZahlMerker & "."
Label1.Caption = ZahlMerker
End Sub
Private Sub cb_p_Click() 'Plus button
Zahl1 = Val(ZahlMerker)
RechMerker = "+"
ZahlMerker = ""
End Sub
Private Sub cb_i_Click() '= button
Dim Ergebnis As Double
Select Case RechMerker
Case "+"
Ergebnis = Zahl1 + Val(ZahlMerker)
ZahlMerker = Ergebnis
Label1.Caption = Ergebnis
End Select
End Sub
__________________
![]() Geändert von tequila99 (19.06.2009 um 07:48 Uhr) Grund: neue funktionen |
|
|
|
|
|
#7 (Direktlink) |
|
Weiß worum´s geht
![]() Registriert seit: 22.01.2009
Beiträge: 235
|
ich würd es gern so machen, dass man mehrere rechnungen auf einmal machen kann.
z.b. 5*3=15 ... un wenn ich jetz ein paar andere rechnungen mach, z.b. 15(ergebnis)/5 dann rechnet der 3(zweite zahl)/5. wie bekomm ich das problem in den griff
__________________
![]() Geändert von tequila99 (19.06.2009 um 10:46 Uhr) |
|
|
|
|
|
#8 (Direktlink) |
|
Weiß worum´s geht
![]() Registriert seit: 11.02.2009
Ort: Hagen, Westf.
Alter: 41
Beiträge: 171
|
@tequila99
Nachdem Du nun mit ein wenig Hilfe so weit gekommen bist sollte das für Dich doch kein Problem mehr sein. Dein Ergebnis (ob in einem Label oder einem Textfeld) liegt doch vor. Nun nimmst Du Dein Ergebnis und rechnest weiter damit. Das setzt natürlich voraus, dass Du die Zahl mit der neuen Eingabe nicht löscht. Sascha
__________________
Wer ein Problem erkennt, und nichts zu seiner Beseitigung unternimmt, der ist möglicherweise ein Teil dieses Problems. Besucht mich auf meiner HP: http:\\www.saolha.bplaced.net |
|
|
|
|
|
#9 (Direktlink) |
|
Weiß worum´s geht
![]() Registriert seit: 23.11.2008
Beiträge: 104
|
Hallo liebe Community
Da hab ich ja noch was,vielleicht brauchbar Eine Function die Zahlenblöcke isoliert und einem Array übergibt Die Functionsparameter dürften sich im Makro klären Liebe Grüße euer Tanto Code:
Sub ZahlenIsolieren()
ReDim DatZahlen(0) As String
Dim AnzZahl As Integer
AnzZahl = 1
Do
'Zum testen wird Cells(4, 4) genutzt,wie z.b. "10,7+3,1+3.333,33"
If SumZahlen(Cells(4, 4), AnzZahl) = "" Then
Exit Do
Else
DatZahlIndex = DatZahlIndex + 1
ReDim Preserve DatZahlen(DatZahlIndex)
DatZahlen(DatZahlIndex) = SumZahlen(Cells(4, 4), AnzZahl)
AnzZahl = AnzZahl + 1
End If
Loop
For Zzahl = 1 To UBound(DatZahlen())
'Das Array ist nun mit einer X Anzahl an Zahlen die auch Punkt wie Komma beinhalten können gefüllt
'Zum testen Cells(Zzahl, 1) = DatZahlen(Zzahl)
Next Zzahl
End Sub
Code:
Function SumZahlen(Zellen As Variant, zaehler1 As Integer) As String
Dim Zelle As Range
Dim zeich1 As Integer
Dim schalter As Boolean
Dim zaehler3 As Integer
ReDim zaehler2(Len([Zellen])) As String
zaehler3 = 1
Application.Volatile
If zaehler1 > Len([Zellen]) Then zaehler1 = Len([Zellen])
For zeich1 = 1 To Len([Zellen])
If Mid([Zellen], zeich1, 1) Like "[0-9,.]" = True Then
zaehler2(zaehler3) = zaehler2(zaehler3) & Mid([Zellen], zeich1, 1)
schalter = True
End If
If schalter = True And Mid([Zellen], zeich1, 1) Like "[0-9,.]" = False Then
zaehler3 = zaehler3 + 1
schalter = False
End If
Next zeich1
SumZahlen = zaehler2(zaehler1)
End Function
![]() Ersetzen Like "[0-9,.]" Durch Like "[+-*/]" und oder weitere Operatoren Geändert von Tanto (20.06.2009 um 23:26 Uhr) |
|
|
|
|
|
#10 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 19.02.2008
Ort: Velbert
Beiträge: 1.726
|
Ich habe das Thema ins passende Forum verschoben.
Gruß, Tunarus
__________________
http://www.stoeberbox.de |
|
|
|
|
|
|
#11 (Direktlink) |
|
Weiß worum´s geht
![]() Registriert seit: 23.11.2008
Beiträge: 104
|
Hallo liebe Community
Erster kleiner Versuch ![]() Liebe Grüße euer Tanto Zur Zeit funktionieren +-*/ mit positiven Zahlen Beispiel Eingabe =Range("D4")="6+4/2+1,1" Ergebnis=Range("D5")=6,1 Code:
Option Explicit Code:
Sub Rechner()
ReDim DatZahlen(0) As String
ReDim OpZahlen(0) As String
Dim DatZahlIndex As Integer
Dim AnzZahl As Integer
Dim OpZahlIndex As Integer
Dim Erg As Double
Dim Zzahl As Integer
AnzZahl = 1
Do
If SumZahlen(Cells(4, 4), AnzZahl) = "" Then Exit Do
DatZahlIndex = DatZahlIndex + 1
ReDim Preserve DatZahlen(DatZahlIndex)
DatZahlen(DatZahlIndex) = SumZahlen(Cells(4, 4), AnzZahl)
AnzZahl = AnzZahl + 1
Loop
AnzZahl = 1
Do
If SumOperatoren(Cells(4, 4), AnzZahl) = "" Then Exit Do
OpZahlIndex = OpZahlIndex + 1
ReDim Preserve OpZahlen(OpZahlIndex)
OpZahlen(OpZahlIndex) = SumOperatoren(Cells(4, 4), AnzZahl)
AnzZahl = AnzZahl + 1
Loop
Erg = CCur(DatZahlen(1))
For Zzahl = 1 To UBound(OpZahlen())
If OpZahlen(Zzahl) = "+" Then Erg = Erg + CCur(DatZahlen(Zzahl + 1))
If OpZahlen(Zzahl) = "-" Then Erg = Erg - CCur(DatZahlen(Zzahl + 1))
If OpZahlen(Zzahl) = "*" Then Erg = Erg * CCur(DatZahlen(Zzahl + 1))
If OpZahlen(Zzahl) = "/" Then Erg = Erg / CCur(DatZahlen(Zzahl + 1))
Cells(5, 4) = Erg
Next Zzahl
End Sub
Code:
Function SumZahlen(Zellen As Variant, zaehler1 As Integer) As String
Dim Zelle As Range
Dim zeich1 As Integer
Dim schalter As Boolean
Dim zaehler3 As Integer
ReDim zaehler2(Len([Zellen])) As String
zaehler3 = 1
Application.Volatile
If zaehler1 > Len([Zellen]) Then zaehler1 = Len([Zellen])
For zeich1 = 1 To Len([Zellen])
If Mid([Zellen], zeich1, 1) Like "[0-9,.]" = True Then
zaehler2(zaehler3) = zaehler2(zaehler3) & Mid([Zellen], zeich1, 1)
schalter = True
End If
If schalter = True And Mid([Zellen], zeich1, 1) Like "[0-9,.]" = False Then
zaehler3 = zaehler3 + 1
schalter = False
End If
Next zeich1
SumZahlen = zaehler2(zaehler1)
End Function
Code:
Function SumOperatoren(Zellen As Variant, zaehler1 As Integer) As String
Dim Zelle As Range
Dim zeich1 As Integer
Dim schalter As Boolean
Dim zaehler3 As Integer
ReDim zaehler2(Len([Zellen])) As String
zaehler3 = 1
Application.Volatile
If zaehler1 > Len([Zellen]) Then zaehler1 = Len([Zellen])
For zeich1 = 1 To Len([Zellen])
If Mid([Zellen], zeich1, 1) Like "[+-]" = True Or Mid([Zellen], zeich1, 1) = "*" Or Mid([Zellen], zeich1, 1) = "/" Then
zaehler2(zaehler3) = zaehler2(zaehler3) & Mid([Zellen], zeich1, 1)
schalter = True
End If
If schalter = True And Mid([Zellen], zeich1, 1) Like "[+-]" = False Or schalter = True And Mid([Zellen], zeich1, 1) <> "*" Or schalter = True And Mid([Zellen], zeich1, 1) <> "/" Then
zaehler3 = zaehler3 + 1
schalter = False
End If
Next zeich1
SumOperatoren = zaehler2(zaehler1)
End Function
Diese beiden Zeichen wurden bemänngelt "*/",deshalb eine weitere oder verknüpfung in eine der obigen Functionen Kurzbeschreibung wie zerlegt wird Definierten String "6+4/2+1,1" bzw. eingabe Zahlenblöcke werden einem Eindimensionalen Array übergeben,indexende mit Ubound ermittelt 6 4 2 1,1 Festgestellte Anzahl über Index =4 (der index ist der 2 Parameter der Functionen) Operatoren werden isoliert + / + Festgestellte Anzahl über Index =3 (der index ist der 2 Parameter der Functionen) Der erste Zahlenblock wird der Ergebnisvariablen zugewiesen Nun können parallel Zahlenblöcke wie Operanden über If bedingungen die Ergebnisvariable füllen. Geändert von Tanto (21.06.2009 um 20:20 Uhr) |
|
|
|
|
|
#12 (Direktlink) |
|
Erfolgreich angemeldet
![]() Registriert seit: 10.11.2011
Beiträge: 1
|
Hallo tequila99
Habe nun dasselbe Problem mit dem Taschenrechner, komme nicht mehr weiter mit dem Zahlen merken. Hast du zufälligerweise noch den Code von damals? Mail wäre: it-for-life@hotmail.ch wäre sehr Dankbar Wyss |
|
|
|
![]() |
|
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Visual C++ Taschenrechner komplex | Studi | C/C++, Visual C++, Visual C++.NET | 2 | 30.06.2010 03:39 |
| Was ist der unterschied zwischen, visual, visual basic..... | domi1337 | Sonstige Programmiersprachen | 0 | 14.08.2006 19:27 |
| visual basic | Meik | Visual Basic, Visual Basic.NET | 0 | 13.01.2005 21:14 |
| Visual Basic | mono | Software - Allgemein | 0 | 22.12.2004 17:21 |
| Visual Basic 6 | Pepe | Windows XP | 0 | 01.12.2003 18:58 |