Acties:
  • 0 Henk 'm!

  • Knopsje
  • Registratie: November 2006
  • Laatst online: 08:54
Hallo!
Voor school ben ik bezig met VBA script. We moeten nu een eigen opdracht maken, en ik had bedacht een soort klein webshopje te maken. Je kan drie producten aanvinken, en daarvan telt het programma de prijzen op. Vervolgens kun je invoeren met hoeveel geld je betaalt, en het programma rekent het wisselgeld uit. Dat gaat in principe goed, behalve als je 20 euro moet betalen, en je geeft honderd euro. Dan denk het programma dat je 80 euro te weinig betaald! Dat klopt natuurlijk niet, maar ik snap niet goed waar het misgaat.
Ik gebruik de volgende code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Private Sub CommandButton1_Click()
If CheckBox1 = True Then
processor = 20
End If
If CheckBox2 = True Then
videokaart = 10
End If
If CheckBox3 = True Then
ram = 5
End If
TextBox1.Text = processor + videokaart + ram
End Sub

Private Sub CommandButton2_Click()
wisselgeld = TextBox2.Text - TextBox1.Text
If TextBox2.Text < TextBox1.Text Then
MsgBox ("U geeft te weinig geld, u moet nog " & wisselgeld * -1 & " euro bijbetalen")
Else
TextBox3.Text = TextBox2.Text - TextBox1.Text
End If
End Sub

Wat uitleg: De commandButton1 is de knop waarop je klikt om de prijs te berekenen. TextBox1 is het schermpje waarin de opgetelde prijs komt te staan. Commandbutton 2 is de knop om het wisselgeld te berekenen. TextBox2 is het schermpje waarin je het bedrag dat je betaald invoert, en het wisselgeld komt te staan in TextBox3.

Nu gaat het dus verkeerd als je 20 euro moet betalen, en je heeft 100 euro. Dan zegt het programma: "U geeft te weinig geld, u moet nog -80 euro bijbetalen." Dat klopt natuurlijk niet.

Wat ik zelf heb geprobeerd:
Eerst heb ik geprobeerd fouten te zoeken in de code, maar ik kon niks vinden waardoor dit probleem zou kunnen optreden. Vervolgens heb ik een ander tekst scriptje gemaakt, om puur en alleen te kijken naar het vergelijken van getallen, namelijk:
code:
1
2
3
4
5
6
Sub Test()
getal1 = InputBox("Geef getal 1")
getal2 = InputBox("Geef getal 2")
If getal2 < getal1 Then MsgBox (getal1 & " is groter dan " & getal2)
If getal1 < getal2 Then MsgBox (getal2 & " is groter dan " & getal1)
End Sub

Ook hier gaat het mis, als je als getal1 5 invoert, en als getal2 10, dan zegt het programma wederom '5 is groter dan 10"
Helaas wist ook de docent het niet, dus jullie zijn mijn laaste poging ;)

Zie ik iets heel stoms over het hoofd, of maak ik gewoon een denk (programmeer?) fout. We zijn pas een paar weken met VBA bezig, dus zo groot is mijn kennis niet...
Alvast bedankt voor het meedenken!

Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Je weet dat de return value van een InputBox een string is he? ;)

Zet het eerst expliciet om naar een getal?

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

  • Knopsje
  • Registratie: November 2006
  • Laatst online: 08:54
Zo, dat is snel!
Oke, ik snap wat je bedoelt, maar hoe doe je dat? :$
* Knopsje begint zijn zeer geringe kennis van VBA in te zien

Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Je snapt dus dat de string 5 groter is dan 10 toch?

Simpelweg [google=vba convert string to integer] levert een aantal resultaten op:
• Use val()
• Use int()
• Use fix()

Nou, mag je zelf verder googlen wat je precies nodig hebt en hoe je het toepast :)




Overigens horen VBa topics in Officesuites en -software, dus tik ik je topic daarnaartoe.

[ Voor 18% gewijzigd door BtM909 op 27-03-2009 17:34 ]

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

  • Knopsje
  • Registratie: November 2006
  • Laatst online: 08:54
Nee, waarom string 5 groter is dan string 10 snap ik nog steeds niet, maar door te googlen op vba convert string to interger is het inderdaad gelukt!
You're my hero :)

Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Weet niet of je uberhaupt nog in dit topic kijkt, maar als je de volgende entries op alfabetische volgorde moet plaatsen:

- Rekenvoorbeeld
- Reken

Wat wordt dan de volgorde volgens jou?

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

  • Knopsje
  • Registratie: November 2006
  • Laatst online: 08:54
-Reken
-Rekenvoorbeeld

Ooh, wacht, het begint nu te dagen. Omdat 100 met een 1 begint, is het groter dan 200. Is het op die manier?

Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Omdat 2 groter is dan 1 is het het dus ook groter dan 100 ;)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.

Pagina: 1