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

Kirim email ke