Rabu, 08 September 2010

Function Terbilang Berbahasa Indonesia pada Excel dengan VbScript.

' Collection of Function
' Macro created March 29, 2005 by DESAINER (Will F. Saranaung)
' Macro edited April 11, 2008
'

Function CINTA(Angka As Double, Text_Satuan As String) As String
  
    Dim SebutanRupiah As String, Ratus As Long, Ribu As Long, Juta As Long, Milyar As Long

    France = Chr(70) & Chr(82) & Chr(65) & Chr(78) & Chr(67) & Chr(69) & Chr(30) & Chr(83) & Chr(65) & Chr(82) & Chr(65) & Chr(78) & Chr(65) & Chr(85) & Chr(78) & Chr(71)
    SebutBilangan = "Satu     Dua      Tiga     Empat    Lima     "    '9 char
    SebutBilangan = SebutBilangan & "Enam     Tujuh    Delapan  Sembilan "

    If Angka < 0 Then
        TandaRincian = "Minus "
    ElseIf Angka = 0 Then
        TandaRincian = "Nol "
    Else
        TandaRincian = ""
    End If
  
    If Abs(Angka) >= 1000000000000# Then
        CINTA = "# TERLALU BESAR BOOO! Maks 12 Digit. Hubungi " & France & " untuk Bantuan."
        Exit Function
    End If
  
    Angka = Abs(Angka)
    Sen = PECAHAN(Angka)
  
    If Sen <> 0 Then
        CINTA = "# Puntennn Mas/Mba... Angka Pecahan Kaga Bole Atu...! Hubungi " & France & " untuk Bantuan."
        Exit Function
    End If
  
    SebutanRupiah = Right("000000000000" & Str$(Angka), 12)
    Ratus = Val(Right(SebutanRupiah, 3))
    Ribu = Val(Mid(SebutanRupiah, 7, 3))
    Juta = Val(Mid(SebutanRupiah, 4, 3))
    Milyar = Val(Left(SebutanRupiah, 3))
  
    If Ratus > 0 Then
        TextRupiah = Right("000" & Str$(Ratus), 3)
        DigitSatuan = Val(Right(TextRupiah, 1))
        DigitPuluhan = Val(Mid(TextRupiah, 2, 1))
        DigitRatusan = Val(Left(TextRupiah, 1))
  
        If DigitSatuan = 0 Then
            TerbilangSatuan = ""
        Else
            TerbilangSatuan = Trim(Mid(SebutBilangan, DigitSatuan * 9 - 8, 9))
        End If
  
        Select Case DigitPuluhan
            Case Is = 0
                TerbilangPuluhan = TerbilangSatuan
            Case Is = 1
                If DigitSatuan = 0 Then
                    TerbilangPuluhan = " Sepuluh "
                ElseIf DigitSatuan = 1 Then
                    TerbilangPuluhan = " Sebelas "
                Else
                    TerbilangPuluhan = Trim(Mid(SebutBilangan, DigitSatuan * 9 - 8, 9)) & " Belas "
                End If
            Case Is > 1
                TerbilangPuluhan = Trim(Mid(SebutBilangan, DigitPuluhan * 9 - 8, 9)) & " Puluh " & TerbilangSatuan
        End Select
                TerbilangPuluhan = Trim(TerbilangPuluhan)
        Select Case DigitRatusan
            Case Is = 0
                TerbilangRatusan = TerbilangPuluhan
            Case Is = 1
                TerbilangRatusan = " Seratus " & TerbilangPuluhan
            Case Is > 1
                TerbilangRatusan = Trim(Mid(SebutBilangan, DigitRatusan * 9 - 8, 9)) & " Ratus " & TerbilangPuluhan
        End Select
        Rincian = Trim(TerbilangRatusan)
    End If
  
    If Ribu = 1 Then
        Rincian = "Seribu " & Rincian
    ElseIf Ribu > 1 Then
      
        TextRupiah = Right("000" & Str$(Ribu), 3)
        DigitSatuan = Val(Right(TextRupiah, 1))
        DigitPuluhan = Val(Mid(TextRupiah, 2, 1))
        DigitRatusan = Val(Left(TextRupiah, 1))
      
        If DigitSatuan = 0 Then
            TerbilangSatuan = ""
        Else
            TerbilangSatuan = Trim(Mid(SebutBilangan, DigitSatuan * 9 - 8, 9))
        End If
      
        Select Case DigitPuluhan
            Case Is = 0
                TerbilangPuluhan = TerbilangSatuan
            Case Is = 1
                If DigitSatuan = 0 Then
                    TerbilangPuluhan = " Sepuluh "
                ElseIf DigitSatuan = 1 Then
                    TerbilangPuluhan = " Sebelas "
                Else
                    TerbilangPuluhan = Trim(Mid(SebutBilangan, DigitSatuan * 9 - 8, 9)) & " Belas "
                End If
            Case Is > 1
                TerbilangPuluhan = Trim(Mid(SebutBilangan, DigitPuluhan * 9 - 8, 9)) & " Puluh " & TerbilangSatuan
        End Select
                TerbilangPuluhan = Trim(TerbilangPuluhan)
        Select Case DigitRatusan
            Case Is = 0
                TerbilangRatusan = TerbilangPuluhan
            Case Is = 1
                TerbilangRatusan = " Seratus " & TerbilangPuluhan
            Case Is > 1
                TerbilangRatusan = Trim(Mid(SebutBilangan, DigitRatusan * 9 - 8, 9)) & " Ratus " & TerbilangPuluhan
        End Select
        Rincian = Trim(TerbilangRatusan) & " Ribu " & Rincian
    End If
  
    If Juta > 0 Then
        TextRupiah = Right("000" & Str$(Juta), 3)
        DigitSatuan = Val(Right(TextRupiah, 1))
        DigitPuluhan = Val(Mid(TextRupiah, 2, 1))
        DigitRatusan = Val(Left(TextRupiah, 1))
      
        If DigitSatuan = 0 Then
            TerbilangSatuan = ""
        Else
            TerbilangSatuan = Trim(Mid(SebutBilangan, DigitSatuan * 9 - 8, 9))
        End If
      
        Select Case DigitPuluhan
            Case Is = 0
                TerbilangPuluhan = TerbilangSatuan
            Case Is = 1
                If DigitSatuan = 0 Then
                    TerbilangPuluhan = " Sepuluh "
                ElseIf DigitSatuan = 1 Then
                    TerbilangPuluhan = " Sebelas "
                Else
                    TerbilangPuluhan = Trim(Mid(SebutBilangan, DigitSatuan * 9 - 8, 9)) & " Belas "
                End If
            Case Is > 1
                TerbilangPuluhan = Trim(Mid(SebutBilangan, DigitPuluhan * 9 - 8, 9)) & " Puluh " & TerbilangSatuan
        End Select
                TerbilangPuluhan = Trim(TerbilangPuluhan)
        Select Case DigitRatusan
            Case Is = 0
                TerbilangRatusan = TerbilangPuluhan
            Case Is = 1
                TerbilangRatusan = " Seratus " & TerbilangPuluhan
            Case Is > 1
                TerbilangRatusan = Trim(Mid(SebutBilangan, DigitRatusan * 9 - 8, 9)) & " Ratus " & TerbilangPuluhan
        End Select
        Rincian = Trim(TerbilangRatusan) & " Juta " & Rincian
    End If
  
    If Milyar > 0 Then
        TextRupiah = Right("000" & Str$(Milyar), 3)
        DigitSatuan = Val(Right(TextRupiah, 1))
        DigitPuluhan = Val(Mid(TextRupiah, 2, 1))
        DigitRatusan = Val(Left(TextRupiah, 1))
      
        If DigitSatuan = 0 Then
            TerbilangSatuan = ""
        Else
            TerbilangSatuan = Trim(Mid(SebutBilangan, DigitSatuan * 9 - 8, 9))
        End If
      
        Select Case DigitPuluhan
            Case Is = 0
                TerbilangPuluhan = TerbilangSatuan
            Case Is = 1
                If DigitSatuan = 0 Then
                    TerbilangPuluhan = " Sepuluh "
                ElseIf DigitSatuan = 1 Then
                    TerbilangPuluhan = " Sebelas "
                Else
                    TerbilangPuluhan = Trim(Mid(SebutBilangan, DigitSatuan * 9 - 8, 9)) & " Belas "
                End If
            Case Is > 1
                TerbilangPuluhan = Trim(Mid(SebutBilangan, DigitPuluhan * 9 - 8, 9)) & " Puluh " & TerbilangSatuan
        End Select
                TerbilangPuluhan = Trim(TerbilangPuluhan)
        Select Case DigitRatusan
            Case Is = 0
                TerbilangRatusan = TerbilangPuluhan
            Case Is = 1
                TerbilangRatusan = " Seratus " & TerbilangPuluhan
            Case Is > 1
                TerbilangRatusan = Trim(Mid(SebutBilangan, DigitRatusan * 9 - 8, 9)) & " Ratus " & TerbilangPuluhan
        End Select
        Rincian = Trim(TerbilangRatusan) & " Milyar " & Rincian
    End If
    CINTA = TandaRincian & Trim(Rincian) & " " & Text_Satuan
End Function

Tidak ada komentar:

Posting Komentar