Spellnumber Code for Omani Riyal and Baisa | Convert Omani Riyal to Spelling in Excel

Here you will learn how to convert the numeric value of Omani Riyal and Baisa to spelling or words format. This is important when you have to make an invoice in Excel or make some accounting reports.

Since Microsoft Excel does not have any in built function to do this requirement, we need to have a VBA code that can convert Omani Riyal and Baisa to words. For example, 12.679 = Twelve Omani Riyal and Six Hundred Seventy-Nine Baisa.

See in below image, how the user defied function converts Omani Riyal and Baisa to Words.

Omani Riyal to Words

Steps to Follow

Follow these steps to convert Omani Riyal and Baisa to Words.

  1. Get the VBA code.
  2. Add the VBA code to MS Excel VBA.
  3. Use the Function.
  4. Save workbook as Macro-Enabled workbook.

VBA Code

The required Spellnumber code for Omani Riyal and Baisa is below. Select and copy the code.

Function SpellOmaniRiyal(ByVal MyNumber) As String
    Dim WholeNumber As String
    Dim DecimalValue As String
    Dim DecimalWord As String
    Dim Temp As String
    Dim DecimalPlace As Integer
    Dim Count As Integer
    Dim DecimalSeparator As String
    Dim UnitName As String
    Dim SubUnitName As String
    Dim DecimalSeparatorIndex As Integer

    ReDim Place(9) As String
    Place(2) = " Thousand "
    Place(3) = " Million "
    Place(4) = " Billion "
    Place(5) = " Trillion "

    ' Convert MyNumber to String, preserving decimal separator
    MyNumber = Trim(CStr(MyNumber))
    DecimalSeparatorIndex = InStr(MyNumber, Application.DecimalSeparator)

    If DecimalSeparatorIndex > 0 Then
        DecimalValue = GetHundreds(Left(Mid(MyNumber, DecimalSeparatorIndex + 1) & "000", 3))
        DecimalWord = " Rials and " & DecimalValue & " Baisa"
        MyNumber = Trim(Left(MyNumber, DecimalSeparatorIndex - 1))
    End If

    Count = 1
    Do While MyNumber <> ""
        Temp = GetHundreds(Right(MyNumber, 3))
        If Temp <> "" Then WholeNumber = Temp & Place(Count) & WholeNumber
        If Len(MyNumber) > 3 Then
            MyNumber = Left(MyNumber, Len(MyNumber) - 3)
        Else
            MyNumber = ""
        End If
        Count = Count + 1
    Loop

    If DecimalValue = "" Then
        SpellOmaniRiyal = WholeNumber & " Omani Rials"
    ElseIf DecimalValue = "One" Then
        SpellOmaniRiyal = WholeNumber & " Omani Rials and " & DecimalValue & " Baisa"
    Else
        SpellOmaniRiyal = WholeNumber & " Omani Rials and " & DecimalValue & " Baisa"
    End If
End Function

Function GetHundreds(ByVal MyNumber) As String
    Dim Result As String
    If Val(MyNumber) = 0 Then Exit Function
    MyNumber = Right("000" & MyNumber, 3)

    ' Convert the hundreds place.
    If Mid(MyNumber, 1, 1) <> "0" Then
        Result = GetDigit(Mid(MyNumber, 1, 1)) & " Hundred "
    End If

    ' Convert the tens and ones place.
    If Mid(MyNumber, 2, 1) <> "0" Then
        Result = Result & GetTens(Mid(MyNumber, 2))
    Else
        Result = Result & GetDigit(Mid(MyNumber, 3))
    End If

    GetHundreds = Result
End Function

Function GetTens(TensText) As String
    Dim Result As String
    Result = ""           ' Null out the temporary function value.
    If Val(Left(TensText, 1)) = 1 Then   ' If value between 10-19...
        Select Case Val(TensText)
            Case 10: Result = "Ten"
            Case 11: Result = "Eleven"
            Case 12: Result = "Twelve"
            Case 13: Result = "Thirteen"
            Case 14: Result = "Fourteen"
            Case 15: Result = "Fifteen"
            Case 16: Result = "Sixteen"
            Case 17: Result = "Seventeen"
            Case 18: Result = "Eighteen"
            Case 19: Result = "Nineteen"
            Case Else
        End Select
    Else                                 ' If value between 20-99...
        Select Case Val(Left(TensText, 1))
            Case 2: Result = "Twenty "
            Case 3: Result = "Thirty "
            Case 4: Result = "Forty "
            Case 5: Result = "Fifty "
            Case 6: Result = "Sixty "
            Case 7: Result = "Seventy "
            Case 8: Result = "Eighty "
            Case 9: Result = "Ninety "
            Case Else
        End Select
        Result = Result & GetDigit(Right(TensText, 1))   ' Retrieve ones place.
    End If
    GetTens = Result
End Function

Function GetDigit(Digit) As String
    Select Case Val(Digit)
        Case 1: GetDigit = "One"
        Case 2: GetDigit = "Two"
        Case 3: GetDigit = "Three"
        Case 4: GetDigit = "Four"
        Case 5: GetDigit = "Five"
        Case 6: GetDigit = "Six"
        Case 7: GetDigit = "Seven"
        Case 8: GetDigit = "Eight"
        Case 9: GetDigit = "Nine"
        Case Else: GetDigit = ""
    End Select
End Function

Add VBA Code to Excel

This involves few steps. These are.

  1. In the Excel window, click on Developer tab, then Visual Basic.
  2. In the VBA window, click on Insert tab, then Module.
  3. Copy and Paste the code in Module window, then close VBA window.
Installing spellnumber code for Omani Riyal and Baisa

Use the Function

To use the function, click on a cell, type =SpellOmaniRiyal(A3). This assumes the number to spell is in A3 cell. Refer to first image above for more clarity.

Save the Workbook as Macro-Enabled

In the final step, save your workbook as a macro enabled file type. This is important because we have used the macro code to create custom function. Follow the instructions below to save.

  1. Click on File tab.
  2. Click on Save As.
  3. In the type of file, click on the dropdown and choose Excel Macro-Enabled Workbook (*.xlsm)
  4. Choose file location an click on Save.
saving workbook as macro enabled

Now, next time when you open your workbook, you can use the SpellOmaniRiyal function to convert numeric value of currency to words format.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top