Senin, 11 Juni 2012

Macro Excel: Mengubah Angka Menjadi Teks



Misalkan, diberikan sebuah angka 145 akan berubah menjadi seratus empat puluh lima. Seperti tulisan “terbilang” yang ada di kuitansi-kuitansi.


Berikut ini adalah kode Makro yg berfungsi untuk mengubah angka menjadi teks:

Option Explicit

'***************
' Fungsi Utama
' Mengubah Angka Menjadi Teks
'***************
Function Terbilang(ByVal MyNumber)
    Dim Rupiah, Sen, Temp
    Dim Des, Desimal, Count, Tmp
    Dim IsNeg

    ReDim Place(9) As String
    Place(2) = "ribu "
    Place(3) = "juta "
    Place(4) = "milyar "
    Place(5) = "trilyun "
    'Ubah angka menjadi string
    MyNumber = Round(MyNumber, 2)
    MyNumber = Trim(Str(MyNumber))
   
    'Cek bilangan negatif
    If Mid(MyNumber, 1, 1) = "-" Then
        MyNumber = Right(MyNumber, Len(MyNumber) - 1)
        IsNeg = True
    End If

    'Posisi desimal, 0 jika bil. bulat
    Desimal = InStr(MyNumber, ".")
    'Pembulatan sen, dua angka di belakang koma
    Des = Mid(MyNumber, Desimal + 2)
    If Desimal > 0 Then
        Tmp = Left(Mid(MyNumber, Desimal + 1) & "00", 2)
        If Left(Tmp, 1) = "0" Then
            Tmp = Mid(Tmp, 2)
            Sen = Satuan(Tmp)
        Else
            Sen = Puluhan(Tmp)
        End If
        MyNumber = Trim(Left(MyNumber, Desimal - 1))
    End If

    Count = 1
    Do While MyNumber <> ""
       Temp = Ratusan(Right(MyNumber, 3), Count)
       If Temp <> "" Then Rupiah = Temp & Place(Count) & Rupiah
          If Len(MyNumber) > 3 Then
             MyNumber = Left(MyNumber, Len(MyNumber) - 3)
       Else
          MyNumber = ""
       End If
       Count = Count + 1
    Loop

    Select Case Rupiah
        Case ""
            Rupiah = "nol rupiah"
        Case Else
            Rupiah = Rupiah & "rupiah"
    End Select

    Select Case Sen
        Case ""
            Sen = ""
        Case Else
            Sen = " dan " & Sen & "sen"
    End Select

    If IsNeg = True Then
        Terbilang = "minus " & Rupiah & Sen
    Else
        Terbilang = Rupiah & Sen
    End If

End Function


'**************************************
' Mengubah angka 100-999 menjadi teks *
'**************************************
Function Ratusan(ByVal MyNumber, Count)
    Dim Result As String
    Dim Tmp

    If Val(MyNumber) = 0 Then Exit Function
    MyNumber = Right("000" & MyNumber, 3)

    'Mengubah seribu
    If MyNumber = "001" And Count = 2 Then
        Ratusan = "se"
        Exit Function
    End If

    'Mengubah ratusan
    If Mid(MyNumber, 1, 1) <> "0" Then
        If Mid(MyNumber, 1, 1) = "1" Then
            Result = "seratus "
        Else
            Result = Satuan(Mid(MyNumber, 1, 1)) & "ratus "
        End If
    End If

    'Mengubah puluhan dan satuan
    If Mid(MyNumber, 2, 1) <> "0" Then
        Result = Result & Puluhan(Mid(MyNumber, 2))
    Else
        Result = Result & Satuan(Mid(MyNumber, 3))
    End If

    Ratusan = Result

End Function


'*******************
' Mengubah puluhan *
'*******************
Function Puluhan(TeksPuluhan)
    Dim Result As String

    Result = ""
    ' nilai antara 10-19
    If Val(Left(TeksPuluhan, 1)) = 1 Then
        Select Case Val(TeksPuluhan)
            Case 10: Result = "sepuluh "
            Case 11: Result = "sebelas "
            Case Else
                Result = Satuan(Mid(TeksPuluhan, 2)) & "belas "
        End Select
    ' nilai antara 20-99
    Else
        Result = Satuan(Mid(TeksPuluhan, 1, 1)) _
                 & "puluh "
        Result = Result & Satuan(Right(TeksPuluhan, 1))
   'satuan
    End If
        Puluhan = Result
    End Function



'********************************
' Mengubah satuan menjadi teks. *
'********************************
Function Satuan(Digit)
    Select Case Val(Digit)
        Case 1: Satuan = "satu "
        Case 2: Satuan = "dua "
        Case 3: Satuan = "tiga "
        Case 4: Satuan = "empat "
        Case 5: Satuan = "lima "
        Case 6: Satuan = "enam "
        Case 7: Satuan = "tujuh "
        Case 8: Satuan = "delapan "
        Case 9: Satuan = "sembilan "
        Case Else: Satuan = ""
    End Select
End Function



Bagi Anda yang kesulitan menerapkan macro ini, berikut adalah petunjuk singkatnya.
1.   Bukalah berkas Excel yang baru, atau berkas milik Anda yang ingin ditambahi kode ini.

2.   Pergilah ke Tools > Macro > Visual Basic Editor. Langkah ini dapat pula Anda tempuh dengan menekan Alt + F11. Langkah ini akan membuka satu jendela khusus untuk Visual Basic Editor.

3.   Di bagian VBAProject di panel sebelah kiri, klik-kanan ThisWorkbook > Insert > Module.

4.   Anda tinggal memasukkan kode makro ke bagian module di MS Visual Basic pada berkas Excel Anda. Di bagian kosong yang terbuka di bagian kanan, tuliskan kode macro seperti diatas tadi.

5.   Kembalilah ke jendela Excel Anda, dan cobalah tuliskan formula terbilang di salah satu sel. Misalnya, tulislah =terbilang(123) maka hasilnya akan berupa tulisan seratus dua puluh tiga rupiah. Anda juga dapat menulis formula dengan =terbilang(B3), misalnya, dan sel B3 berisi angka yang ingin dibuat teks.


Perhatian. Bila macro di aplikasi Excel Anda tidak dapat dijalankan, periksalah bagian Macro security. Pergilah ke Tools > Options…, klik tabSecurity lalu klik tombol Macro Security di bagian bawah. Ubah pilihanSecurity level ke Medium (disarankan) atau Low.
Pembaruan. Pengecekan bilangan negatif ditambahkan. Bilangan negatif akan dibaca minus sekian sekian.

Untuk mengaktifkan add-ins ini, simpan berkas .xla yang sudah Anda unduh di komputer Anda. Di Excel, pergilah ke menu Tools > Add-Ins…. Di kotak Add-Ins yang terbuka, klik tombol Browse… dan arahkan ke berkas .xla yang Anda miliki. Add-ins untuk fungsi terbilang kini tampak dalam daftar. Centang kotaknya lalu klik tombol OK. Anda sekarang dapat menggunakan fungsi ini di semua dokumen Excel yang Anda buka.

Tidak ada komentar:

Posting Komentar