Aangezien VBA de functie OCT kent die een decimaal getal omzet naar een octaal getal moeten we ons concentreren op het omzetten van een ternair getal naar een decimaal getal. Zoals jullie ongetwijfeld weten is een ternair getal een BASE3 getal (0, 1, 2) maw er wordt voor de omzetting gerekend met machten van 3.
Wat hebben we nodig :
1. de lengte van het getal >> LEN
2. een functie die elk element aanduidt in het getal >> MID
3. een lus die elk element gebruikt >> FOR ..... NEXT lus
Als voorbeeld nemen we 2221020 wat volledig uitgeschreven wordt
2*(3^6) + 2*(3^5) + 2*(3^4) + 1*(3^3) + 0*(3^2) + 2*3 + 0*1
1.adhv de lengte kunnen we de hoogste macht berekenen die we nodig hebben nl Len(getal)-1 en we gaan deze in een variabele n gieten
2.De lus maken we met For i = 1 to Len(getal) om alle elementen te gebruiken.
3.Het element dat we gebruiken duiden we aan met Mid(getal,i,1)
4.Bij elke doortocht v/d lus verkleinen we de macht met 1 dus n = n - 1
5.Schrijf het resultaat naar een cel of besturingselement
De opbouw v/d macro is dus als volgt
Sub Ter2Oct()
Bepaal de hoogste macht zie 1
Bepaal het aantal lussen zie 2
Steek het uiteindelijke resultaat in een variabele bv. dec = dec + berekening v/d elementen zie 3
Verminder de macht met 1 zie 4
Neem het volgende element Next
Zet om naar octaal en schrijf het resultaat weg zie 5
End Sub