Home Macro Programming Membuat Fungsi Terbilang di VBA Excel

Membuat Fungsi Terbilang di VBA Excel

30

Fungsi ini digunakan untuk merubah angka menjadi ejaan tulisan. Fungsi ini mendukung bilangan bulat maupun pecahan.

Function Terbilang(angka As Variant) As String
    Dim satuan() As String
    satuan = Split("Nol Satu Dua Tiga Empat Lima Enam Tujuh Delapan Sembilan", " ")

    Dim hasil As String
    Dim bagian() As String

    If Not IsNumeric(angka) Then
        Terbilang = "Input bukan angka"
        Exit Function
    End If

    angka = Trim(CStr(angka))
    angka = Replace(angka, ",", ".")
    bagian = Split(angka, ".")

    Dim angkaUtama As Double
    angkaUtama = Val(bagian(0))

    If angkaUtama = 0 Then
        hasil = "Nol"
    Else
        hasil = Trim(TerbilangUtama(angkaUtama))
    End If

    ' Tangani bagian pecahan (desimal)
    If UBound(bagian) > 0 Then
        Dim pecahan As String
        pecahan = bagian(1)
        If Len(pecahan) > 0 Then
            hasil = hasil & " Koma"
            Dim i As Integer
            For i = 1 To Len(pecahan)
                hasil = hasil & " " & satuan(Val(Mid(pecahan, i, 1)))
            Next i
        End If
    End If

    Terbilang = Application.WorksheetFunction.Proper(hasil)
End Function

Private Function TerbilangUtama(n As Double) As String
    Dim satuan() As String
    satuan = Split("Nol Satu Dua Tiga Empat Lima Enam Tujuh Delapan Sembilan Sepuluh Sebelas", " ")

    Select Case n
        Case 0
            TerbilangUtama = ""
        Case 1 To 11
            TerbilangUtama = satuan(n)
        Case 12 To 19
            TerbilangUtama = satuan(n Mod 10) & " Belas"
        Case 20 To 99
            TerbilangUtama = satuan(n \ 10) & " Puluh " & TerbilangUtama(n Mod 10)
        Case 100 To 199
            TerbilangUtama = "Seratus " & TerbilangUtama(n Mod 100)
        Case 200 To 999
            TerbilangUtama = satuan(n \ 100) & " Ratus " & TerbilangUtama(n Mod 100)
        Case 1000 To 1999
            TerbilangUtama = "Seribu " & TerbilangUtama(n Mod 1000)
        Case 2000 To 999999
            TerbilangUtama = TerbilangUtama(n \ 1000) & " Ribu " & TerbilangUtama(n Mod 1000)
        Case 1000000 To 999999999
            TerbilangUtama = TerbilangUtama(n \ 1000000) & " Juta " & TerbilangUtama(n Mod 1000000)
        Case 1000000000 To 2000000000
            TerbilangUtama = TerbilangUtama(n \ 1000000000) & " Miliar " & TerbilangUtama(n Mod 1000000000)
       
        Case Else
            TerbilangUtama = "Angka terlalu besar"
    End Select

    TerbilangUtama = Application.WorksheetFunction.Trim(TerbilangUtama)
End Function