Wa'alaikumussalam wr wb

mas Nang,

Ngobrolin tentang waktu ya...
Tipe datanya adalah datetime. Di VB/VBA bertipe date.
Nilai serial tanggal yang menyertakan sisi wakt memang bisa disiman juga
dalam tipe data double.

Jadi, bagian : (optional, tetapi bisa jadi akan bermanfaat)
Function ejam(y As Double) As String
tipedatanya bisa diganti menjadi Date atau dibiarkan tetap Double.
Perbedaannya yang mudah tampak adalah respon UDF terhadap nilai yang
di-input-ken. Tipe data Date di VB/VBA 6 atau VBA 7 akan menerima nilai
numerik serial date saja, yaitu dari serial date tanggal 0100-01-01 sampai
9999-12-31. Sedangkan Double akan menerima nilai numerik dengan rentang
yang lebih lebar, bisa sampai e300-an.
Ketika sebuah function diberi nilai inputan yang diluar interval datatype
nya, makan akan segera mengembalikan error value #NUM! (sebagai hasil,
tanpa mengerjakan baris kode apapun yang ada di dalam function).

Ketika mengolah data yang sejatinya berupa nilai waktu (sisi tanggal saja,
sisi jam saja, ataupun kedua sisinya), akan lebih konsisten tepat jika
diolah dalam tipe data Date dan memanfaatkan fungsi-fungsi yang khusus
mengolah data bertipe date dibanding dengan menggunakan yang lainnya.
Misalnya, ingin mendapatkan nilai tahun, maka gunakan fungsi Year. Karena
fungsi Year menghasilkan data bertipe Integer, maka variabel penyimpannya
juga bertipe integer.

Cara tersebut di atas akan lebih konsisten tepat dibanding dengan komputasi
matematis dengan nilai-nilai yang masih disimpan dalam datatype double.

Jadi, bagian :
Dim h As Double
Dim m As Double
diubah saja agar menjadi bertipe integer. Nilai jam dan menit dapat
ditampung oleh datatype integer. Menggunakan *Long akan lebih baik*, karena
konon untuk aplikasi 32 bit akan lebih cepat menggunakan tipe data Long,
karena di dalam VBA, tipe data integer akan disimpan dalam ruang memory
seluas ruang untuk datatype Long. Justru kalau menggunakan datatype
integer, maka akan ada proses tambahan untuk mengubahnya menjadi Long,
tetapi hanya tetap menyimpan interval nilai yang sempit.

Kemudian, nilai jam dan menit, diperoleh dengan fungsi Hour dan Minute saja.
h=hour(y)
m=minute(y)
Hal ini akan lebih konsisten tepat. Apalagi jika y bertipe Date. Jadi, saat
mengambil nilai jam dan menit ini tidak dipengaruhi oleh tipe data nya h
dan m.
Proses selanjutnya yang akan menggunakan variabel h dan m yang akan
dipengaruhi oleh tipe data.

Kayanya, perbaikan bagian itu bisa dicoba lebih dulu. Jika hasilnya masih
keliru, berarti ada bagian kode setelah pengambilan nilai jam dan menit
yang kurang sesuai, dan membutuhkan cek baris-per-baris kode.
Moga-moga dengan perbaikan di atas jadi ndak perlu cek baris-per-baris kode
ya

Wassalamu'alaikum wr wb
Kid.




2015-12-09 8:19 GMT+07:00 Nang Agus [email protected] [belajar-excel] <
[email protected]>:

>
>
> Dear Member BExcel,
> Asalamualaikum warahmatullah,
>
> Saya membuat cekrip sederhana untuk mengubah angka jam menjadi huruf,
>
> 16 Mei 2012 05:30:00
>
> Pukul lima  lewat dua puluh sembilan  menit
>
> 12 April 2015 08:33:00
>
> Pukul delapan  lewat tiga puluh dua menit
>
> 13 April 2015 08:21:00
>
> Pukul delapan  lewat dua puluh  menit
>
> 14 April 2015 08:39:00
>
> Pukul delapan  lewat tiga puluh sembilan  menit
>
> 15 April 2015 08:17:00
>
> Pukul delapan  lewat enam  belas menit
>
> 16 April 2015 08:02:00
>
> Pukul delapan  lewat satu menit
>
> 17 April 2015 08:40:00
>
> Pukul delapan  lewat tiga puluh sembilan  menit
>
> 18 April 2015 08:02:00
>
> Pukul delapan  lewat satu menit
>
> 19 April 2015 08:05:00
>
> Pukul delapan  lewat empat  menit
>
> 20 April 2015 08:42:00
>
> Pukul sembilan  kurang delapan  belas menit
>
> 21 April 2015 08:55:00
>
> Pukul sembilan  kurang lima  menit
>
>
> namun ada kesalahan kecil, yaitu hasilnya tidak cocok. dimanakah perubahan
> cekripnya agar sesuai dengan hasil?
> Option Explicit
> Function ejam(y As Double) As String
> Dim a As Double
> Dim h As Double
> Dim m As Double
> a = y - Int(y)
> h = Int(a * 24)
> m = Int((a * 24 - Int(a * 24)) * 60)
> If m < 40 Then
> If m = 0 Then
> ejam = "Pukul " & angka(h)
> Exit Function
> Else
> End If
> ejam = "Pukul " & angka(h) & " lewat " & angka(m) & " menit"
> Else
> ejam = "Pukul " & angka(h + 1) & " kurang " & angka(60 - m) & " menit"
> End If
> End Function
>
>
> Function angka(x As Double) As String
> Dim p As Double
> Dim s As Double
> Dim kuruf(9)
> kuruf(1) = "satu"
> kuruf(2) = "dua"
> kuruf(3) = "tiga"
> kuruf(4) = "empat "
> kuruf(5) = "lima "
> kuruf(6) = "enam "
> kuruf(7) = "tujuh "
> kuruf(8) = "delapan "
> kuruf(9) = "sembilan "
> p = Int(x / 10)
> s = x - p * 10
>     If x = 0 Then
>     angka = "nol"
>     Exit Function
>     Else
>     End If
> If p = 1 Then
>     If s = 1 Then
>     angka = "sebelas"
>     Exit Function
>     Else
>         If s = 0 Then
>         angka = "sepuluh"
>         Exit Function
>         Else
>         End If
> angka = kuruf(s) & " belas"
> Exit Function
> End If
> Else
> If p = 0 Then
> angka = kuruf(s)
> Else
> angka = kuruf(p) & " puluh " & kuruf(s)
> End If
> End If
> End Function
>
> walaikumsalam warahmatullah.
> Agus
>
> 2015-12-01 23:31 GMT+07:00 'Mr. Kid' [email protected] [belajar-excel] <
> [email protected]>:
>
>>
>>
>> Wa'alaikumussalam wr wb
>>
>> Coba file yang ada disini <https://app.box.com/s/gefh85lon4avu9n66ifm>.
>>
>> Wassalamu'alaikum wr wb
>> Kid
>>
>>
>>
>>
>>
>>
>>
>> 2015-11-28 22:11 GMT+07:00 [email protected] [belajar-excel] <
>> [email protected]>:
>>
>>>
>>>
>>> Assalamualaikum....
>>>
>>> Mau minta tolong, apakah ada module untuk merubah jam menjadi teks di
>>> excel
>>>
>>> Contoh:
>>> 10.15 menjadi "sepuluh lewat lima belas"
>>>
>>> Terima kasih sebelumnya
>>>
>>
>>
> 
>

Kirim email ke