[VBA] beginnersfout(?) rekenmachine werkt niet

Pagina: 1
Acties:

  • Scooper
  • Registratie: Juni 2001
  • Laatst online: 11-09 10:14
Ik ben voor het eerst bezig in VBA en ben nu aan het proberen een rekenmachinetje te maken, deze hoeft nog maar met 2 getallen om te kunnen gaan en alleen maar met - en +. Ik heb alle geheugentoewijzingen goed gespeld dat weet ik zeker.

Eerst maar ff het scriptje:
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
Private Sub cmdAction_Click()
Dim dblGetal1 As Double
Dim dblGetal2 As Double
Dim radPlus As Boolean
Dim radMin As Boolean
Dim dblUitkomst As Double
Dim strPlusOfMin As String


If (radPlusValue = True) Then
    strPlusOfMin = "&"
    GoTo Uitkomst
ElseIf (radMinValue = True) Then
    strPlusOfMin = "-"
    GoTo Uitkomst
Else
    GoTo Vergeten
End If

Uitkomst:
lblUitkomst.Caption = dblGetal1 + " " + strPlusOfMin + " " + dblGetal2
GoTo Einde

Vergeten:
MsgBox "Je moet wel min of plus kiezen"

Einde:

End Sub

Private Sub cmdExit_Click()
    Unload Me
End Sub

Het probleem is telkens als ik op de cmdAction-knop druk hij zegt "Je moet wel min of plus kiezen", ook al heb je dat wel gekozen (radiobuttons). Maar volgens mij zou hij niet naar "Vergeten" moeten gaan, maar naar uitkomst en dan klaar is kees.

Ik heb vast wel meerdere fouten gemaakt, maar het is ook nog maar mijn eerste keer hé. Y)

SRK35ZS-W


  • .GoO
  • Registratie: September 2001
  • Laatst online: 26-08 10:06
If (radPlusValue = True) Then

moet dat niet zijn .value? (en die andere dan dus ook)

Probeer anders eens een exit sub ertussen te zetten...

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 04-09 14:38

curry684

left part of the evil twins

[knip]
Oeps nevermind ik moet m'n kop houden over VB-code dat snap ik niet :P
[/knip]

ps. met <code> en </code> maar dan met rechte haken kun je code leesbaarder tonen.

Professionele website nodig?


  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 12-09 01:18

Gerco

Professional Newbie

Doe eens beginnen met "Option Explicit" bovenaan je module te zetten. Dat scheelt een hoop fouten (incl deze).

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • Scooper
  • Registratie: Juni 2001
  • Laatst online: 11-09 10:14
Op donderdag 14 maart 2002 23:38 schreef Gerco het volgende:
Doe eens beginnen met "Option Explicit" bovenaan je module te zetten. Dat scheelt een hoop fouten (incl deze).
Als ik dat doe geeft hij een foutmelding bij
If (radPlusValue = True) Then
en als ik dit gebruik:
If (radPlus.Value = True) Then
krijg ik ook een compileer fout :(

SRK35ZS-W


  • Scooper
  • Registratie: Juni 2001
  • Laatst online: 11-09 10:14
Op donderdag 14 maart 2002 23:32 schreef devv05 het volgende:
Probeer anders eens een exit sub ertussen te zetten...
Waar zou ik dat moeten zetten?? Ik heb het geprobeerd voor "Vergeten:", maar helaas zonder resultaat

SRK35ZS-W


  • nescafe
  • Registratie: Januari 2001
  • Laatst online: 15:08
Heb je enig idee waar je radPlus Boolean wordt geset ?

Overigens is radPlus.Value niet echt noodzakelijk

* Barca zweert ook bij fixedsys... althans bij mIRC de rest is comic sans


  • Scooper
  • Registratie: Juni 2001
  • Laatst online: 11-09 10:14
Op vrijdag 15 maart 2002 00:13 schreef nescafe het volgende:
Heb je enig idee waar je radPlus Boolean wordt geset ?
Sorry maar ik ben een echte n00b op het gebied van VBA, kun je dat proberen wat duidelijker uit te leggen? O+

SRK35ZS-W


  • nescafe
  • Registratie: Januari 2001
  • Laatst online: 15:08
code:
1
2
Dim radPlus As Boolean
Dim radMin As Boolean

Je initialiseert ze wel maar je geeft er geen waarde aan (True of False).. Dit moet je dus doen aan de hand van de afhankelijke knop. Ik neem aan dat je twee knoppen met twee stukjes code hebt:
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
Private Sub cmdActionPlus_Click()
  Call Bereken("+")
End Sub

Private Sub cmdActionMin_Click()
  Call Bereken("-")
End Sub

Private Sub Bereken(type_button as string)

Dim dblGetal1 As Double
Dim dblGetal2 As Double
Dim dblUitkomst As Double
Dim strPlusOfMin As String

Select Case type_button
  Case "+":
    strPlusOfMin = "&"
    GoTo Uitkomst
  Case "-":
    strPlusOfMin = "-"
    GoTo Uitkomst
  Case Default:
    GoTo Vergeten
End Select

Uitkomst:
lblUitkomst.Caption = dblGetal1 + " " + strPlusOfMin + " " + dblGetal2
GoTo Einde

Vergeten:
MsgBox "Je moet wel min of plus kiezen"

Einde:

End Sub

Private Sub cmdExit_Click()
    Unload Me
End Sub

Ik zou het ongeveer zo doen, waarschijnlijk type_button as string(1) als dat kan, om geheugen te sparen :P maar of dat werkt weet ik niet.

Snap je nu wat ik bedoel trouwens ?

* Barca zweert ook bij fixedsys... althans bij mIRC de rest is comic sans


Verwijderd

opmerking:

pleazzzz WASTE THE GOTO'S !!!!

als je die nu in je eerste programma al gebruikt, ga je nooit verder komen dan kwakkelcode |:(
grtz
CPUburn

  • nescafe
  • Registratie: Januari 2001
  • Laatst online: 15:08
goto stamt inderdaad uit de qbasic tijd ja :)

* Barca zweert ook bij fixedsys... althans bij mIRC de rest is comic sans


Verwijderd

En je error afhandeling dan? Hoe was je van plan om die te doen zonder GoTo (in VB6 dan, in dotnet is het eindelijk netjes...) :?

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 04-09 14:38

curry684

left part of the evil twins

Op vrijdag 15 maart 2002 15:30 schreef JeroenDega het volgende:
En je error afhandeling dan? Hoe was je van plan om die te doen zonder GoTo (in VB6 dan, in dotnet is het eindelijk netjes...) :?
Ik heb ooit maintenance moeten verrichten op een enorm VB-project dat alle error-handling deed zonder goto... iedere, maar dan ook echt IEDERE functie begon met de volgende regel:
code:
1
on error resume next

Wat heb ik me vermaakt met die opdracht :r

Professionele website nodig?

Pagina: 1