|
|
Basisweetjes om te kunnen 'coden'
voor het maken van
OOmacros
Hierin worden de basics van het bewerken van macros (kleine stukjes programma of code) getoond binnen Openoffice. Dit fundament heeft me een voldoende macro-grond onder voeten gegeven om met een gerust hart macro-pad verder te bewandelen binnen Open Office, dat veel gemeen heeft met Office basic, trouwens.
enkele statements
________________________
afspeelknop
Call
Dim
Function
InputBox
MsgBox
parameters
Print
Rekenen
Rem
Sub ... End Sub
While ... Wend
________________________

Open OpenOffice.org Calc (Werkblad). Kies eerst de macro-editor vanaf de menubalk onder Extra->Macro...->beheren->OpenOffice.org Basic->nieuw. Je bevind je nu in de Basic-omgeving, dat wil zeggen dat je daarin programma's kunt schrijven in een vorm van de programmeertaal Basic. Toets dan <F1>. Daaronder is veel basisuitleg over de OpenOffice.org Basic-taal terug te vinden. Blader erdoorheen om bekend te geraken met omgeving en zaken die je allemaal tegenkomt bij het samenstellen van macro's. ___________________________
afspeelknop , rem, ', Sub, End Sub, print
In de Basic-omgeving vind je meteen al een aantal statements, genaamd Rem, Sub en End Sub. Deze staan voor remark, subroutine en einde subroutine. Achter Rem plaats je opmerkingen indien deze nodig en handig zijn om je programmeerregels te verhelderen. Het teken ' wordt ook vaak gebruikt in plaats van Rem. Achter Sub komt de naam van de subroutine, en achter End Sub komt niets. In één programma komen vaak meer subroutines voor, en in elke subroutine kun je een andere subroutine aanroepen. Tijdens het uitvoeren van het programma wordt dit niet in beeld gebracht. Wat je wel in beeld kunt brengen is bijvoorbeeld een korte regel tekst. Dat kan met behulp van het statement print.
Zo kan je de programmeerregel print "Hallo, wereld!" toevoegen tussen Sub en End Sub. In de menubalk is een knopje met een groen driehoekje opgenomen (de knop Basic uitvoeren). Klik deze afspeelknop aan, en het eerste programma draait. Je ziet een mini-venster met de twee knoppen OK en Annuleren. Kies een van beide om het korte programma te beëindigen. terug naar inhoud ___________________________
afspeelknop MsgBox

In plaats van het statement print is bijvoorbeeld ook MsgBox te gebruiken. Dit biedt de mogelijkheid om aan een boodschappenvenster een titel mee te geven. Vul de volgende regel in. MsgBox("Hallo, wereld!",0,"Mijn eerste programma"). Klik de afspeelknop weer aan, en het aangepaste programma draait. Je ziet weer een mini-venster met een knop OK, en daarboven de titel van de message box. De knop OK wordt alleen getoond omdat een 0 is meegegeven aan het statement. Als je ook een annuleren wilt zien, laat je de 0 weg of je plaatst een 1. Bij een 2 wordt een knop Afbreken, Opnieuw proberen en Negeren getoond; bij 3 Ja, Nee en Annuleren; bij 4 Ja en Nee; en bij 5 Opnieuw proberen en Annuleren. terug naar inhoud ___________________________
MsgBox, While ... Wend
Als je een keuze laat maken uit Ja of Nee, dan kun je de MsgBox interactief maken. Aan het aanklikken van de Ja-knop of de Nee-knop is een waarde verbonden door Basic. De waarde van Ja is gesteld op het getal 6 en de waarde van Nee op het getal 7. De waarde van de knoppen Ok, Annuleren, Opnieuw proberen, en Negeren is 1, respectievelijk 2, 3 en 4. Als je de programmaregel while MsgBox("Herhalen?",0,"Mijn tweede programma") = 6 opgeeft, op de volgende regel gevolgd door wend, dan blijft het programma deze MsgBox tonen als de gebruiker de Ja-knop blijft indrukken. Het statement-paar While Wend zorgt ervoor dat de tussenliggende statements steeds worden herhaald totdat de voorwaarde achter het While-gedeelte niet meer opgaat. Pas als de knop Nee is ingedrukt dan gaat het programma naar de volgende regel. (De voorwaarde gaat niet meer op omdat de waarde van de knop Nee in het MsgBox-statement dan geen 6 meer is, maar 7). terug naar inhoud ___________________________
InputBox
Met het statement Inputbox kun je nog nauwkeurigere vragen stellen. Probeer de volgende regel maar eens. while InputBox("Wat is de laatste letter van Test?", "Test", "t") <> "t" gevolgd door wend op de volgende regel.

Wat is er gebeurd? Er zijn drie items in de inputbox verwerkt. Ten eerste komt de vraag die je stelt in het venster terecht. Als tweede item zie je Test in de titelbalk, en als laatste item vind je het invoerveld waarin de defaultwaarde t is ingevuld. terug naar inhoud ___________________________
Rekenkundige operatoren
+, -, *, /
Wanneer je de programmaregel print 1+2 intikt en uitvoert krijg je als resultaat 3 in het mini-venster te zien. Dat gaat voor veel meer sommen op. Probeer deze ook eens:
print 1+2
print 1-2
print 1/2
print 1*2
print 1+2*3
print (1+2)*3 print 1+2/3
print (1+2)/3
In principe kunnen er dezelfde dingen als op een losse rekenmachine. De gebruikte getallen kunnen ook in variabelen worden vastgelegd:
a = 1
b = 2
c = 3
d = c/b
print a+b/c
print a+c/d
terug naar inhoud ___________________________
Call, parameters
 
Het aanroepen van subroutines is eerder aan de orde geweest bij rem, ', Sub, End Sub, print. Je kunt dat doen met Call volgens het volgende voorbeeld.
Sub Main
MsgBox("Je bent in de hoofdsubroutine",0,"Main")
Call Sub1
Call Sub2("Main")
End Sub
Sub Sub1
MsgBox("Je bent in de subroutine 1",0,"Sub1")
Call Sub2("Sub1")
End Sub
Sub Sub2(subroutinenaam)
MsgBox("Je bent in subroutine 2 vanuit " & subroutinenaam,0,"Sub2")
End Sub
Wat gebeurt hier? In de hoofdsubroutine Main krijg je met een messagebox te zien dat je je daar bevindt. De regel daarna roept subroutine Sub1 aan. In Sub1 aangekomen maakt de subroutine melding van je verblijf in Sub1 en daarna roept Sub1 de subroutine Sub2 aan met tussen haakjes de naam van de huidige subroutine. In Sub2 meldt deze subroutine dat je in Sub2 bent vanuit Sub1. Dan geeft Sub2 het stokje terug aan Sub1 en Sub1 het stokje aan Main. De subroutine Main roept Sub2 aan met tussen haakjes "Main", waarop Sub2 melding maakt van je verblijf in de subroutine Sub2 vanuit Main. Het stokje komt daarna terug bij Main die met End Sub het programma beëindigt.
Wat gebeurt er tussen de haakjes bij Sub2? Als een Sub opgesteld/gedeclareerd wordt met een of meer parameters zie je die terug tussen de haakjes achter Sub, in dit geval de parameter subroutinenaam. Deze parameter gebruik je binnen de subroutine. Bij het aanroepen van de subroutine vul je bijvoorbeeld een naam in en dan wordt deze gebruikt in de aangeroepen subroutine, zoals hier in de message box. terug naar inhoud ___________________________
Function, Dim
Parameters zijn ook bij functies in gebruik. Functies worden op iets verschillende wijze aangeroepen dan subroutines, maar zij hebben altijd een resultaat. Je kunt dat doen met de naam van de functie met eventuele mee te geven parameters tussen haakjes. In onderstaand voorbeeld kun je met Function Belasting de belasting berekenen over je jaarinkomen. Hierbij is de tariefstructuur voor de inkomstenbelasting in Nederland van 2007 gebruikt.

Het statement Dim is om variabelen te declareren. Als a en b in dit programma niet op deze wijze zijn gedeclareerd dan geeft het programma een foutmelding wanneer de functie probeert de belasting te berekenen.
Sub Main
dim a, b As Single
a = MsgBox("Bent u jonger dan 65",4,"Leeftijd")
b = InputBox("Wat is uw jaarinkomen","Jaarinkomen")
MsgBox("De inkomstenbelasting is " + Belasting(a,b),0,"IB")
End Sub
Function Belasting(a,b)
Belasting = 0
if b >= 53065 then
Belasting = (b-53065)*0.52
b = 53064
EndIf
if b >= 31123 and b < 53065 then
Belasting = Belasting + (b-31123)*0.42
b = 31122
EndIf
REM Onder de 65
if a = 6 then
if b >= 17320 and b < 31123 then
Belasting = Belasting + (b-17320)*0.414
b = 17319
EndIf
if b <= 17319 then
Belasting = Belasting + (b)*0.3365
EndIf
EndIf
REM Boven de 65
if a = 7 then
if b >= 17320 and b < 31123 then
Belasting = Belasting + (b-17320)*0.235
b = 17319
EndIf
if b <= 17319 then
Belasting = Belasting + (b)*0.1575
EndIf
EndIf
End Function
Wat gebeurt hier? In de hoofdsubroutine Main wordt je met een messagebox de vraag voorgelegd of je onder de 65 bent. Voor die leeftijdscategorie gelden andere belastingpercentages dan voor die van de categorie van 65 en ouder, vandaar. Daarna vraagt het programma het jaarinkomen. Deze twee gegevens, of je al of niet jonger dan 65 bent en het jaarinkomen heeft de functie Belasting nodig om de belasting te kunnen berekenen. De functie bekijkt eerst of bedragen op de hoogstgelegen tarieven van 52% en 42% geldig zijn, die voor alle leeftijdsgroepen dezelfde percentages kennen. Daarna telt de functie de belasting die voortvloeit uit deze percentages bij elkaar op. Over de rest wordt ook nog belasting berekend, maar de tarieven zijn nu wel afhankelijk van leeftijd. De functie berekent de belasting voor de twee laagste percentages en telt die bij elkaar op, ofwel voor de leeftijdscategorie onder de 65 ofwel voor die van 65 of ouder. terug naar inhoud ___________________________
Succes met het maken van de macros!
|
|