Sepertinya yang sedang kita hadapi adalah sebuah hasil pengolahan floating point number yang berujung pada hasil yang juga merupakan floating point number.Salah satu prinsip dasar yang perlu kita pegang terkait hal ini adalah:Sebisa mungkin... hindari membandingkan suatu floating point number secara frontal, bahkan atas suatu angka yang kita anggap sangat simpel.Misal:Sub Iseng() MsgBox ((1000.7 - 1000) = 0.7)End SubSebelum menjalankan script tersebut, ditebak dulu ya hasilnya apa... TRUE atau FALSE? Salah satu cara untuk mengatasinya adalah dengan menetapkan suatu toleransi presisi tertentu. Misal, apabila selisihnya tidak lebih dari 1 maka dianggap OK. Atau cara lainnya dengan terlebih dahulu melakukan Rounding atau dengan Format tertentu. Saya menggunakan Office 2010 14.0.6129.5000, hasilnya sama dengan di komputer pak Hendrik.Excel 2007 SP3 malah "lebih canggih" ya dalam hal ini ya... ^_^Terus bagaimana cara mengetahui suatu angka adalah floating point number?Bila suatu angka bukan masuk dalam golongan (k/2^n) dimana k dan n adalah bilangan integerPada contoh diatas 1000.7 adalah merupakan floating point number. Mau k dan n diganti dengan angka berapapun (selama k dan n bilangan integer) tidak bakal ketemu 1000.7cmiiw
>semoga bermanfaat --- In belajar-excel@yahoogroups.com, Jan Raisin wrote: > > pak Hendrik, > > jadi nampaknya Office 2010 masih memiliki bug, salah satunya ditemukan > secara tidak sengaja oleh pak Hendrik. Berhubung pak Hendrik sudah > memakaiSP1 (belum ada SP yang lebih baru lagi) maka solusinya adalah > menambahkan script untuk toleransi hasil perhitungan selama selisihnya > kurang dari 1 maka akan dianggap sama. > > Sebagai informasi, pada saat Office 2010 diluncurkan, sudah ditemukan lebih > dari 1.800 bug, lalu sebagian besar bug tersebut sudah dikoreksi dengan > diluncurkannya SP1, tampaknya kasus pak Hendrik adalah salah satu dari > sekian bug yang belum dikoreksi oleh MS. > > Pak Bagus, coba juga update officenya sampai SP3, semoga setelah diupdate > maka bug tersebut tidak muncul kembali. > > Pak zainul, selamat karena Office pak Zainul ternyata yang paling handal > dan akurat untuk kasus ini.. [?] > tetapi Jan tetap menyukai versi yang 2010 ^_^ > > apakah mr Kid dan pak Anton memiliki tambahan informasi dan solusi untuk > kasus ini? > > salam, > > > -Miss Jan Raisin- > > > - Untuk kepentingan belajar bersama, pertanyaan harap ditujukan *hanya*ke > belajar-excel@yahoogroups.com bukan dikirim japri ke email pribadi > member milis; > - Jika pertanyaan lama direspon, bersabarlah karena ALLAH beserta dengan > orang-orang yang sabar QS 2:153; > - Harap dipahami bersama bahwa solusi diberikan oleh Be-Exceller yang > memiliki waktu untuk on line, mengetahui solusi atas pertanyaan yang > ditanyakan, mau dan berani untuk membantu, tanpa mengharap imbalan dari > Thread Starter (TS) atau Post Starter (PS), selain itu Be-Excelller juga > memiliki kewajiban yang harus dipenuhi di dunia nyata jadi tidak selalu > bisa on line setiap saat; > - Semoga semangat berbagi dan membantu semakin meningkat di kalangan > Be-Exceller dan menjadi amalan yang baik untuk tabungan di akhirat nanti. > اÙÙ ÙÙÙ ÙÙا رÙبÙÙ` اÙÙ'عÙاÙÙÙ ÙÙÙ'Ù > > > > Pada 25 Juni 2013 14.48, hendrik karnadi hendrikkarnadi@... menulis: > > > Miss Jan, Pak Zainul, > > > > Di komputer saya hasilnya sama seperti hasil di komputer pak Bagus, > > bedanya saya pake Office 2010 SP1. > > > > Terima kasih. > > > > Salam, > > HK > > > > > > ------------------------------ > > *From:* Bagus bagus@... > > *To:* belajar-excel@yahoogroups.com > > *Sent:* Tuesday, 25 June 2013, 14:29 > > > > *Subject:* Re: [belajar-excel] Kasus1_file ga bisa ditutup > > > > > >  > > Dear Miss Jan; > > > > Dari scrip dibawah, saya jalankan di Excel 2003 menghasilkan pesan berikut: > > > > > > > > Wassalam > > ~ Bagus ~ > > > > > > > > ----- Original Message ----- > > *From:* Jan Raisin miss.jan.raisin@... > > *To:* belajar-excel@yahoogroups.com > > *Sent:* Tuesday, June 25, 2013 2:08 PM > > *Subject:* Re: [belajar-excel] Kasus1_file ga bisa ditutup > > > > > > Kebetulan pak Zainul Ulum sudah mencobanya dan tidak ada masalah yang > > ditemukan di komputer pak Zainul tetapi bermasalah dikomputer pak Hendrik. > > > > apakah Jan bisa minta bantuan kepada pak Zainul Ulum dan pak Hendrik untuk > > menjalankan script Jan, lalu tolong di share ke sini screen shoot di > > komputer masing-masing agar bisa kita bandingkan dan mencari tahu > > penyebabnya. > > > > Tolong juga disertakan Office yang dipakai dan SP berapa. > > > > scriptnya sbb: > > > > Sub test() > > Dim lRow As Long > > Dim dDb As Double, dCr As Double, dSelisih As Double > > Dim msg As String > > > > Sheets("JURNAL").Select > > lRow = Cells(Rows.Count, 1).End(xlUp).Row > > Range(Cells(2, 2), Cells(lRow, 2)).Name = "rgDb" > > Range(Cells(2, 3), Cells(lRow, 3)).Name = "rgCr" > > > > dDb = Application.WorksheetFunction.Sum(Range("rgDb")) > > dCr = Application.WorksheetFunction.Sum(Range("rgCr")) > > dSelisih = dDb - dCr > > > > If dDb = dCr Then > > MsgBox "Sama", vbOKOnly, "Result" > > Else > > MsgBox "Beda " & dSelisih, vbOKOnly, "Result" > > End If > > End Sub > > > > Salam, > > > > > > -Miss Jan Raisin- > > > > > > - Untuk kepentingan belajar bersama, pertanyaan harap ditujukan *hanya*ke > > belajar-excel@yahoogroups.com bukan dikirim japri ke email pribadi > > member milis; > > - Jika pertanyaan lama direspon, bersabarlah karena ALLAH beserta > > dengan orang-orang yang sabar QS 2:153; > > - Harap dipahami bersama bahwa solusi diberikan oleh Be-Exceller yang > > memiliki waktu untuk on line, mengetahui solusi atas pertanyaan yang > > ditanyakan, mau dan berani untuk membantu, tanpa mengharap imbalan dari > > Thread Starter (TS) atau Post Starter (PS), selain itu Be-Excelller juga > > memiliki kewajiban yang harus dipenuhi di dunia nyata jadi tidak selalu > > bisa on line setiap saat; > > - Semoga semangat berbagi dan membantu semakin meningkat di kalangan > > Be-Exceller dan menjadi amalan yang baik untuk tabungan di akhirat nanti. > > اÙÙ ÙÙÙ ÙÙا رÙبÙÙ` اÙÙ'عÙاÙÙÙ ÙÙÙ'Ù > > > > > > > > Pada 25 Juni 2013 14.01, zainul_ulum[at]yahoo[dot]com < > > zainul_ulum@... menulis: > > > > ** > > > > Pak Hendrik,**** > > Saya coba macronya di computerku, tidak ada pesan yang dimaksud.**** > > thanks**** > > -zainul-**** > > **** > > *From:* belajar-excel@yahoogroups.com [mailto: > > belajar-excel@yahoogroups.com] *On Behalf Of *hendrik karnadi > > *Sent:* Tuesday, June 25, 2013 1:56 PM > > *To:* belajar-excel@yahoogroups.com > > > > *Subject:* Re: [belajar-excel] Kasus1_file ga bisa ditutup**** > > **** > > **** > > Dear Pak Bagus,**** > > **** > > Hasil pengecekan saya pada menu Formula, Name Manager, rangenya sudah > > sampai batas akhir No Rek (kolom A) sesuai dengan yang saya bold.**** > > **** > > Untuk mencegah adanya "Null String", sel kosong pada kolom B dan C sudah > > saya delete dan saya juga sudah mencari "Null String" dengan Ctrl F namun > > tidak menemukannya.**** > > **** > > Semoga Pak Bagus atau rekan2 lain masih ada ide lainnya untuk > > menyelesaikan masalah tersebut. Mungkin ini salah satu "misteri" macro ..... > > **** > > **** > > Terima kasih.**** > > **** > > Salam,**** > > HK **** > > **** > > **** > > ------------------------------ > > *From:* Bagus bagus@... > > *To:* belajar-excel@yahoogroups.com > > *Sent:* Tuesday, 25 June 2013, 13:14 > > *Subject:* Re: [belajar-excel] Kasus1_file ga bisa ditutup**** > > **** > > **** > >  **** > > Dear Pak Hendrik..**** > > **** > > Dari scrip dibawah yg berbunyi "WorksheetFunction.Sum(Range("Debit")) <> > > _ WorksheetFunction.Sum(Range("Kredit"))**** > > **** > > kalo saya artikan adalah membandingkan "range debet" dengan "range > > kredit".**** > > **** > > Sedangkan kalau dilihat pada Define name, maka:**** > > Range debet adalah =OFFSET(JURNAL!$B$2,0,0,*COUNTA(JURNAL!$A:$A)-1*,1) > > akan menghasilkan 18.236.136 (Array Formula)**** > > Range kredit adalah =OFFSET(JURNAL!$C$2,0,0,*COUNTA(JURNAL!$A:$A)-1,*1*)*akan menghasilkan 0 (Array Formula) > > **** > > Ini artinya file tidak bisa ditutup.**** > > **** > > Memang kalau di sum pada Colom B (Bukan Range Debet) hasilnya sama > > dengan colom C (Bukan Range kredit) yang artinya file bisa ditutup**** > > **** > > Mungkin ini yg menyebabkan file ini tidak bisa di close pak..**** > > **** > > Ini cuma menurut logika saya saja pak, karena saya buta dengan VBA Excel. > > **** > > **** > > Mohon maaf kalo Ngawur...**** > > **** > > **** > > Wassalam**** > > ~ Bagus ~**** > > **** > > **** > > > > ----- Original Message ----- **** > > *From:* hendrik karnadi hendrikkarnadi@... **** > > *To:* belajar-excel@yahoogroups.com **** > > *Sent:* Tuesday, June 25, 2013 12:35 PM**** > > *Subject:* Fw: [belajar-excel] Kasus1_file ga bisa ditutup**** > > **** > > **** > > Kalau file harus ditutup (karena sdh waktunya pulang kantor) maka hapus > > saja macronya (atau diberi tanda *'*).**** > > **** > > Salam,**** > > HK**** > > **** > > **** > > ----- Forwarded Message ----- > > *From:* hendrik karnadi hendrikkarnadi@... > > *To:* "belajar-excel@yahoogroups.com" belajar-excel@yahoogroups.com > > *Sent:* Tuesday, 25 June 2013, 12:26 > > *Subject:* [belajar-excel] Kasus1_file ga bisa ditutup**** > > **** > > **** > > Coba copy macro ini pada VBE Sheet (Workbook),**** > > Private Sub Workbook_BeforeClose(Cancel As Boolean)**** > > Sheets("JURNAL").Select**** > > If WorksheetFunction.Sum(Range("Debit")) <> _**** > > WorksheetFunction.Sum(Range("Kredit")) Then**** > > MsgBox "MAAF, Jumlah Debit tidak sama dengan Kredit" & vbCrLf & _ > > **** > > "SILA DICEK KEMBALI", _**** > > vbCritical + vbOKOnly, "FILE TIDAK BISA DITUTUP"**** > > Cancel = True**** > > End If**** > > End Sub**** > > **** > > dan coba tutup file dengan mengklik tanda "x" pada pojok kanan atas maka > > akan tmapak pesan (MsgBox) di atas yang menyatakan bahwa Debit <> Kredit, > > padahal kalau dijumlah secara manual dengan cara mendrag atau menyorot > > kolom maka jumlah debit = kredit**** > > **** > > Pertanyaannya:**** > > Mengapa ?**** > > **** > > Salam,**** > > HK**** > > **** > > Pertanyaan ini datang dari seorang anak buah yang belum saya temukan > > jawabannya**** > > **** > > > > **** > > **** > > > > > > > > > > >