Ticktab

Thursday, November 12, 2009

Konversi Nilai ke Kata (Uang dalam Rupiah) dengan Excel

 Program berikut ini adalah modul yang dibuat dalam VBA

Program ini merupakan konversi dari nilai ke kata
contohnya :

4000 = Empat Ribu Rupiah

Program ini dibatasi hanya sampai 999 triliun

Penggunaan modulus 10 sangat kental dalam pembuatannya, dan logika pun tidak luput terbawa...

Source code nya kemudian masukan ke list vba dengan meng-insert module
masukan ke module nya, dengan klik kanan di
VBA Project -> insert -> module
paste di dalam module nya,

source nya dapat sobat copy dari spoiler berikut ini
Source Code> :


Function nilaiKeKata(angka As String)
Dim i As Integer 'index pengisian array
Dim panjang As Integer 'variabel penampung panjang string
Dim tempPanjang As Integer 'variabel penampung panjang string untuk penentu nilai 0
Dim nilai(15) As Integer 'variabel penampung data dari string bertipe array of integer
Dim tempKata As String 'variabel penampung untuk pengisian string
For i = 0 To 14
nilai(i) = 0 'Pengisian padding 0 untuk array integer nya
Next i
panjang = Len(angka) 'Mengambil panjang dari inputan
tempPanjang = Len(angka)
For i = 14 To (14 - (tempPanjang - 1)) Step -1
nilai(i) = Right(Left(angka, panjang), 1) 'Mengisi setiap elemen array dengan data karakter
panjang = panjang - 1
Next i
If angka = "0" Then 'Jika data yang inputkan adalah 0, langsung dikembalikan string "Nol"
tempKata = "Nol"
Else
For i = 0 To 14 Step 3 'Jika tidak maka memanggil modul-modul yang lain
tempKata = tempKata + satuDigit(nilai(), i)
tempKata = tempKata + duaDigit(nilai(), i + 1)
Next i
End If
tempKata = LTrim(tempKata) 'Menghilangkan spasi di awal
nilaiKeKata = tempKata + " Rupiah" 'Nilai kembalian berupa hasil pemrosesan ditambah kata Rupiah
End Function


Function satuDigit(x() As Integer, i As Integer) As String 'Modul untuk konversi digit pertama, yaitu bernilai ratusan
Dim temp As Integer 'Pendefinisian variabel
Dim status As Boolean
Dim tempAngka As String
status = False 'inisialisasi
Select Case x(i) 'Pengecekan nilai x
Case 0
tempAngka = ""
Case 1
tempAngka = dataAbNormal(4)
status = True
Case Else
tempAngka = dataNormal(x(i)) + " " + dataAbNormal(5)
status = True
End Select
If (status) And (x(i + 1) = 0) Then 'Jika nilai x adalah 0 maka diberi kata berikutnya
temp = Int(i / 3) 'Pemudahan proses
Select Case temp
Case 0
tempAngka = tempAngka + " Triliun"
Case 1
tempAngka = tempAngka + " Milyar"
Case 2
tempAngka = tempAngka + " Juta"
Case 3
tempAngka = tempAngka + " Ribu"
Case 4
tempAngka = tempAngka + ""
End Select
End If
If status Then 'Untuk pemberian spasi, agar terlihat lebih baik
tempAngka = " " + tempAngka
End If
satuDigit = tempAngka
End Function


Function duaDigit(x() As Integer, i As Integer) As String 'Modul untuk konversi digit kedua dan ketiga (satuan, puluhan dan kelipatannya)
Dim tempAngka As String 'Pendefinisian variabel
Dim status As Boolean
Dim temp As Integer
status = False 'inisialisasi
Select Case x(i) 'Pengecekan nilai x
Case 0
If (x(i + 1) = 0) Then
tempAngka = ""
Else
tempAngka = dataNormal(x(i + 1))
status = True
End If
Case 1
If (x(i + 1) = 0) Then
tempAngka = dataAbNormal(2) 'Pemberian nilai 10
ElseIf (x(i + 1) = 1) Then
tempAngka = dataAbNormal(0) 'Pemberian nilai 11
Else
tempAngka = dataNormal(x(i + 1)) + " " + dataAbNormal(1)
End If
status = True
Case Else
tempAngka = dataNormal(x(i)) + " " + dataAbNormal(3) + " " + dataNormal(x(i + 1))
status = True
End Select
If status = True Then
temp = Int(i / 3)
Select Case temp
Case 0
tempAngka = tempAngka + " Triliun"
Case 1
tempAngka = tempAngka + " Milyar"
Case 2
tempAngka = tempAngka + " Juta"
Case 3
tempAngka = tempAngka + " Ribu"
Case 4
tempAngka = tempAngka + ""
End Select
tempAngka = " " + tempAngka
End If
duaDigit = tempAngka
End Function


Function dataNormal(n As Integer) As String 'Data acuan untuk nilai yang normal
Dim data(10) As String
data(0) = ""
data(1) = "Satu"
data(2) = "Dua"
data(3) = "Tiga"
data(4) = "Empat"
data(5) = "Lima"
data(6) = "Enam"
data(7) = "Tujuh"
data(8) = "Delapan"
data(9) = "Sembilan"
dataNormal = data(n)
End Function


Function dataAbNormal(n As Integer) As String 'data acuan untuk kata yang tidak biasa
Dim data(6) As String
data(0) = "Sebelas"
data(1) = "Belas"
data(2) = "Sepuluh"
data(3) = "Puluh"
data(4) = "Seratus"
data(5) = "Ratus"
dataAbNormal = data(n)
End Function




Ket : Gunakan Microsoft Excel 2003
Jangan lupa untuk men-set low macro security nya
Tools - Options -> pilih tab security
Klik Macro Security - pilih low.
Exit Excel, baru jalankan program nya

No comments:

Post a Comment