Kepada Yth.
Narasumber
saya menggunakan source ANGKA TO TEKS dari Wahana Progremer Indonesia
tetapi adamasalah yaitu apabila dimasukan angka 1000000 (1Jt)
maka hasilnya SATU JUTA RIBU RUPIAH,kalo 1000000000 (1M)
hasilnya SATU MILYAR JUTA RIBU RUPIAH
saya dah coba utak atik tapi belum berhasil.
saya mohon pada narasumber untuk memberikan solusinya
Bersama ini saya lampirkan Source code-nya
Terima kasih
________________________________________________________
Bergabunglah dengan orang-orang yang berwawasan, di di bidang Anda! Kunjungi
Yahoo! Answers saat ini juga di http://id.answers.yahoo.com/Option Explicit
'---------------------------------------------------
'
' (c) Copyright January 2003, Immawan Buchori, S.Pd
' WahanaProgrammer.net
' blogs.WahanaProgrammer.net
'
'---------------------------------------------------
'
' Jika ada kekeliruan atau ketidaktepatan hasil konversi
' kami berharap anda sudi memberitahukan kami.
'
' Andapun bisa melakukan modifikasi sesuai selera anda,
' tetapi jika mempublikasikannya jangan hapus Copyright-nya.
'
' Semoga anda menjadi Programmer Profesional. Amien.
'
'
' Sebelumnya anda persiapkan satu CommandButton dan
' TextBox pada Form Standart, lalu copy kode dibawah ini
' ke dalam form tersebut.
'
'---------------------------------------------------
Dim llKoma As Boolean
Dim lsTeks1 As String
Dim lsTeks2 As String
Private Sub cmdShowTerbilang_Click()
MsgBox Trim(AngkaToTeks(Trim(txtAngka))), , "Angka Terbilang"
End Sub
Private Function AngkaToTeks(txtAngka) As String
Dim lsAngka As String
Dim lsKomaAngka As String
Dim lsTmpAngkaToTeks As String
Dim i As Integer
Dim lnToLoop As Integer
i = 0
lsAngka = ""
lsKomaAngka = ""
lnToLoop = 0
lsTmpAngkaToTeks = ""
' Jika ada koma, tangkap angka dibelakang koma dengan var lsKomaAngka
If llKoma Then
lsAngka = Trim(Str(Val(Left(txtAngka, InStr(txtAngka, ",") - 1))))
lsKomaAngka = Mid(txtAngka, InStr(txtAngka, ",") + 1)
Else
lsAngka = Trim(Str(Val(txtAngka)))
lsKomaAngka = ""
End If
If Val(lsAngka) = 0 Then
AngkaToTeks = "Nol" & IIf(Val(lsKomaAngka) = 0, " Rupiah", _
KomaAngka(lsKomaAngka))
Exit Function
End If
' Angka Maks. dalam Triliun, mis. 550.750.925.623.450,5284
If Len(lsAngka) > 18 Then
AngkaToTeks = "Jumlah digit Angka maks. 18." & Chr(13) & _
"Jumlah digit dibelakang koma terserah anda."
Exit Function
End If
If ((Len(lsAngka) / 3) - Int(Len(lsAngka) / 3)) > 0 Then
lnToLoop = (Int(Len(lsAngka) / 3) * 3 + 3) / 3
lsAngka = Space(Int(Len(lsAngka) / 3) * 3 + 3 - Len(lsAngka)) & lsAngka
Else
lnToLoop = Len(lsAngka) / 3
End If
' Looping (lnToLoop) disini dihitung berdasarkan kelipatan 3 dari
' panjang lsAngka.
For i = 1 To lnToLoop
' Logika ini berfungsi mencegah angka seribu 1234, jika tidak
' dicegah akan muncul SATU RIBU bukanya SERIBU.
' dan Loopingnya dinaikkan satu, karena variable lsAngka telah
' dikurangi satu karakter, tadinya 1234 menjadi 234.
If Len(Trim(lsAngka)) = 4 And Left(Trim(lsAngka), 1) = 1 Then
lsTmpAngkaToTeks = lsTmpAngkaToTeks + " Seribu "
lsAngka = Right(lsAngka, 3)
i = 2
End If
If Mid(lsAngka, 1, 1) = "1" Then
lsTmpAngkaToTeks = lsTmpAngkaToTeks + " Seratus "
End If
If Mid(lsAngka, 1, 1) > "1" Then
lsTmpAngkaToTeks = lsTmpAngkaToTeks + _
RTrim(Mid(lsTeks1, Val(Mid(lsAngka, 1, 1)) * 8 - 7, 8)) + _
" Ratus "
End If
If Mid(lsAngka, 2, 1) = "1" Then
Select Case Mid(lsAngka, 3, 1)
Case Is = "0"
lsTmpAngkaToTeks = lsTmpAngkaToTeks + " Sepuluh "
Case Is = "1"
lsTmpAngkaToTeks = lsTmpAngkaToTeks + " Sebelas "
Case Is > "1"
lsTmpAngkaToTeks = lsTmpAngkaToTeks + _
RTrim(Mid(lsTeks1, Val(Mid(lsAngka, 3, 1)) * 8 - 7, 8)) + _
" Belas "
End Select
End If
If Mid(lsAngka, 2, 1) > "1" Then
lsTmpAngkaToTeks = lsTmpAngkaToTeks + _
RTrim(Mid(lsTeks1, Val(Mid(lsAngka, 2, 1)) * 8 - 7, 8)) + _
" Puluh "
If Mid(lsAngka, 3, 1) > "0" Then
lsTmpAngkaToTeks = lsTmpAngkaToTeks + _
RTrim(Mid(lsTeks1, Val(Mid(lsAngka, 3, 1)) * 8 - 7, 8))
End If
End If
If Mid(lsAngka, 2, 1) = "0" And Mid(lsAngka, 3, 1) > "0" Then
lsTmpAngkaToTeks = lsTmpAngkaToTeks + _
RTrim(Mid(lsTeks1, Val(Mid(lsAngka, 3, 1)) * 8 - 7, 8))
End If
If Mid(lsAngka, 1, 2) = " " And Mid(lsAngka, 3, 1) > "0" Then
lsTmpAngkaToTeks = lsTmpAngkaToTeks + _
RTrim(Mid(lsTeks1, Val(Mid(lsAngka, 3, 1)) * 8 - 7, 8))
End If
' Mengambil lsTeks2
If Not IsEmpty(lsTmpAngkaToTeks) Then
lsTmpAngkaToTeks = lsTmpAngkaToTeks & " " & _
RTrim(Mid(lsTeks2, Len(lsAngka) / 3 * 7 - 6, 7)) & " "
End If
lsAngka = Mid(lsAngka, 4)
Next i
If Not llKoma Then
AngkaToTeks = lsTmpAngkaToTeks
Else
AngkaToTeks = lsTmpAngkaToTeks & KomaAngka(lsKomaAngka)
End If
End Function
Private Function KomaAngka(sKomaAngka As String) As String
Dim i As Integer
Dim lsTmpKomaAngka As String
i = 0
lsTmpKomaAngka = ""
For i = 1 To Len(sKomaAngka)
If Val(Mid(sKomaAngka, i, 1)) = 0 Then
lsTmpKomaAngka = lsTmpKomaAngka & "Nol "
Else
lsTmpKomaAngka = lsTmpKomaAngka & RTrim(Mid(lsTeks1, _
Val(Mid(sKomaAngka, i, 1)) * 8 - 7, 8)) & " "
End If
Next i
KomaAngka = " Koma " & lsTmpKomaAngka
End Function
Private Sub Form_Initialize()
lsTeks1 = "Satu Dua Tiga Empat Lima Enam " & _
"Tujuh Delapan Sembilan"
lsTeks2 = "Rupiah Ribu Juta Milyar Triliun"
llKoma = False
End Sub
Private Sub txtAngka_KeyPress(KeyAscii As Integer)
If Not ((KeyAscii >= 48 And KeyAscii <= 57) Or _
KeyAscii = 8 Or _
KeyAscii = 44) Then KeyAscii = 0
If KeyAscii = 44 And llKoma Then KeyAscii = 0
End Sub
Private Sub txtAngka_KeyUp(KeyCode As Integer, Shift As Integer)
llKoma = IIf(InStr(txtAngka.Text, ",") > 0, True, False)
End Sub