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