Med egna funktioner kan man göra loopar, t.ex. söka genom ett textfält och ersätta två eller flera mellanslag med ett enda, fyra eller fler mellanslag med tab-tecken. Jag ska visa hur man enkelt byter ut två eller fler punkter till ett tab-tecken (eller annat valfritt tecken, jag använder ofta liknande beräkningar för att t.ex. sätta in Indesigns kod för tab-tecken).
Antag att vi har följande text ”1. Första kapitlet …….. 7” och vill ersätta punkterna med ett enda tab-tecken.
Enklast är att kontrollera om det finns ”…” i texten och byta ut det mot ”..” (dvs. en punkt mindre) tills det inte längre finns tre punkter efter varandra i texten. För det behöver jag göra en loop och det gör jag med en egen funktion.
ReplaceRuns (textfält) = If (Position(textfält;"...";1;1) > 0; ReplaceRuns(Substitute(textfält;"...";".."));textfält)
Funktionen anropar sig själv rekursivt, varje gång med en punkt mindre. Till sist finns det inte tre punkter efter varandra i fältet, som mest finns det två punkter i följd. Avslutningsvis ersätter jag de två punkterna med mitt tab-tecken.
Beräknat fält = Substitute(ReplaceRuns(textfält);"..";"tab-tecken")
Koden för tab-tecken till Indesign är ”<0x0009>” men du kan också sätta in en ”vanlig” tab, tryck Ctrl+Tab i beräkningsfältet.