Word 2007, BMI berekenen op userform

Status
Niet open voor verdere reacties.

jackfish

Gebruiker
Lid geworden
10 sep 2010
Berichten
297
Beste mensen, Ik heb een userform in Word gemaakt met drie tekstvakken: lengte, gewicht en BMI. Na het ingeven van de lengte en het gewicht zou automatisch het tekstvak BMI (gewicht / (lengte * lengte)) gevuld moeten worden.

op welke manier kan dit gecodeerd worden?

Groet jackfish
 
Op z'n simpelst met 3 tekst velden: txtLengte, txtGewicht en txtBMI
Achter een commandbutton zet je dan dit:
Code:
Private Sub CommandButton1_Click()
    txtBMI = txtGewicht / (txtLengte * txtLengte)
End Sub

Na het invullen van de velden voor lengte en gewicht druk je dan op die knop.
 
Werelds edmoor! Ik heb de code iets aangepast

Private Sub CommandButton1_Click()
txtBMI = (txtGewicht / (txtLengte * txtLengte)*100))
End Sub

Iets ingewikkelder misschien. Stel ik wil het getal in txtBMI afronden op 1 cijfer achter de comma) Welk stukje code gebruik je dan?
En als ik in een veld daarna: txtafgerond, een geheel getal krijgen. Welke stukje code gebruik je dan?
En is het ook te doen om txtBMI (en txtafgerond) automatisch ingevuld te krijgen als na het gewicht de lengte is ingegeven?

Sorry voor alle vragen hoor, het is net of ik mijn kleine zoon hoor:rolleyes: , maar ik word er enthousiast van!

Alvast dank namens mijn collega verpleegkundigen voor wie ik een formulier maak waarmee snellere verslag kan worden gedaan van lichamelijk onderzoek.

jackfish
 
Laatst bewerkt:
Ik weet zo niet hoe Word ermee omgaat maar probeer dit eens:
txtBMI = Round((txtGewicht / (txtLengte * txtLengte) * 100)), 1)
 
Edmoor, de code geeft een compileerfout; verwacht instructie-einde
 
Er staat denk ik een haakje sluiten teveel in, die is hier weg:
txtBMI = Round((txtGewicht / (txtLengte * txtLengte) * 100), 1)
 
Perfect, edmoor. ik had round nog niet in de code opgenomen. jackfish
 
Laatst bewerkt:
waarschijnlijk hetzelfde resultaat:

txtBMI = format(100*txtGewicht / txtLengte^2,"0.0")
 
Laatst bewerkt:
Hallo SNB, eerst dank voor de reactie. Maar niet hetzelfde resultaat lengte 1.9 en gewicht 112 geeft BMI van 0 ...
 
Had je mijn laatste aanpassing gezien ?
 
Excuses, ik zie het al. Ik heb de tekstvakken 'gewicht' en 'lengte' omgedraaid :o
 
snb en edmoor,
Is het ook te doen om de twee (hernoemde) tekstvakken BMI en BMIafgerond automatisch ingevuld te krijgen, als na de lengte het gewicht ingegeven is? Ofwel na een enter of het aanklikken van een volgend tekstvak de macro's geactiveerd worden?

jackfish
 
Ik zou dat doen bij het verlaten van het 2e veld. Ik weet niet of dat bij jou Lengte of Gewicht is maar dat lijkt me de aangewezen plek.
Maak dan een routine met de naam van de textbox en de gebeurtenis _Exit, zo dus:
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)

Zo wordt bij het verlaten van Textbox2 de code uitgevoerd die erin staat.
Die code kun je dan kopiëren en plakken van de code achter de knop.
De knop kan dan verdwijnen.
Je zult daarna wel meer vragen hebben dit is even de basis.
 
edmoor, een beetje tot mijn eigen verassing is het gelukt met de volgende code

Private Sub TxtGewicht_Change()
TxtBMI = Round((TxtGewicht / (TxtLengte * TxtLengte) * 100), 1)
BMIround = Format(100 * TxtGewicht / TxtLengte ^ 2, "0,0")
End Sub

Het probleem is alleen dat ik bij de lengte slechts 1 cijfer achter de komma kan gebruiken; bijvoorbeeld meter 1.9. Dan functioneert het prima. Bij meter 1.93 geeft BMI en BMIafgerond een verkeerde waarde. Een ander probleem is dat bij het weghalen van het gewicht een fout 13 wordt gegeven (typen komen niet met elkaar overeen).

Mag ik zo vrij zijn om opnieuw hulp te vragen?

Bekijk bijlage Questionnaire - Userform.zip
 
Laatst bewerkt:
Die fout 13 klopt, omdat het veld dan leeg is. Daarom zei ik dat je vast wel met meer vragen zult komen ;-)
Ik zal eens kijken naar je bijlage maar ik weet niet of dat vanavond nog gaat lukken.
 
Ik had toch even een goed gevoel ;) Fijn als je er nog naar wilt kijken. Voor nu een fijne avond! jackfish
 
Je kunt wel vast deze wijziging doorvoeren om die fout 13 te voorkomen:

Code:
Private Sub TxtGewicht_Change()
If TxtGewicht <> "" And TxtLengte <> "" Then
    TxtBMI = Round((TxtGewicht / (TxtLengte * TxtLengte) * 100), 1)
    BMIround = Format(100 * TxtGewicht / TxtLengte ^ 2, "0,0")
End If
End Sub
 
Dat is gewoon gelukt edmoor, mooi man! Tjonge het leek zo simpel. Drie vakjes en een eenvoudige berekening ...
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan