1 van 1
vba excel
Geplaatst: di 17 jun 2014, 22:42
door Sjaak de Lange
hallo, ik heb een simpel scriptje wat niet lijkt te werken;
Function marge(lengte)
If lengte >= 1 Then
marge = 1
ElseIf lengte >= 1500 Then
marge = 2
ElseIf lengte >= 2000 Then
marge = 3
ElseIf lengte >= 2200 Then
marge = 4
Else
marge = 5
End If
End Function
hij lijkt alleen de eerste en de laatste regel uit te voeren, ik roep hem in het werkblad aan met; =marge(c3) lengte vul ik dan in de cel c3 in, kan iemand zien wat ik fout doe?, ben net met vba begonnen dus ik denk dat ik iets over het hoofd zie...
Re: vba excel
Geplaatst: di 17 jun 2014, 22:52
door In physics I trust
Als
If lengte >= 1 Then
Vervuld is, dan wordt
marge = 1
uitgevoerd.
De andere elseif's worden dus niet meer gecheckt, want je komt niet in else, immers de if is al vervuld. Had je er een 'if' van gemaakt, dan had je een geneste structuur, en kan je wel gelijkelijk verfijnen.
Eventueel kan je ook eens kijken naar de Case Select functie in VBA.
Re: vba excel
Geplaatst: di 17 jun 2014, 23:15
door Sjaak de Lange
Hallo, ja dank maar ook op de tussenliggende range dus bijv lengte 1600, 2100 reageert hij niet, hij zou dan ' het rijtje af moeten lopen'?
Re: vba excel
Geplaatst: wo 18 jun 2014, 08:54
door physicalattraction
Wat bedoel je met "reageert hij niet"? Ik verwacht dat er 1 uitkomt voor elk getal groter dan 1 dat je erin stopt, en 5 voor elk getal kleiner of gelijk aan 1 dat je erin stopt. De uitkomst 2, 3 of 4 kan nooit voorkomen. Is dit ook wat je waarneemt? In de uitleg van In physics I trust kun je lezen waarom dit het verwachte gedrag is.
Re: vba excel
Geplaatst: wo 18 jun 2014, 10:09
door PAAC
Sjaak de Lange schreef:
Hallo, ja dank maar ook op de tussenliggende range dus bijv lengte 1600, 2100 reageert hij niet, hij zou dan ' het rijtje af moeten lopen'?
Dat is wat "In physics I trust" ook aangeeft
Als je het rijtje afloopt met lengte = 1750, dan begint ie bij de eerste functie
lengte >= 1
Deze voldoet, dus marge = 1 en verder kijkt ie niet.
Re: vba excel
Geplaatst: wo 18 jun 2014, 18:53
door Sjaak de Lange
Ff omdeaaien dus van hoog -> laag, dank!