ruboW
16-02-2007, 04:53 PM
maaf saya buat topik baru
ini problemnya..
silakan klik link yg saya berikan (keduanya sama) kl ngak bisa rar.. pasti anda bisa buka yg zip.
berikut ini kode yg jadi sumber malapetaka
Function num2txt(hrg As Integer) As String
PNJ = Len(Str(hrg))
j = 0
For i = PNJ To 1
angka2 = Mid(hrg, i, 1)
angka1 = angka2 & "_" & angka1
j = j + 1
Next
num2txt = angka2
End Function
Private Sub InvoiceAmount_Click()
'InvoiceDescription.SetFocus
PNJ = Len(Str(InvoiceAmount)) - 4
ANGKANYA = Mid(InvoiceAmount, 1, PNJ)
'
' hrg = Str(InvoiceAmount)
Dim Panjang%, StrRuas$, Ulangan%, Rep%, Sisa%, StrSisa$, StrBlok$, UlanganX&
Dim Belakang%, BelakangNum%, IntSwap%, Int10%, RibuRef%
Dim Bilangan%, StrRuasX$, RepX%, StrBilangan$
If ANGKANYA = "0" Or ANGKANYA = "" Then
BacaAngka = "NOL "
'Exit Function
End If
Panjang = Len(CStr(ANGKANYA))
If Panjang > 18 Then 'kalu lebih dari 999.999.999.999.999 (seribu bilyun!?)
BacaAngka = ""
'Exit Function
End If 'misal angkanya Rp 123.456.789.123 terus
Sisa = Panjang Mod 3 'nge-cek apakah jumlah angkanya berkelipatan 3 ?
If Sisa = 0 Then 'kalu angkanya kayak gini: 23.456.789.123
Ulangan = (Panjang - Sisa) / 3
Else
Ulangan = ((Panjang - Sisa) / 3) + 1
End If
UlanganX = Ulangan * 3
StrBlok = Space((Ulangan * 3) - Panjang) & CStr(ANGKANYA)
For Rep = 1 To UlanganX Step 3
StrRuas = Mid(StrBlok, Rep, 3) ' -> ruas string yang isinya tiga angka or less
If StrRuas <> "000" Then
StrRuasX = Trim(StrRuas) ' trimmed ruas, kalu less than 3
For RepX = 1 To Len(StrRuasX)
Bilangan = CInt(Mid(StrRuasX, RepX, 1)) 'number yg mo dibaca dalam satu ruas "###"
Select Case Bilangan
Case 1
Belakang = Len(StrRuasX) - RepX
If Belakang = 2 Then ' -> ***.1##.***
StrBilangan = StrBilangan & "SERATUS "
ElseIf Belakang = 1 Then ' -> ***.#1#.***
IntSwap = CInt(Mid(StrRuasX, RepX, 2))
Select Case IntSwap
Case 10
StrBilangan = StrBilangan & "SEPULUH "
Exit For
Case 11
StrBilangan = StrBilangan & "SEBELAS "
Exit For
Case 12
StrBilangan = StrBilangan & "DUA BELAS "
Exit For
Case 13
StrBilangan = StrBilangan & "TIGA BELAS "
Exit For
Case 14
StrBilangan = StrBilangan & "EMPAT BELAS "
Exit For
Case 15
StrBilangan = StrBilangan & "LIMA BELAS "
Exit For
Case 16
StrBilangan = StrBilangan & "ENAM BELAS "
Exit For
Case 17
StrBilangan = StrBilangan & "TUJUH BELAS "
Exit For
Case 18
StrBilangan = StrBilangan & "DELAPAN BELAS "
Exit For
Case 19
StrBilangan = StrBilangan & "SEMBILAN BELAS "
Exit For
End Select
Else
If Ulangan < 3 And UlanganX > 3 And RepX = 1 Then
StrBilangan = StrBilangan & "SE" '"SERIBU "
Else
StrBilangan = StrBilangan & "SATU "
End If
End If
Case 2
StrBilangan = StrBilangan & "DUA "
Case 3
StrBilangan = StrBilangan & "TIGA "
Case 4
StrBilangan = StrBilangan & "EMPAT "
Case 5
StrBilangan = StrBilangan & "LIMA "
Case 6
StrBilangan = StrBilangan & "ENAM "
Case 7
StrBilangan = StrBilangan & "TUJUH "
Case 8
StrBilangan = StrBilangan & "DELAPAN "
Case 9
StrBilangan = StrBilangan & "SEMBILAN "
End Select
If Bilangan <> 0 Then
BelakangNum = Len(StrRuasX) - RepX
If BelakangNum = 2 Then
If Bilangan <> 1 Then
StrBilangan = StrBilangan & "RATUS "
End If
ElseIf BelakangNum = 1 Then
StrBilangan = StrBilangan & "PULUH "
End If
End If
Next 'nomor selandjutnja dalam satu ruas
End If
If StrRuas <> "000" Then
Int10 = UlanganX - Rep
txt = txt & Str(Int10)
Select Case Int10
'Case Is = 2
'If Bilangan <> 1 Then
'End If
Case Is <= 5
If Int10 = 5 Then
StrBilangan = StrBilangan & "RIBU "
block2 = 1
End If
If Int10 = 2 And Not block2 = 1 Then
StrBilangan = StrBilangan & "RIBU "
End If
Case 7 To 9
StrBilangan = StrBilangan & "JUTA "
Case 10 To 12
StrBilangan = StrBilangan & "MILYAR "
Case 13 To 15
StrBilangan = StrBilangan & "TRILIUN "
Case 16 To 18
StrBilangan = StrBilangan & "BILYUN "
End Select
End If
Next 'ruas selandjutnja
'BacaAngka = StrBilangan
InvoiceDescription.SetFocus
InvoiceDescription = StrBilangan & " RUPIAH."
InvoiceAmount.SetFocusmoga2 spacenya cukup
script ini bertujuan mengubah angka jadi text
contoh 3400 jadi tiga ribut empat ratus
yg jadi masalah adalah.. saat masuk 250 keluarnya cuma rupiah
1000 keluar satu ribu.. kira2 kenapa ya?
maaf kl udah menyulitkan saudara/i
bukan mau double post.. ini biar ngak tembus batasnya
ini problemnya..
silakan klik link yg saya berikan (keduanya sama) kl ngak bisa rar.. pasti anda bisa buka yg zip.
berikut ini kode yg jadi sumber malapetaka
Function num2txt(hrg As Integer) As String
PNJ = Len(Str(hrg))
j = 0
For i = PNJ To 1
angka2 = Mid(hrg, i, 1)
angka1 = angka2 & "_" & angka1
j = j + 1
Next
num2txt = angka2
End Function
Private Sub InvoiceAmount_Click()
'InvoiceDescription.SetFocus
PNJ = Len(Str(InvoiceAmount)) - 4
ANGKANYA = Mid(InvoiceAmount, 1, PNJ)
'
' hrg = Str(InvoiceAmount)
Dim Panjang%, StrRuas$, Ulangan%, Rep%, Sisa%, StrSisa$, StrBlok$, UlanganX&
Dim Belakang%, BelakangNum%, IntSwap%, Int10%, RibuRef%
Dim Bilangan%, StrRuasX$, RepX%, StrBilangan$
If ANGKANYA = "0" Or ANGKANYA = "" Then
BacaAngka = "NOL "
'Exit Function
End If
Panjang = Len(CStr(ANGKANYA))
If Panjang > 18 Then 'kalu lebih dari 999.999.999.999.999 (seribu bilyun!?)
BacaAngka = ""
'Exit Function
End If 'misal angkanya Rp 123.456.789.123 terus
Sisa = Panjang Mod 3 'nge-cek apakah jumlah angkanya berkelipatan 3 ?
If Sisa = 0 Then 'kalu angkanya kayak gini: 23.456.789.123
Ulangan = (Panjang - Sisa) / 3
Else
Ulangan = ((Panjang - Sisa) / 3) + 1
End If
UlanganX = Ulangan * 3
StrBlok = Space((Ulangan * 3) - Panjang) & CStr(ANGKANYA)
For Rep = 1 To UlanganX Step 3
StrRuas = Mid(StrBlok, Rep, 3) ' -> ruas string yang isinya tiga angka or less
If StrRuas <> "000" Then
StrRuasX = Trim(StrRuas) ' trimmed ruas, kalu less than 3
For RepX = 1 To Len(StrRuasX)
Bilangan = CInt(Mid(StrRuasX, RepX, 1)) 'number yg mo dibaca dalam satu ruas "###"
Select Case Bilangan
Case 1
Belakang = Len(StrRuasX) - RepX
If Belakang = 2 Then ' -> ***.1##.***
StrBilangan = StrBilangan & "SERATUS "
ElseIf Belakang = 1 Then ' -> ***.#1#.***
IntSwap = CInt(Mid(StrRuasX, RepX, 2))
Select Case IntSwap
Case 10
StrBilangan = StrBilangan & "SEPULUH "
Exit For
Case 11
StrBilangan = StrBilangan & "SEBELAS "
Exit For
Case 12
StrBilangan = StrBilangan & "DUA BELAS "
Exit For
Case 13
StrBilangan = StrBilangan & "TIGA BELAS "
Exit For
Case 14
StrBilangan = StrBilangan & "EMPAT BELAS "
Exit For
Case 15
StrBilangan = StrBilangan & "LIMA BELAS "
Exit For
Case 16
StrBilangan = StrBilangan & "ENAM BELAS "
Exit For
Case 17
StrBilangan = StrBilangan & "TUJUH BELAS "
Exit For
Case 18
StrBilangan = StrBilangan & "DELAPAN BELAS "
Exit For
Case 19
StrBilangan = StrBilangan & "SEMBILAN BELAS "
Exit For
End Select
Else
If Ulangan < 3 And UlanganX > 3 And RepX = 1 Then
StrBilangan = StrBilangan & "SE" '"SERIBU "
Else
StrBilangan = StrBilangan & "SATU "
End If
End If
Case 2
StrBilangan = StrBilangan & "DUA "
Case 3
StrBilangan = StrBilangan & "TIGA "
Case 4
StrBilangan = StrBilangan & "EMPAT "
Case 5
StrBilangan = StrBilangan & "LIMA "
Case 6
StrBilangan = StrBilangan & "ENAM "
Case 7
StrBilangan = StrBilangan & "TUJUH "
Case 8
StrBilangan = StrBilangan & "DELAPAN "
Case 9
StrBilangan = StrBilangan & "SEMBILAN "
End Select
If Bilangan <> 0 Then
BelakangNum = Len(StrRuasX) - RepX
If BelakangNum = 2 Then
If Bilangan <> 1 Then
StrBilangan = StrBilangan & "RATUS "
End If
ElseIf BelakangNum = 1 Then
StrBilangan = StrBilangan & "PULUH "
End If
End If
Next 'nomor selandjutnja dalam satu ruas
End If
If StrRuas <> "000" Then
Int10 = UlanganX - Rep
txt = txt & Str(Int10)
Select Case Int10
'Case Is = 2
'If Bilangan <> 1 Then
'End If
Case Is <= 5
If Int10 = 5 Then
StrBilangan = StrBilangan & "RIBU "
block2 = 1
End If
If Int10 = 2 And Not block2 = 1 Then
StrBilangan = StrBilangan & "RIBU "
End If
Case 7 To 9
StrBilangan = StrBilangan & "JUTA "
Case 10 To 12
StrBilangan = StrBilangan & "MILYAR "
Case 13 To 15
StrBilangan = StrBilangan & "TRILIUN "
Case 16 To 18
StrBilangan = StrBilangan & "BILYUN "
End Select
End If
Next 'ruas selandjutnja
'BacaAngka = StrBilangan
InvoiceDescription.SetFocus
InvoiceDescription = StrBilangan & " RUPIAH."
InvoiceAmount.SetFocusmoga2 spacenya cukup
script ini bertujuan mengubah angka jadi text
contoh 3400 jadi tiga ribut empat ratus
yg jadi masalah adalah.. saat masuk 250 keluarnya cuma rupiah
1000 keluar satu ribu.. kira2 kenapa ya?
maaf kl udah menyulitkan saudara/i
bukan mau double post.. ini biar ngak tembus batasnya