We gaan ook hier geen invoer vragen via een InputBox. We zouden een lijst kunnen gebruiken of opties (zie Planeet) maar we kiezen er voor om verschillende knoppen op een formulier te plaatsen.

Omdat bij alle bewerkingen eerst de getallen moeten ingelezen worden, nemen we dat op in een aparte procedure. We kunnen daar waarschuwen als een invoer geen getal is.
'Algemene variabele, gedeclareerd
boven het formulier
Dim getal1 As Single
Dim getal2 As Single
Dim resultaat As Double
Sub leesin()
If IsNumeric(txtGetal1.Text) Then
getal1 = CSng(txtGetal1.Text)
Else
MsgBox "Het eerste vak bevat geen getal"
End If
If IsNumeric(txtGetal2.Text) Then
getal2 = CSng(txtGetal2.Text)
Else
MsgBox "Het tweede vak bevat geen getal"
End If
End Sub
Op te merken valt dat het een stuk handiger zou zijn te werken met genummerde controls (een array van controls), omdat we dan de code niet hadden hoeven te kopiëren.
Voor de bewerkingen zelf letten we erop dat we niet delen door nul. De code ziet er zo uit:
Private Sub cmdGedeeld_Click()
leesin
If getal2 = 0 Then
MsgBox ("Deling door nul")
Exit Sub
End If
resultaat = getal1 / getal2
MsgBox resultaat
End Sub
Private Sub cmdMaal_Click()
leesin
resultaat = getal1 * getal2
MsgBox resultaat
End Sub
Private Sub cmdMin_Click()
leesin
resultaat = getal1 - getal2
MsgBox resultaat
End Sub
Private Sub cmdPlus_Click()
leesin
resultaat = getal1 + getal2
MsgBox resultaat
End Sub
En toch: het kan nog een stuk eenvoudiger. De scripting talen (Javascript maar ook VB Script) hebben een ingebouwde functie eval() waarmee je zonder meer het resultaat van een formule kan berekenen in een webpagina. De code is heel eenvoudig:
Sub Button1_onclick
msgbox(eval(text1.value))
End Sub
[VB Web] - [Leren programmeren] - [hlrnet] - [copyright]