Asalamualaikum warahmatullah. Mas Kid, sudah selesai sesuai keinginan berdasarkan petunjuk yang diberikan. terima kasih. wasalamualaikum warahmatullah. Thole Agus
2015-12-09 9:46 GMT+07:00 'Mr. Kid' mr.nm...@gmail.com [belajar-excel] < belajar-excel@yahoogroups.com>: > > > 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 nanga...@gmail.com [belajar-excel] < > belajar-excel@yahoogroups.com>: > >> >> >> 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' mr.nm...@gmail.com [belajar-excel] < >> belajar-excel@yahoogroups.com>: >> >>> >>> >>> 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 zainal_abid...@yahoo.com [belajar-excel] < >>> belajar-excel@yahoogroups.com>: >>> >>>> >>>> >>>> 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 >>>> >>> >>> >> > >