Function Terbilang Bahasa Indonesia
Function Terbilang Bahasa Indonesia
Function TERBILANG() untuk menampilkan teks dari angka dalam bahasa Indonesia, sudah mendukung penyebutan angka desimal, jika ada.

Dalam dokumen seperti Invoice dan Kwitansi, umumnya dicantumkan teks penyebutan angka, yang biasanya dikenal dengan istilah "terbilang".

Berikut ini adalah function Terbilang dalam Access VBA. Function ini dibuat oleh ChatGPT, dan sudah bisa menyebutkan angka desimal dalam koma, jika ada.

Function fTerbilang(pAngka As Double) As String
    Dim tSatuan As Variant, tBelasan As Variant, tPuluhan As Variant
    Dim tHasil As String, tInteger As Double, tDecimal As Double
    
    ' Definisi angka dalam teks
    tSatuan = Array("", "Satu", "Dua", "Tiga", "Empat", "Lima", "Enam", "Tujuh", "Delapan", "Sembilan")
    tBelasan = Array("Sepuluh", "Sebelas", "Dua Belas", "Tiga Belas", "Empat Belas", "Lima Belas", "Enam Belas", "Tujuh Belas", "Delapan Belas", "Sembilan Belas")
    tPuluhan = Array("", "", "Dua Puluh", "Tiga Puluh", "Empat Puluh", "Lima Puluh", "Enam Puluh", "Tujuh Puluh", "Delapan Puluh", "Sembilan Puluh")
    
    ' Pisahkan bilangan bulat dan desimal
    tInteger = Int(pAngka)
    tDecimal = Round((pAngka - tInteger) * 100)
    
    ' Fungsi konversi angka ke teks
    Dim tAngka As Double, tTemp As String
    tAngka = tInteger
    Do While tAngka > 0
        If tAngka < 10 Then
            tTemp = tSatuan(tAngka)
        ElseIf tAngka < 20 Then
            tTemp = tBelasan(tAngka - 10)
        ElseIf tAngka < 100 Then
            tTemp = tPuluhan(Int(tAngka / 10)) & " " & tSatuan(tAngka Mod 10)
        ElseIf tAngka < 1000 Then
            If tAngka = 100 Then
                tTemp = "Seratus"
            ElseIf tAngka < 200 Then
                tTemp = "Seratus " & fTerbilang(tAngka Mod 100)
            Else
                tTemp = tSatuan(Int(tAngka / 100)) & " Ratus " & fTerbilang(tAngka Mod 100)
            End If
        ElseIf tAngka < 1000000 Then
            If tAngka = 1000 Then
                tTemp = "Seribu"
            ElseIf tAngka < 2000 Then
                tTemp = "Seribu " & fTerbilang(tAngka Mod 1000)
            Else
                tTemp = fTerbilang(Int(tAngka / 1000)) & " Ribu " & fTerbilang(tAngka Mod 1000)
            End If
        ElseIf tAngka < 1000000000 Then
            tTemp = fTerbilang(Int(tAngka / 1000000)) & " Juta " & fTerbilang(tAngka Mod 1000000)
        ElseIf tAngka < 1000000000000# Then
            tTemp = fTerbilang(Int(tAngka / 1000000000)) & " Miliar " & fTerbilang(tAngka Mod 1000000000)
        Else
            tTemp = "Angka terlalu besar"
        End If
        
        tHasil = Trim(tHasil & " " & tTemp)
        Exit Do
    Loop
    
    ' Konversi bagian desimal jika ada
    If tDecimal > 0 Then
        tHasil = Trim(tHasil) & " Koma " & fTerbilang(tDecimal)
    End If
    
    fTerbilang = Trim(tHasil)
End Function

Cara Pemakaian:

  1. Copy-paste code di atas ke dalam sebuah general module (modul umum yang bisa dibuat dengan perintah ribbon CREATE > Module).
  2. Gunaka ekspresi seperti contoh berikut ini untuk mendapatkan teks terbilang:
    tTerbilang = fTerbilang(nNilai)
    jika nNilai berisi nilai 1.234.567,89 maka hasilnya adalah: Satu Juta Dua Ratus Tiga Puluh Empat Ribu Lima Ratus Enam Puluh Tujuh Koma Delapan Puluh Sembilan

Leave a Reply

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

Scroll to Top