Sjaak de Lange
Artikelen: 0
Berichten: 220
Lid geworden op: wo 11 jul 2012, 09:44

vba excel

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...
Gebruikersavatar
In physics I trust
Artikelen: 0
Berichten: 7.390
Lid geworden op: za 31 jan 2009, 08:09

Re: vba excel

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.
"C++ : Where friends have access to your private members." Gavin Russell Baker.
Sjaak de Lange
Artikelen: 0
Berichten: 220
Lid geworden op: wo 11 jul 2012, 09:44

Re: vba excel

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'?
Gebruikersavatar
physicalattraction
Moderator
Artikelen: 0
Berichten: 4.163
Lid geworden op: do 30 mar 2006, 15:37

Re: vba excel

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.
PAAC
Artikelen: 0
Berichten: 301
Lid geworden op: do 29 jun 2006, 23:03

Re: vba excel

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.

 
Plan? I don't need a plan, just a goal. The rest will follow on its own.

Clever waste of time: Level 31
Sjaak de Lange
Artikelen: 0
Berichten: 220
Lid geworden op: wo 11 jul 2012, 09:44

Re: vba excel

Ff omdeaaien dus van hoog -> laag, dank!

Terug naar “Informatica en programmeren”