Brugerdefinerede funktioner baseret på Case sætninger er et godt alternativ til lange indviklede if then else sætninger. I det følgende vil det blive gennemgåret hvordan man går igang med at lave sine egne case sætninger.
Visual basic :
Med Visual Basic får man mulighed for at definere sine egne funktioner
i Excel, som det gøres i denne Video.
11
http://www.youtube.com/watch?v=Ket3yEB9KIk&feature=related
Alt
+ F11 for hurtigt at komme ind i Vb edtitoren .
View/Project Explorer
En formel der lægger tre tal sammen kan erklæres i VB editoren således:
Function
laegtretalsammen(a, b, c)
laegtretalsammen = a + b + c
End Function
Når man går ind i regnearket bagefter skriver man:
= laegtretalsammen(marker celle 1,marker celle 2,marker celle 3).
Dermed
bliver de tre tal fra de tre celler lagt sammen.
Case sætning:
Et eksempel der nok giver mere mening er anvendelsen af Case sætningen.
Her er der lavet en brugerdefineret formel, som beregner ny løn til
nogle medarbejdere.
Function Loenberegn(fag, beloeb)
Select Case fag
Case Is = "HK"
Loenberegn = 1.22 * beloeb
Case Is = "AC"
Loenberegn = 1.23 * beloeb
End Select
End Function
Her er funktionen udvidet til også at lave en (ret progressiv ) skatteberegning ved hjælp af if then else sætninger, og brugervenligheden er forbedret ved at der er indsat en MSGboks, der fortæller
hvis man har indtastet en ukendt fagforening.
I tredie linie vises det, hvordan man kan indskyde egne forklaringer til programmet. "Gnyf" tegnet er på samme tast som gange tegnet.
Function Loenberegn2(fag, beloeb)
Select Case fag
'Vi starter med at sortere på fagforening
Case Is = "HK"
If beloeb < 100 Then
Loenberegn2 = 1.22 * beloeb
Else
Loenberegn2 = 1.22 * beloeb * 0.75
End If
Case Is = "AC"
If beloeb < 100
Then
Loenberegn2 = 1.23 * beloeb
Else
Loenberegn2 = 1.23 * beloeb * 0.75
End If
Case Else
MsgBox ("Denne beregning gælder kun for AC og HK")
End Select
End
Function
If then else sætningen kan udvides efter behov ved at indskyde en elseif tilføjelse som det er gjort her:
Function Loenberegn3(fag, beloeb)
Select Case fag
'Vi starter
med at sortere på fagforening
Case Is = "HK"
If beloeb < 100 Then
Loenberegn3 = 1.22 * beloeb
ElseIf beloeb < 200 Then
Loenberegn3 = 1.22 * beloeb * 0.75
Else
Loenberegn3 = 1.22 * beloeb * 0.5
End If
Case
Is = "AC"
If beloeb < 100 Then
Loenberegn3 = 1.23 * beloeb
ElseIf beloeb < 200 Then
Loenberegn3 = 1.23 * beloeb * 0.75
Else
Loenberegn3 = 1.23 * beloeb * 0.5
End If
Case
Else
MsgBox ("Denne beregning gælder kun for AC og HK")
End Select
End Function
Ps: Lønberegningerne er ikke baseret på tal fra virkeligheden 😎
Case sætningen kan også bruges på større end og mindre end problematikker
Function Interval(indb)
Select Case indb
Case Is <= 999
Interval = "1-999"
Case Is <= 9999
Interval = "1.000-9.999"
Case Is <= 50000
Interval = "9.999-50.000"
Case Is <= 99999
Interval = "50.000-99.999"
Case Is >= 99999
Interval = ">100.000"
End Select
End Function