Anda di halaman 1dari 6

VERSION 1.

0 CLASS BEGIN MultiUse = -1 'True Persistable = 0 'NotPersistable DataBindingBehavior = 0 'vbNone DataSourceBehavior = 0 'vbNone MTSTransactionMode = 0 'NotAnMTSObject END Attribute VB_Name = "ClassTerbilang" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = True Attribute VB_PredeclaredId = False Attribute VB_Exposed = False Option Explicit Private m_Nilai As Currency Private m_Hasil As String Dim Kata As Variant, Tingkat As Variant Property Let NilaiUang(ByVal Nilai As Currency) m_Nilai = Nilai End Property Property Get HasilKonversi() As String Konversi m_Nilai HasilKonversi = m_Hasil End Property Private Function Konversi(ByVal Nilai As Currency) Dim PanjangKarakter As String, Angka As Currency Dim BatasKoma As Integer, StatusKoma As Boolean, NilaiKoma As String StatusKoma = False Kata = Array(" Nol ", " Satu ", " Dua ", " Tiga ", " Empat ", " Lima ", " Enam " , _ " Tujuh ", " Delapan ", " Sembilan ") Tingkat = Array(" Belas ", " Puluh ", " Ratus ", " Ribu ", " Juta ") '-- membuang tanda koma sebagai penanda bilangan PanjangKarakter = Replace(CStr(Nilai), ",", "") Angka = PanjangKarakter '-- membuang angka dibelakang koma If InStr(1, Trim(PanjangKarakter), ".") > 1 Then StatusKoma = True BatasKoma = InStr(1, Trim(PanjangKarakter), ".") Angka = Trim(Left$(PanjangKarakter, BatasKoma - 1)) PanjangKarakter = Len(Trim(Left$(PanjangKarakter, BatasKoma - 1))) Else StatusKoma = False Angka = Trim(PanjangKarakter) PanjangKarakter = Len(Trim(PanjangKarakter)) End If Select Case PanjangKarakter Case 1 '-- untuk satuan m_Hasil = Kata(Angka) Case 2

'-- untuk puluhan m_Hasil = GetPuluhan(CStr(Angka)) Case 3 '-- untuk ratusan m_Hasil = GetRatusan(CStr(Angka)) Case 4 '-- untuk ribuan m_Hasil = GetRibuan(CStr(Angka)) Case 5 '-- untuk puluhan ribu m_Hasil = GetPuluhanRibu(CStr(Angka)) Case 6 '-- untuk ratusan ribu m_Hasil = GetRatusanRibu(CStr(Angka)) Case 7 '-- untuk Juta m_Hasil = GetJuta(CStr(Angka)) Case 8 '-- untuk Puluhan Juta m_Hasil = GetPuluhanJuta(CStr(Angka)) Case 9 '-- untuk Ratusan Juta m_Hasil = GetRatusanJuta(CStr(Angka)) End Select If StatusKoma Then PanjangKarakter = Replace(CStr(Nilai), ",", "") NilaiKoma = Trim(Mid(Trim(PanjangKarakter), BatasKoma + 1, 5)) If Val(NilaiKoma) > 0 Then Select Case Len(CStr(Val(NilaiKoma))) Case 1 m_Hasil = m_Hasil & " Koma " & Kata(Val(NilaiKoma)) & " Rupiah" Case 2 m_Hasil = m_Hasil & " Koma " & GetPuluhan(NilaiKoma) & " Rupiah" End Select End If Else m_Hasil = m_Hasil & " Rupiah" End If End Function Private Function GetRatusanJuta(ByVal Nilai As String) Dim Temp As String If Val(Right(Nilai, 6)) = 0 Then Temp = GetRatusan(CStr(Val(Left(Nilai, ElseIf Val(Right(Nilai, 6)) < 10 Then Temp = GetRatusan(CStr(Val(Left(Nilai, ht(Nilai, 6))) ElseIf Val(Right(Nilai, 6)) < 99 Then Temp = GetRatusan(CStr(Val(Left(Nilai, Str(Val(Right(Nilai, 6)))) ElseIf Val(Right(Nilai, 6)) <= 999 Then Temp = GetRatusan(CStr(Val(Left(Nilai, Str(Val(Right(Nilai, 6)))) ElseIf Val(Right(Nilai, 6)) < 9999 Then Temp = GetRatusan(CStr(Val(Left(Nilai, tr(Val(Right(Nilai, 6)))) ElseIf Val(Right(Nilai, 6)) < 99999 Then 3)))) & Tingkat(4) 3)))) & Tingkat(4) & Kata(Val(Rig 3)))) & Tingkat(4) & GetPuluhan(C 3)))) & Tingkat(4) & GetRatusan(C 3)))) & Tingkat(4) & GetRibuan(CS

Temp = GetRatusan(CStr(Val(Left(Nilai, 3)))) & Tingkat(4) & GetPuluhanRi bu(CStr(Val(Right(Nilai, 6)))) Else Temp = GetRatusan(CStr(Val(Left(Nilai, 3)))) & Tingkat(4) & GetRatusanRi bu(CStr(Val(Right(Nilai, 6)))) End If GetRatusanJuta = Temp End Function Private Function GetPuluhanJuta(ByVal Nilai As String) Dim Temp As String If Val(Right(Nilai, 6)) = 0 Then Temp = GetPuluhan(CStr(Val(Left(Nilai, ElseIf Val(Right(Nilai, 6)) < 10 Then Temp = GetPuluhan(CStr(Val(Left(Nilai, ht(Nilai, 6))) ElseIf Val(Right(Nilai, 6)) < 99 Then Temp = GetPuluhan(CStr(Val(Left(Nilai, Str(Val(Right(Nilai, 6)))) ElseIf Val(Right(Nilai, 6)) < 999 Then Temp = GetPuluhan(CStr(Val(Left(Nilai, Str(Val(Right(Nilai, 6)))) ElseIf Val(Right(Nilai, 6)) < 9999 Then Temp = GetPuluhan(CStr(Val(Left(Nilai, tr(Val(Right(Nilai, 6)))) ElseIf Val(Right(Nilai, 6)) < 99999 Then Temp = GetPuluhan(CStr(Val(Left(Nilai, bu(CStr(Val(Right(Nilai, 6)))) Else Temp = GetPuluhan(CStr(Val(Left(Nilai, bu(CStr(Val(Right(Nilai, 6)))) End If GetPuluhanJuta = Temp End Function Private Function GetJuta(ByVal Nilai As String) Dim Temp As String If Val(Right(Nilai, 6)) = 0 Then Temp = Kata(Val(Left$(Nilai, 1))) & Tingkat(4) ElseIf Val(Right(Nilai, 6)) < 10 Then Temp = Kata(Val(Left$(Nilai, 1))) & Tingkat(4) & Kata(Val(Right(Nilai, 6 ))) ElseIf Val(Right(Nilai, 6)) < 99 Then Temp = Kata(Val(Left$(Nilai, 1))) & Tingkat(4) ht(Nilai, 6)))) ElseIf Val(Right(Nilai, 6)) < 999 Then Temp = Kata(Val(Left$(Nilai, 1))) & Tingkat(4) ht(Nilai, 6)))) ElseIf Val(Right(Nilai, 6)) < 9999 Then Temp = Kata(Val(Left$(Nilai, 1))) & Tingkat(4) t(Nilai, 6)))) ElseIf Val(Right(Nilai, 6)) < 99999 Then Temp = Kata(Val(Left$(Nilai, 1))) & Tingkat(4) (Right(Nilai, 6)))) Else Temp = Kata(Val(Left$(Nilai, 1))) & Tingkat(4) & GetPuluhan(CStr(Val(Rig & GetRatusan(CStr(Val(Rig & GetRibuan(CStr(Val(Righ & GetPuluhanRibu(CStr(Val & GetRatusanRibu(CStr(Val 2)))) & Tingkat(4) 2)))) & Tingkat(4) & Kata(Val(Rig 2)))) & Tingkat(4) & GetPuluhan(C 2)))) & Tingkat(4) & GetRatusan(C 2)))) & Tingkat(4) & GetRibuan(CS 2)))) & Tingkat(4) & GetPuluhanRi 2)))) & Tingkat(4) & GetRatusanRi

(Right(Nilai, 6)))) End If GetJuta = Temp End Function Private Function GetRatusanRibu(ByVal Nilai As String) Dim Temp As String If Val(Right(Nilai, 4)) = 0 Then Temp = GetRatusan(Left$(Nilai, 3)) & Tingkat(3) ElseIf Val(Right(Nilai, 3)) < 10 Then Temp = GetRatusan(Left$(Nilai, 3)) & Tingkat(3) & Kata(Val(Right(Nilai, 3))) ElseIf Val(Right(Nilai, 3)) < 99 Then Temp = GetRatusan(Left$(Nilai, 3)) & Tingkat(3) & GetPuluhan(Right(Nilai , 2)) ElseIf Val(Right(Nilai, 3)) < 999 Then Temp = GetRatusan(Left$(Nilai, 3)) & Tingkat(3) & GetRatusan(Right(Nilai , 3)) ElseIf Val(Right(Nilai, 3)) > 999 Then Temp = GetRatusan(Left$(Nilai, 3)) & Tingkat(3) & GetRibuan(Right(Nilai, 4)) End If GetRatusanRibu = Temp End Function Private Function GetPuluhanRibu(ByVal Nilai As String) Dim Temp As String If Val(Right(Nilai, 3)) = 0 Then Temp = GetPuluhan(Left$(Nilai, 2)) & Tingkat(3) ElseIf Val(Right(Nilai, 3)) < 10 Then Temp = GetPuluhan(Left$(Nilai, 2)) & Tingkat(3) & Kata(Val(Right(Nilai, 3))) ElseIf Val(Right(Nilai, 3)) < 99 Then Temp = GetPuluhan(Left$(Nilai, 2)) & Tingkat(3) & GetPuluhan(Right(Nilai , 2)) ElseIf Val(Right(Nilai, 3)) > 99 Then Temp = GetPuluhan(Left$(Nilai, 2)) & Tingkat(3) & GetRatusan(Right(Nilai , 3)) End If GetPuluhanRibu = Temp End Function Private Function GetRibuan(ByVal Nilai As String) Dim Temp As String If Val(Left$(Nilai, 1)) = 1 And Val(Right(Nilai, 3)) = 0 Then Temp = "Se" & Tingkat(3) Temp = Replace(Temp, " ", "") ElseIf Val(Left$(Nilai, 1)) = 1 And Val(Right(Nilai, 3)) < 10 Then Temp = Replace("Se" & Tingkat(3), " ", "") & Kata(Val(Right(Nilai, 3))) ElseIf Val(Left$(Nilai, 1)) = 1 And Val(Right(Nilai, 3)) < 99 Then Temp = Replace("Se" & Tingkat(3), " ", "") & " " & GetPuluhan(Right(Nila i, 2)) ElseIf Val(Left$(Nilai, 1)) = 1 And Val(Right(Nilai, 3)) > 99 Then Temp = Replace("Se" & Tingkat(3), " ", "") & " " & GetRatusan(Right(Nila i, 3))

ElseIf Val(Left$(Nilai, 1)) > 1 And Val(Right(Nilai, 3)) = 0 Then Temp = Replace(Kata(Val(Left$(Nilai, 1))), " ", "") & Tingkat(3) ElseIf Val(Left$(Nilai, 1)) > 1 And Val(Right(Nilai, 3)) < 10 Then Temp = Replace(Kata(Val(Left$(Nilai, 1))), " ", "") & Tingkat(3) & Kata( Val(Right(Nilai, 3))) ElseIf Val(Left$(Nilai, 1)) > 1 And Val(Right(Nilai, 3)) < 99 Then Temp = Replace(Kata(Val(Left$(Nilai, 1))), " ", "") & Tingkat(3) & _ GetPuluhan(Right(Nilai, 2)) ElseIf Val(Left$(Nilai, 1)) > 1 And Val(Right(Nilai, 3)) > 99 Then Temp = Replace(Kata(Val(Left$(Nilai, 1))), " ", "") & Tingkat(3) & _ GetRatusan(Right(Nilai, 3)) End If GetRibuan = Temp End Function Private Function GetRatusan(ByVal Nilai As String) Dim Temp As String If Val(Left$(Nilai, 1)) = 1 And Val(Right(Nilai, 2)) = 0 Then Temp = "Se" & Tingkat(2) Temp = Replace(Temp, " ", "") ElseIf Val(Left$(Nilai, 1)) = 1 And Val(Right(Nilai, 2)) < 10 Then Temp = Replace("Se" & Tingkat(2), " ", "") & Kata(Val(Right(Nilai, 2))) ElseIf Val(Left$(Nilai, 1)) = 1 And Val(Right(Nilai, 2)) >= 10 Then Temp = Replace("Se" & Tingkat(2), " ", "") & " " & GetPuluhan(Right(Nila i, 2)) ElseIf Val(Left$(Nilai, 1)) > 1 And Val(Right(Nilai, 2)) = 0 Then Temp = Replace(Kata(Val(Left$(Nilai, 1))), " ", "") & Tingkat(2) ElseIf Val(Left$(Nilai, 1)) > 1 And Val(Right(Nilai, 2)) < 10 Then Temp = Replace(Kata(Val(Left$(Nilai, 1))), " ", "") & Tingkat(2) & _ Replace(Kata(Val(Right(Nilai, 2))), " ", "") ElseIf Val(Left$(Nilai, 1)) > 1 And Val(Right(Nilai, 2)) >= 10 Then Temp = Replace(Kata(Val(Left$(Nilai, 1))), " ", "") & Tingkat(2) & _ GetPuluhan(Right(Nilai, 2)) End If GetRatusan = Temp End Function Private Function GetPuluhan(ByVal Nilai As String) Dim Temp As String If Val(Left$(Nilai, 1)) = 1 And Val(Right(Nilai, 1)) = 0 Then Temp = "Se" & Tingkat(1) Temp = Replace(Temp, " ", "") ElseIf Val(Left$(Nilai, 1)) = 1 And Val(Right(Nilai, 1)) = 1 Then Temp = "Se" & Tingkat(0) Temp = Replace(Temp, " ", "") ElseIf Val(Left$(Nilai, 1)) = 1 And Val(Right(Nilai, 1)) > 1 Then Temp = Replace(Kata(Val(Right(Nilai, 1))), " ", "") & Tingkat(0) ElseIf Val(Left$(Nilai, 1)) > 1 And Val(Right(Nilai, 1)) = 0 Then Temp = Replace(Kata(Val(Left$(Nilai, 1))), " ", "") & Tingkat(1) ElseIf Val(Left$(Nilai, 1)) > 1 And Val(Right(Nilai, 1)) > 0 Then Temp = Replace(Kata(Val(Left$(Nilai, 1))), " ", "") & Tingkat(1) & Kata( Val(Right(Nilai, 1))) End If GetPuluhan = Temp End Function

Anda mungkin juga menyukai