compileerfout:Ongeldig buiten procedure

Status
Niet open voor verdere reacties.

anseric

Nieuwe gebruiker
Lid geworden
25 apr 2010
Berichten
2
Ik maak dit programmatje
Code:
Dim Lengte As Single
Dim Gewicht As Byte
Lengte = txtLengte.Text
Gewicht = txtGewicht.Text
BMI = Gewicht / (Lengte * Lengte)
txtBMI.Text = BMI
Sub ansèr()

End Sub
en telkens wanneer ik play doe staat er compileerfout:ongeldig buiten procedure met
txtLengte aangeduid ik weet niet wat ik fout doe
 
Laatst bewerkt door een moderator:
Ik vermoed dat het hieraan ligt:
txtLengte en txtGewicht en txtBMI moeten 'in focus' zijn voordat je er attributen van kunt lezen of naar attributen kunt schrijven.
Dus het wordt dan:

Code:
Dim Lengte As Single
Dim Gewicht As Byte
[B]txtLengte.SetFocus[/B]
Lengte = txtLengte.Text
[B]txtGewicht.SetFocus[/B]
Gewicht = txtGewicht.Text
BMI = Gewicht / (Lengte * Lengte)
[B]txtBMI.SetFocus[/B]
txtBMI.Text = BMI
Natuurlijk moet je reeds tekst-boxen txtLengte, txtGewicht en txtBMI al gemaakt hebben.

Succes,

Tijs.
 
Laatst bewerkt door een moderator:
Ik vermoed dat het hieraan ligt:
txtLengte en txtGewicht en txtBMI moeten 'in focus' zijn voordat je er attributen van kunt lezen of naar attributen kunt schrijven.
Dus het wordt dan:

Dim Lengte As Single
Dim Gewicht As Byte
txtLengte.SetFocus
Lengte = txtLengte.Text
txtGewicht.SetFocus
Gewicht = txtGewicht.Text
BMI = Gewicht / (Lengte * Lengte)
txtBMI.SetFocus
txtBMI.Text = BMI

Natuurlijk moet je reeds tekst-boxen txtLengte, txtGewicht en txtBMI al gemaakt hebben.

Succes,

Tijs.

ik begrijp het niet goed maar ik zal het wel eens vragen aan mijn leerkracht
 
Waarom probeer je het niet gewoon? Je pc gaat er niet van steigeren of vastlopen. :D

Het concept van in focus brengen van objecten (zoals een tekstbox) om op de attributen ervan bewerkingen te kunnen uitvoeren wordt (o.a.) hier uitgelegd (ong. op de helft van de presentatie). Wordt daar gebruikt om 2 waarden die via een tekstbox worden ingelezen te presenteren in een derde tekstbox.

Succes,

Tijs.
 
Anseric,

Volgens mij moet het zo zijn:

Code:
Sub anser()
Dim Lengte As Single
Dim Gewicht As Byte
Lengte = txtLengte.Text
Gewicht = txtGewicht.Text
BMI = Gewicht / (Lengte * Lengte)
txtBMI.Text = BMI
End Sub
 
Of in slim-fit code:
Code:
Sub anser()
   txtBMI.Text = txtGewicht.Text / (txtLengte.Text^2)
End Sub

PS. @Dnties
VBA is object-georiënteerd geprogrammeerd. Alle objecten en hun eigenschappen kun je in VBA rechtstreeks benaderen. Setfocus is een userinterface instruktie die in VBA (nagenoeg) nooit nodig is; in ieder geval niet voor de gevallen waarvoor jij het noodzakelijk acht.
 
Laatst bewerkt:
@Superzeeuw.

Zeker wel, maar dan moet je de naamgeving van de tekstvakken onderhanden nemen. Bijv.

Code:
Sub anser()
   B1.Text = G1.Text / (L1.Text^2)
End Sub
en als je echt van minimalistisch houdt:
Code:
Sub anser()
   B1 = G1 / (L1^2)
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan