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
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: (Menengah), Fungsi dan Prosedur, VB .NET, VB 6.0, VBA Office
0 Komentar:
Posting Komentar
Pengunjung yang baik selalu meninggalkan jejak berupa komentar. :)
Berlangganan Posting Komentar [Atom]
<< Beranda