11 juli 2014

Zet je computer aan het werk: macro's en sneltoetsen

Er bestaat een hele regeling over hoe je getallen moet schrijven. Telefoonnummers, adressen en datums zijn uiteraard met cijfers, maar in andere gevallen heb je een aantal regeltjes. Getallen tot en met twintig schrijf je voluit. Veelvouden van tien, honderd en duizend schrijf je ook voluit. Alles tussen die veelvouden, dat zijn te lange woorden, dat mag dus in cijfers – behalve onderaan op een kostennota als er staat 'bedrag voluit schrijven'. En dan heb je nog de regels over aaneenschrijven en spaties!

https://onzetaal.nl/taaladvies/advies/getallen-in-letters-of-cijfers
https://onzetaal.nl/taaladvies/advies/getallen-uitschrijven

Daarnaast zijn er regels en suggesties over hoe je rangtelwoorden schrijft in cijfers (bij voorkeur niet met superscript, dus gewoon 21e voor eenentwintigste – pas dat aan in je AutoCorrectie-opties!) en wanneer je Romeinse cijfers moet gebruiken (Franciscus I is niet hetzelfde als Franciscus 1).

http://taaladvies.net/taal/advies/vraag/2

Die regels liggen eigenlijk niet vast. Het zijn wel aanbevelingen, en ze komen de leesbaarheid ten goede. Voor mij is dat reden genoeg om mij eraan te houden. De mensen die de teksten schrijven die ik moet nalezen, vinden dat dan weer te veel werk, zij zetten zoveel mogelijk in cijfers. Een rotklus voor mij dus, al die getallen voluit typen. Gelukkig hebben tekstverwerkers allerlei trucjes om rotklusjes makkelijker te maken. Macro's, bijvoorbeeld.


Open Microsoft Word en gebruik daar de toetsencombinatie Ctrl-F11. Je krijgt dan de macro-editor te zien: een venster waarin je zelf je macro's kunt typen. Als je nog geen macromodule hebt, voeg er dan een toe: rechtsklik op Normal (dan heb je je macro's in elk document ter beschikking) en kies Invoegen > Module. Welke naam je die module geeft, maakt niet veel uit.

Dubbelklik op je nieuwe module om ze te openen. Voor de getallen kun je de volgende macro kopiëren en plakken.


Sub CijfersOmzetten()
    ' Als de selectie eindigt met een regeleinde 
    ' zetten de Replace-statements er telkens een regeleinde
    ' bij. In zo'n geval verkleinen we de selectie.
    If (Right(Selection.Text, 1) = Chr(10) Or Right(Selection.Text, 1) = Chr(13)) Then
        Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    End If
    
    Selection.Text = Replace(Selection.Text, "maal", "keer")
    ' OPM: duizendmaal, duizend maal => duizend keer
    ' Dubbele spaties verwijderen helpt niet, want het kan zijn 
    ' dat alleen 'maal' geselecteerd is en dat de dubbele spatie 
    ' dus niet mee in de selectie zit.

    Selection.Text = Replace(Selection.Text, "20x", "twintig keer")
    Selection.Text = Replace(Selection.Text, "19x", "negentien keer")
    Selection.Text = Replace(Selection.Text, "18x", "achttien keer")
    Selection.Text = Replace(Selection.Text, "17x", "zeventien keer")
    Selection.Text = Replace(Selection.Text, "16x", "zestien keer")
    Selection.Text = Replace(Selection.Text, "15x", "vijftien keer")
    Selection.Text = Replace(Selection.Text, "14x", "veertien keer")
    Selection.Text = Replace(Selection.Text, "13x", "dertien keer")
    Selection.Text = Replace(Selection.Text, "12x", "twaalf keer")
    Selection.Text = Replace(Selection.Text, "11x", "elf keer")
    Selection.Text = Replace(Selection.Text, "10x", "tien keer")
    Selection.Text = Replace(Selection.Text, "9x", "negen keer")
    Selection.Text = Replace(Selection.Text, "8x", "acht keer")
    Selection.Text = Replace(Selection.Text, "7x", "zeven keer")
    Selection.Text = Replace(Selection.Text, "6x", "zes keer")
    Selection.Text = Replace(Selection.Text, "5x", "vijf keer")
    Selection.Text = Replace(Selection.Text, "4x", "vier keer")
    Selection.Text = Replace(Selection.Text, "3x", "drie keer")
    Selection.Text = Replace(Selection.Text, "2x", "twee keer")
    Selection.Text = Replace(Selection.Text, "1x", "een keer")
    
    Selection.Text = Replace(Selection.Text, "20e", "twintigste")
    Selection.Text = Replace(Selection.Text, "19e", "negentiende")
    Selection.Text = Replace(Selection.Text, "18e", "achttiende")
    Selection.Text = Replace(Selection.Text, "17e", "zeventiende")
    Selection.Text = Replace(Selection.Text, "16e", "zestiende")
    Selection.Text = Replace(Selection.Text, "15e", "vijftiende")
    Selection.Text = Replace(Selection.Text, "14e", "veertiende")
    Selection.Text = Replace(Selection.Text, "13e", "dertiende")
    Selection.Text = Replace(Selection.Text, "12e", "twaalfde")
    Selection.Text = Replace(Selection.Text, "11e", "elfde")
    Selection.Text = Replace(Selection.Text, "10e", "tiende")
    Selection.Text = Replace(Selection.Text, "9e", "negende")
    Selection.Text = Replace(Selection.Text, "8e", "achtste")
    Selection.Text = Replace(Selection.Text, "7e", "zevende")
    Selection.Text = Replace(Selection.Text, "6e", "zesde")
    Selection.Text = Replace(Selection.Text, "5e", "vijfde")
    Selection.Text = Replace(Selection.Text, "4e", "vierde")
    Selection.Text = Replace(Selection.Text, "3e", "derde")
    Selection.Text = Replace(Selection.Text, "2e", "tweede")
    Selection.Text = Replace(Selection.Text, "1e", "eerste")
    
    ' In rangtelwoorden met -ste of -de volstaat het
    ' om het cijfer voluit te schrijven,
    ' behalve als dat cijfer vervormd wordt
    ' - zoals in de volgende twee gevallen
    Selection.Text = Replace(Selection.Text, "3de", "derde")
    Selection.Text = Replace(Selection.Text, "1ste", "eerste")
    
    ' Tientallen t/m 100
    Selection.Text = Replace(Selection.Text, "100", "honderd")
    Selection.Text = Replace(Selection.Text, "90", "negentig")
    Selection.Text = Replace(Selection.Text, "80", "tachtig")
    Selection.Text = Replace(Selection.Text, "70", "zeventig")
    Selection.Text = Replace(Selection.Text, "60", "zestig")
    Selection.Text = Replace(Selection.Text, "50", "vijftig")
    Selection.Text = Replace(Selection.Text, "40", "veertig")
    Selection.Text = Replace(Selection.Text, "30", "dertig")
    
    Selection.Text = Replace(Selection.Text, "20", "twintig")
    Selection.Text = Replace(Selection.Text, "19", "negentien")
    Selection.Text = Replace(Selection.Text, "18", "achttien")
    Selection.Text = Replace(Selection.Text, "17", "zeventien")
    Selection.Text = Replace(Selection.Text, "16", "zestien")
    Selection.Text = Replace(Selection.Text, "15", "vijftien")
    Selection.Text = Replace(Selection.Text, "14", "veertien")
    Selection.Text = Replace(Selection.Text, "13", "dertien")
    Selection.Text = Replace(Selection.Text, "12", "twaalf")
    Selection.Text = Replace(Selection.Text, "11", "elf")
    Selection.Text = Replace(Selection.Text, "10", "tien")
    Selection.Text = Replace(Selection.Text, "9", "negen")
    Selection.Text = Replace(Selection.Text, "8", "acht")
    Selection.Text = Replace(Selection.Text, "7", "zeven")
    Selection.Text = Replace(Selection.Text, "6", "zes")
    Selection.Text = Replace(Selection.Text, "5", "vijf")
    Selection.Text = Replace(Selection.Text, "4", "vier")
    Selection.Text = Replace(Selection.Text, "3", "drie")
    Selection.Text = Replace(Selection.Text, "2", "twee")
    Selection.Text = Replace(Selection.Text, "1", "een")
End Sub

Veel tekst, maar niet zo moeilijk om te begrijpen, hé?

Goed, de volgende stap! Om een macro te gebruiken, kun je de 'gewone' weg gebruiken: druk op Alt-F8 om het lijstje met beschikbare macro's te openen, kies welke je wilt gebruiken en klik op de knop Uitvoeren. Dat is nog altijd een beetje omslachtig, maar ook daar zijn trucjes voor! Klik op Bestand > Opties. In het nieuwe venster kies je links 'Lint aanpassen'. Aan de rechterkant zie je dan onderaan een labeltje 'Sneltoetsen' met daarnaast een knop 'Aanpassen'. Klik op die knop om het sneltoetsvenster te openen. Selecteer links bovenaan 'Macro's'. Selecteer in het rechtse kadertje de macro CijfersOmzetten. Typ dan in het vakje daaronder welke toetsencombinatie je als sneltoets wilt gebruiken. Veel combinaties zijn al in gebruik, daarom gebruik ik voor mijn eigen macro's gewoonlijk Alt-Ctrl-Shift en nog iets. Alt-Ctrl-Shift-C, bijvoorbeeld, met de c van CijfersOmzetten. Vergeet niet op de knop Toewijzen te klikken, anders wordt je nieuwe sneltoets niet opgeslagen. Klik op Sluiten en daarna op OK om af te ronden.


Voilà, we kunnen aan de slag. Staat er een getal in cijfers in je tekst, dan selecteer je het en druk je je toetsencombinatie in. Hop, flop: in een fractie van een seconde is het omgezet in gewone tekst. Zoals de titel het al suggereerde: laat je computer het vervelende werk doen!
Kleine uitbreiding: soms schrijven we 'een', in andere gevallen 'één'. De accentjes moeten er alleen staan als je extra nadruk wilt leggen, of als je het niet vanzelf juist leest. 'Een voor een' of 'een-tegen-allen' lees je vanzelf juist, maar in 'één klontje is genoeg' maken de accentjes een verschil. Daarvoor heb ik een tweede macro.

Sub AccentenOpE()
    If InStr(Selection.Text, "é") > 0 Then
        Selection.Text = Replace(Selection.Text, "é", "e")
    Else
        Selection.Text = Replace(Selection.Text, "e", "é")
    End If
End Sub

Staan er al accentjes op de e's in mijn selectie, dan worden ze verwijderd. Staan er geen, dan worden ze toegevoegd. Als sneltoets koos ik voor Alt-Ctrl-Shift-é.

PS: Installeer je mijn Chiroredactie voor MS Word 2010, dan wordt dat automatisch meegeleverd.

Geen opmerkingen:

Een reactie posten