Asalamualaikum warahmatulah,
Dear member Belajar Excel.
Saya membuat UDF sederhana untuk mengubah angka menjadi huruf.
Public Function hurufe(x As String, Optional rupiah As Boolean, Optional
koma As Boolean) As String '
Dim ewonan(6)
ewonan(1) = "ribu "
ewonan(2) = "juta "
ewonan(3) = "milyar "
ewonan(4) = "triliun "
ewonan(5) = "kuadriliun "
If (x = 0) Then
hurufe = "nol "
Exit Function
End IF
xxB = Left(x, km)
For i = 1 To (Int((Len(xxB) + 2) / 3))
tampung = Right(xxB, 3 * i)
bagian = Left(tampung, Len(tampung) - 3 * (i - 1))
If (bagian > 0) Then
If bagian = 1 Then
anu = atusan(bagian, False)
Else
anu = atusan(bagian, True)
End If
tulisan = anu & ewonan(i - 1) & tulisan
End If
Next
hurufe = tulisan
end Function
UDF tersebut hanya dapat digunakan maksimal 999.999.999.999.999 (satu
kuadriliun kurang 1)
Jika 1 kuadriliun langsung error, namun kalau inputnya diubah menjadi text
maka semua berjalan dengan normal sampai angka berapapun.
apakah karena UDF berbunyi x as string? jika diubah x as double sampai 5
milliar saja sudah error apalagi ada komanya.
Permasalahannya kalau input dalam text tidak bisa di format dan tidak bisa
dihitung.
apakah memang excel hanya mampu menghitung teliti sebanyak 15 digit saja?
(tidak dapat menampung bilangan 999.999.999.999.999.999, =>
999.999.999.999.999.000)
saya coba UDF_Leksikal milik Mas Kid:
<https://www.box.com/s/gefh85lon4avu9n66ifm>
Public Function LeNum(sText As String _
, Optional sJenis As String _
, Optional sTandaDesimal As String _
, Optional sLang As String _
, Optional sCurDec As String = "<default>" _
, Optional sCurCent As String = "<default>" _
, Optional sTextCon As String = "<default>" _
, Optional sTextSeparator As String =
"<default>" _
, Optional sCase As String _
, Optional vLang As Variant _
) As String
...
KELUAR:
Err.Clear
On Error GoTo 0
LeNum = "#NULL!"
End Function
Ternyata sama juga, sudah error kalau bilanganya 16 digit.
Apakah ini meripakan keterbatasan Excel? Adakah cara mengakalinya agar
1. UDF dapat berjalan lancar
2. Excel dapat teliti menghitung angka sampai pentaliun
(1.123.123.123.123.123.123.123.123)
Atas perhatiannya disampaikan terima kasih.
Wasalamualaikum warahmatullah.
NangAgus