Kamis, 04 November 2010

Fungsi Terbilang

Jika anda pernah melihat lembaran kwitansi, pastinya ada kolom 'Terbilang' yang digunakan untuk menuliskan nominal uang dalam bentuk kata. Fungsi berikut ini digunakan untuk mengubah nominal angka menjadi kata-kata / terbilang, lengkap dengan nilai desimalnya. Misalkan nominal 1500, maka hasilnya adalah 'seribu lima ratus'

Buat sebuah Module baru dan ketikkan : (khusus VB .NET, gantikan kode yang berwarna merah dengan kode System.Math.Abs)
Private Function KeKata(ByVal n As Double)
Dim t As String
Dim Angka() As String
Angka = Split(",satu,dua,tiga,empat,lima,enam,tujuh,delapan,sembilan,sepuluh,sebelas", ",")

If n < 12 Then
t = " " & Angka(n)
ElseIf n < 20 Then
t = KeKata(n - 10) & " belas"
ElseIf n < 100 Then
t = KeKata(n \ 10) & " puluh" & KeKata(n Mod 10)
ElseIf n < 200 Then
t = " seratus" & KeKata(n - 100)
ElseIf n < 1000 Then
t = KeKata(n \ 100) & " ratus" & KeKata(n Mod 100)
ElseIf n < 2000 Then
t = " seribu" & KeKata(n - 1000)
ElseIf n < 1000000 Then
t = KeKata(n \ 1000) & " ribu" & KeKata(n Mod 1000)
ElseIf n < 1000000000 Then
t = KeKata(n \ 1000000) & " juta" & KeKata(n Mod 1000000)
ElseIf n < 1000000000000# Then
t = KeKata(Fix(n / 1000000000)) & " milyar" & KeKata(n - (Fix(n / 1000000000) * 1000000000))
ElseIf n < 1E+15 Then
t = KeKata(Fix(n / 1000000000000#)) & " trilyun" & KeKata(n - (Fix(n / 1000000000000#) * 1000000000000#))
End If

KeKata = t
End Function

Private Function KeKataDesimal(ByVal n As Double)
Dim t As String, s As String, d As String, i As Integer
Dim Angka() As String
d = Mid(5 / 2, 2, 1)
Angka = Split("nol,satu,dua,tiga,empat,lima,enam,tujuh,delapan,sembilan", ",")

s = Split(n, d)(1)
For i = 1 To Len(s)
t = t & " " & Angka(Mid(s, i, 1))
Next

KeKataDesimal = t
End Function

Public Function Terbilang(ByVal Nilai As Double, Optional ByVal AwalKapital As Boolean = False)
Dim s As String, n As Double, d As String
d = Mid(5 / 2, 2, 1)
n = Abs(Nilai)

If InStr(Nilai, d) Then
s = KeKata(n) & " koma " & KeKataDesimal(n)
Else
s = KeKata(n)
End If

If Nilai < 0 Then s = "minus " & s

s = Trim(Replace(s, "  ", " "))

Terbilang = IIf(AwalKapital = True, StrConv(s, 3), s)
End Function

Untuk menggunakannya ketikkan :
s = Terbilang(5500)

Label: , , , ,

0 Komentar:

Posting Komentar

Pengunjung yang baik selalu meninggalkan jejak berupa komentar. :)

Berlangganan Posting Komentar [Atom]

<< Beranda