Spelling Money Amount using Visual Basic Script

Saturday, March 22, 2008


Scroll To English Version

Membilang Nominal Uang Menggunakan Script Visual Basic



Untuk aplikasi yang menangani penjumlahan uang seperti aplikasi accounting, aplikasi penjualan dan sebagainya akan lebih menarik jika ditambahkan 'fitur' untuk mengeja nilai nominal uang misalnya untuk jumlah uang 1525500 aplikasi akan mengeja-nya sebagai berikut :



"Satu Juta Lima Ratus Dua Puluh Lima Ribu Lima Ratus"


Disini aku akan sharing sebuah script visual basic untuk melakukan hal tersebut. biar lebih jelas aku akan buat sebuah aplikasi sederhana dengan Visual Basic, berikut ini langkah-langkahnya :




  • Masuk ke Visual Basic, buat sebuah project standar.EXE

  • tambahkan sebuah komponen CommandButton, sebuah TextBox dan beberapa label, sehingga tampilannya seperti gambar berikut ini :





  • buat sebuah function dengan nama SpellAmount(), sebagai berikut :




Function SpellAmount(Amount As Currency) As String

Dim satuan As Variant

satuan = Array("", "Satu", "Dua", "Tiga", "Empat", "Lima", "Enam", "Tujuh", "Delapan", "Sembilan", "Sepuluh", "Sebelas")



Select Case Amount

Case 0 To 11

SpellAmount = " " & satuan(Fix(Amount))

Case 12 To 19

SpellAmount = SpellAmount(Amount Mod 10) & " Belas"

Case 20 To 99

SpellAmount = SpellAmount(Fix(Amount / 10)) & " Puluh" + SpellAmount(Amount Mod 10)



Case 100 To 199

SpellAmount = " Seratus" & SpellAmount(Amount - 100)

Case 200 To 999

SpellAmount = SpellAmount(Fix(Amount / 100)) & " Ratus" + SpellAmount(Amount Mod 100)



Case 1000 To 1999

SpellAmount = " Seribu" & SpellAmount(Amount - 1000)

Case 2000 To 999999

SpellAmount = SpellAmount(Fix(Amount / 1000)) & " Ribu" + SpellAmount(Amount Mod 1000)



Case 1000000 To 999999999

SpellAmount = SpellAmount(Fix(Amount / 1000000)) & " Juta" & SpellAmount(Amount Mod 1000000)

Case 1000000000 To 2147482999

SpellAmount = SpellAmount(Fix(Amount / 1000000000)) & " Milyar" + SpellAmount(Amount Mod 1000000000)


Case Else

SpellAmount = "Tidak dapat menghitung"

End Select



End Function



  • dobel klik komponen CommandButton, tambahkan kode perintah berikut :




Private Sub Command1_Click()

Dim value As Variant



value = SpellAmount(Text1.Text)

Label1.Caption = "Terbilang : " & Chr(10) & value



End Sub


Tampilan pada saat Runtime :





Function ini akan mengeja/membilang nilai nominal dengan range 1 - 2147482999. Untuk kondisi Amount > 2147482999, aku gunakan string kalimat "Tidak dapat membilang" karena jika tidak aplikasi akan mengalami Error karena terjadi overflow (nilai diluar jangkauan dari tipe data yang digunakan). tetapi walaupun begitu menurutku script ini sudah cukup untuk disertakan dalam sebuah aplikasi penjualan. semoga bermanfaat.













Scroll To Indonesia Version


For application that handle arithmetic operation (for money) such as accounting application, sales application would be more interesting if you add 'Spelling feature' for Amount of money. For example for the amounts of moneys of 1525500 the application will spell it as follows :




"One Million Five Hundreds Twenty Five Thousands Five Hundreds"



Here I will share a visual basic script to do that. to be clearer I will make a simple application with Visual Basic, following is the steps :




  • Make a new Standar.EXE Project in Visual Basic

  • Add a CommandButton, TextBox and some label, so the appearance will be like this :






  • Create a function SpellAmount(), as follows :



Function SpellAmount(Amount As Currency) As String

Dim unit As Variant

unit = Array("", "One", "Two", "Three", "Four", "Five", "Six", "Seven", _

"Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", _

"Sixteen", "Seventeen", "Eighteen", "Nineteen", "Twenty")



Select Case Amount


Case 0 To 20

SpellAmount = " " & unit(Fix(Amount))



Case 21 To 29

SpellAmount = " Twenty" & SpellAmount(Amount Mod 10)



Case 30 To 30

SpellAmount = " Thirty"



Case 31 To 39

SpellAmount = " Thirty" & SpellAmount(Amount Mod 10)



Case 40 To 49

SpellAmount = " Fourty" & SpellAmount(Amount Mod 10)



Case 50 To 50

SpellAmount = " Fifty"



Case 51 To 59

SpellAmount = " Fifty" & SpellAmount(Amount Mod 10)


Case 60 To 79

SpellAmount = SpellAmount(Fix(Amount / 10)) & "ty" & SpellAmount(Amount Mod 10)



Case 80 To 89

SpellAmount = SpellAmount(Fix(Amount / 10)) & "y" & SpellAmount(Amount Mod 10)



Case 90 To 99

SpellAmount = SpellAmount(Fix(Amount / 10)) & "ty" & SpellAmount(Amount Mod 10)




Case 100 To 999

SpellAmount = SpellAmount(Fix(Amount / 100)) & " Hundreds" & SpellAmount(Amount Mod 100)



Case 1000 To 999999

SpellAmount = SpellAmount(Fix(Amount / 1000)) & " Thousand" & SpellAmount(Amount Mod 1000)



Case 1000000 To 999999999

SpellAmount = SpellAmount(Fix(Amount / 1000000)) & " Million" & SpellAmount(Amount Mod 1000000)



Case 1000000000 To 2147482999

SpellAmount = SpellAmount(Fix(Amount / 1000000000)) & " Billion" & SpellAmount(Amount Mod 1000000000)



Case Else

SpellAmount = "Cannot Spelling"

End Select



End Function



  • Double Click on CommandButton component, add the following code :




Private Sub Command1_Click()

Dim value As Variant



value = SpellAmount(Text1.Text)

Label1.Caption = "Amount : " & Chr(10) & value



End Sub


Runtime Screenshot :





This function will spell the value within range 1 - 2147482999. For the condition of Amount more than 2147482999, i use "Cannot Spelling" string
for the return of the function because if i don't use it, the application will experience an
overflow Error (value out of reach). Although it was so,  but i think this
script is powerfull enough to use in a sales application software or accounting
aplication.


1 comments:

Suhendri Mr said...

Itukan untuk menampilkan bilangan nilai currency yang ada gan.
Kalo untuk membuat nilai currency sendiri gimana?

Jadi kalo belum disetting kode-Nya biasanya hasil input teks box seperti ini, misal : input 10000

nah kalo pengen diubah secara otomatis nilai yang diinput tersebut menjadi 10.000

sesuai fungsi currency itu bagaimana ya?

Dengan cacatan nilai yang kita input tidak ditentukan melainkan sesuai keinginan atau kebutuhan. tolong dibantu ya..??

Recent Comments

Tags Cloud

Blogumulus by Roy Tanck and Amanda Fazani