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 >>> >> >> > >

