VB Function to Format Roman Numerals
The function below can be used to convert integers into Roman numerals.
' Formats a number as a roman numeral. ' Author: Christian d'Heureuse (www.source-code.biz) Public Function FormatRoman(ByVal n As Integer) As String If n = 0 Then FormatRoman = "0": Exit Function ' There is no roman symbol for 0, but we don't want to return an empty string. Const r = "IVXLCDM" ' roman symbols Dim i As Integer: i = Abs(n) Dim s As String, p As Integer For p = 1 To 5 Step 2 Dim d As Integer: d = i Mod 10: i = i \ 10 Select Case d ' format a decimal digit Case 0 To 3: s = String(d, Mid(r, p, 1)) & s Case 4: s = Mid(r, p, 2) & s Case 5 To 8: s = Mid(r, p + 1, 1) & String(d - 5, Mid(r, p, 1)) & s Case 9: s = Mid(r, p, 1) & Mid(r, p + 2, 1) & s End Select Next s = String(i, "M") & s ' format thousands If n < 0 Then s = "-" & s ' insert sign if negative (non-standard) FormatRoman = s End Function
Test routine:
' Writes a list of roman numerals into a text file. ' The output can be used as a "decimal to roman" conversion table. Public Sub PrintToFile(ByVal FileName, Optional ByVal First = 1, Optional ByVal Last = 2100) Dim fh: fh = FreeFile Open FileName For Output As fh Dim i As Integer For i = First To Last Print #fh, i & " = " & FormatRoman(i) Next Close #fh End Sub
Author: Christian d'Heureuse (www.source-code.biz, www.inventec.ch/chdh)
License: Free / LGPL
Index