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!