Welcome To PilihanPasti !

PilihanPasti adalah sebuah situs yang berisikan hal-hal yang berkaitan dengan perkembangan dunia Informasi Teknologi

News and IT Information

Informasi berita terbaru dan update berita tentang teknologi informasi

Ebook's

Pilihan Premium Ebook's (berbayar) dan Free Ebook's (gratis)

Private and IT Consulting

Menerima Private materi - materi Komputer (Office, Programming, Website, Windows) dan Konsultasi Teknologi Informasi

Software and Website

Menerima pembuatan Software dan Website

Iklan

Menerima pembuatan dan pemasangan Iklan

Ingin Private materi Komputer atau Ingin Membuat Website ?

Ingin Membuat Album Photo Digital & Buku Elektronik ?

Tampilkan postingan dengan label Visual Basic. Tampilkan semua postingan
Tampilkan postingan dengan label Visual Basic. Tampilkan semua postingan

Selasa, 05 Juli 2011

Fungsi Terbilang

Public Function Terbilang(sNilai As String) As String
Dim iPanjang%: Dim iDigit%
Dim iAngka%: Dim iSisa%
Dim iLoop%: Dim iLoopSatuan%
Dim iBatas%

Dim sAngka(9) As String
Dim sDigit() As String
Dim sDigitKalimat() As String
Dim sSatuan(6) As String
Dim sKalimat$: Dim sTeksAngka$
Dim sTeksDigit$: Dim sNilaiPoint$
Dim sDigitPoint() As String
Dim sDigitKalimatPoint() As String
Dim sTeksAngkaPoint$
Dim sNol$: Dim iNol As Integer

Dim bSe As Boolean

sAngka(0) = ""
sAngka(1) = "satu "
sAngka(2) = "dua "
sAngka(3) = "tiga "
sAngka(4) = "empat "
sAngka(5) = "lima "
sAngka(6) = "enam "
sAngka(7) = "tujuh "
sAngka(8) = "delapan "
sAngka(9) = "sembilan "

sSatuan(1) = ""
sSatuan(2) = "ribu "
sSatuan(3) = "juta "
sSatuan(4) = "milyar "
sSatuan(5) = "trilyun "
sSatuan(6) = "bilyun "

If InStr(sNilai, ",") <> 0 Then
sNilaiPoint = Mid(sNilai, InStr(sNilai, ",") + 1)
sNilai = Left(sNilai, InStr(sNilai, ",") - 1)
ElseIf InStr(sNilai, ".") <> 0 Then
sNilaiPoint = Mid(sNilai, InStr(sNilai, ".") + 1)
sNilai = Left(sNilai, InStr(sNilai, ".") - 1)
End If

iLoop = 0
Do While iLoop < Len(sNilaiPoint)
iLoop = iLoop + 1
Select Case Mid(sNilaiPoint, iLoop, 1)
Case "0"
sNol = "nol " & sNol
iNol = iNol + 1
Case Else
Exit Do
End Select
Loop

If sNilaiPoint <> "" Then
sNilaiPoint = Mid(sNilaiPoint, iNol + 1)
End If

'Nilai di belakang koma
Select Case Len(sNilaiPoint)
Case Is > 0
iPanjang = Len(Trim(sNilaiPoint))
Select Case iPanjang Mod 3
Case 0
iDigit = iPanjang / 3
iSisa = 3
Case Else
iDigit = (iPanjang \ 3) + 1
iSisa = iPanjang Mod 3
End Select

ReDim sDigitPoint(iDigit)
ReDim sDigitKalimatPoint(iDigit)

iLoop = 0
While iLoop < iDigit
iLoop = iLoop + 1
Select Case iLoop
Case iDigit
sDigitPoint(iLoop) = Right(sNilaiPoint, iSisa)
Case Else
sDigitPoint(iLoop) = Right(sNilaiPoint, 3)
sNilaiPoint = Left(sNilaiPoint, Len(sNilaiPoint) - 3)
End Select
Wend

sTeksAngka = ""
For iLoop = 1 To iDigit
sNilaiPoint = sDigitPoint(iLoop)

Select Case iLoop
Case iDigit
iBatas = iSisa
Case Else
iBatas = 3
End Select

sTeksAngka = sSatuan(iLoop)

For iLoopSatuan = 1 To iBatas
iAngka = Val(Right(sNilaiPoint, 1))
sNilaiPoint = Left(sNilaiPoint, iBatas - iLoopSatuan)
Select Case iLoopSatuan
Case 2

Select Case iAngka
Case Is <> 0

Select Case iAngka
Case 1

bSe = True
If Val(Right(sDigitPoint(iLoop), 1)) = 0 Then
sTeksAngka = "sepuluh " & sSatuan(iLoop)
ElseIf Val(Right(sDigitPoint(iLoop), 1)) = 1 Then
sTeksAngka = "sebelas " & sSatuan(iLoop)
Else
sTeksAngka = sAngka(Val(Right(sDigitPoint(iLoop), 1))) & _
"belas " & sSatuan(iLoop)
End If

Case Else

bSe = False
sTeksAngka = "puluh " & sTeksAngka

End Select

End Select

Case 3

Select Case iAngka
Case Is <> 0

Select Case iAngka
Case 1

bSe = True
sTeksAngka = "seratus " & sTeksAngka

Case Else

sTeksAngka = "ratus " & sTeksAngka

End Select

End Select

End Select

Select Case bSe
Case True
bSe = False
Case Else

Select Case iLoop
Case 2

If Right(sDigitPoint(2), 1) = 1 And iLoopSatuan = 1 Then
If Len(sDigitPoint(2)) = 1 Then
sTeksAngka = "se" & sTeksAngka
ElseIf Val(Mid(sDigitPoint(2), Len(sDigitPoint(2)) - 1, 1)) = 0 Then
sTeksAngka = "se" & sTeksAngka
Else
sTeksAngka = sAngka(iAngka) & sTeksAngka
End If
Else
sTeksAngka = sAngka(iAngka) & sTeksAngka
End If

Case Else

sTeksAngka = sAngka(iAngka) & sTeksAngka

End Select

End Select
Next

sDigitKalimatPoint(iLoop) = sTeksAngka
sTeksAngka = ""
Next

For iLoop = 1 To iDigit

Select Case sDigitKalimatPoint(iLoop)
Case Is <> sSatuan(iLoop)
sTeksAngka = sDigitKalimatPoint(iLoop) + sTeksAngka
End Select

Next

Select Case sTeksAngka
Case "": sTeksAngka = "nol "
End Select

sTeksAngkaPoint = "koma " & sNol & sTeksAngka

End Select

iPanjang = Len(Trim(sNilai))
Select Case iPanjang Mod 3
Case 0
iDigit = iPanjang / 3
iSisa = 3
Case Else
iDigit = (iPanjang \ 3) + 1
iSisa = iPanjang Mod 3
End Select

ReDim sDigit(iDigit)
ReDim sDigitKalimat(iDigit)

iLoop = 0
While iLoop < iDigit
iLoop = iLoop + 1

Select Case iLoop
Case iDigit
sDigit(iLoop) = Right(sNilai, iSisa)
Case Else
sDigit(iLoop) = Right(sNilai, 3)
sNilai = Left(sNilai, Len(sNilai) - 3)
End Select

Wend

sTeksAngka = ""
For iLoop = 1 To iDigit
sNilai = sDigit(iLoop)
Select Case iLoop
Case iDigit
iBatas = iSisa
Case Else
iBatas = 3
End Select

sTeksAngka = sSatuan(iLoop)

For iLoopSatuan = 1 To iBatas


iAngka = Val(Right(sNilai, 1))
sNilai = Left(sNilai, iBatas - iLoopSatuan)

Select Case iLoopSatuan
Case 2
Select Case iAngka
Case Is <> 0
Select Case iAngka
Case 1

bSe = True
If Val(Right(sDigit(iLoop), 1)) = 0 Then
sTeksAngka = "sepuluh " & sSatuan(iLoop)
ElseIf Val(Right(sDigit(iLoop), 1)) = 1 Then
sTeksAngka = "sebelas " & sSatuan(iLoop)
Else
sTeksAngka = sAngka(Val(Right(sDigit(iLoop), 1))) & _
"belas " & sSatuan(iLoop)
End If

Case Else

bSe = False
sTeksAngka = "puluh " & sTeksAngka
End Select

End Select
Case 3
Select Case iAngka
Case Is <> 0
Select Case iAngka
Case 1
bSe = True
sTeksAngka = "seratus " & sTeksAngka
Case Else
sTeksAngka = "ratus " & sTeksAngka
End Select
End Select
End Select

Select Case bSe
Case True
bSe = False

Case Else
Select Case iLoop
Case 2
If Right(sDigit(2), 1) = 1 And iLoopSatuan = 1 Then
If Len(sDigit(2)) = 1 Then
sTeksAngka = "se" & sTeksAngka
ElseIf Val(Mid(sDigit(2), Len(sDigit(2)) - 1, 1)) = 0 Then
sTeksAngka = "satu " & sTeksAngka
Else
sTeksAngka = sAngka(iAngka) & sTeksAngka
End If
Else
sTeksAngka = sAngka(iAngka) & sTeksAngka
End If
Case Else
sTeksAngka = sAngka(iAngka) & sTeksAngka
End Select

End Select
Next
sDigitKalimat(iLoop) = sTeksAngka
sTeksAngka = ""
Next

For iLoop = 1 To iDigit
Select Case sDigitKalimat(iLoop)
Case Is <> sSatuan(iLoop): sTeksAngka = sDigitKalimat(iLoop) + sTeksAngka
End Select
Next

Select Case sTeksAngka
Case "": sTeksAngka = "nol "
End Select

Terbilang = StrConv(Trim(sTeksAngka + sTeksAngkaPoint), vbProperCase)

End Function


Penggunaan:

Text1.Text = Terbilang("12000,20")

Fungsi Menghitung Waktu

Fungsi berikut digunakan untuk menghitung waktu/tanggal secara lebih detail. Dimana fungsi berikut dapat menampilkan Hari Bulan dan Tahun dari hasil proses.

Fungsi tersebut juga dapat digunakan dalam menghitung tanggal lahir seseorang, hanya dengan memasukan 2 paramter untuk diproses.

Function cari_umur(TanggalAwal As Date, TanggalAkhir As Date) As String
On Error GoTo salah
Dim tahun As Long, bln As Integer, bulan As Integer, thn As Long
Dim Counter As Integer, hari As Integer

hari = Format(CDate(TanggalAwal), "d")
bln = Format(CDate(TanggalAwal), "m")
thn = Format(CDate(TanggalAwal), "yyyy")

Do Until (hari = Format(CDate(TanggalAkhir), "d") And _
bln = Format(CDate(TanggalAkhir), "mm") And _
thn = Format(CDate(TanggalAkhir), "yyyy"))
hari = hari + 1


If hari = Format(CDate(TanggalAwal), "d") Then
bulan = bulan + 1 'jumlah bulan
Counter = 0 'jumlah hari
If bulan = 12 Then
bulan = 0
tahun = tahun + 1 'jumlah tahun
End If
Else
Counter = Counter + 1
End If

If CDate(hari & "/" & bln & "/" & thn) = CDate(Trim(TanggalAkhir)) Then Exit Do
If bln = 1 And hari = 31 Then
bln = bln + 1: hari = 0
ElseIf bln = 2 And hari = 29 And thn Mod 4 = 0 Then
bln = bln + 1: hari = 0
ElseIf bln = 2 And hari = 28 And thn Mod 4 > 0 Then
bln = bln + 1: hari = 0
ElseIf bln = 3 And hari = 30 Then
bln = bln + 1: hari = 0
ElseIf bln = 4 And hari = 30 Then
bln = bln + 1: hari = 0
ElseIf bln = 5 And hari = 31 Then
bln = bln + 1: hari = 0
ElseIf bln = 6 And hari = 30 Then
bln = bln + 1: hari = 0
ElseIf bln = 7 And hari = 31 Then
bln = bln + 1: hari = 0
ElseIf bln = 8 And hari = 31 Then
bln = bln + 1: hari = 0
ElseIf bln = 9 And hari = 30 Then
bln = bln + 1: hari = 0
ElseIf bln = 10 And hari = 31 Then
bln = bln + 1: hari = 0
ElseIf bln = 11 And hari = 30 Then
bln = bln + 1: hari = 0
ElseIf bln = 12 And hari = 31 Then
bln = 1: thn = thn + 1: hari = 0
End If
Loop

cari_umur = Counter & " hari " & bulan & " bulan " & tahun & " tahun"
Exit Function
salah:
If Err.Number = 13 Then
MsgBox "format tanggal salah"
End If
End Function

Private Sub Command3_Click()
'Mulai tanggal - s/d tanggal
MsgBox cari_umur(CDate(Text1), CDate(Text2))
End Sub

Share

Twitter Delicious Facebook Digg Stumbleupon Favorites