anda sudah berusaha membuat dan saya kira sudah berada di jalan yg benar yaitu memanfatkan *event workbook before close*
Event ini terjadi sesaat sebelum workbook ditutup oleh sebab apapun. Kalau anda perhatikan di situ ada Argument *Cancel* bertye data Boolean (yaitu data yg hanya bisa bermilai TRUE atau FALSE saja) variable Cancel ini jika anda isi = TRUE maka penutupan workbook di batalkan, sebaliknya jika anda isi dengan = FALSE maka penutupan workbook dibolehkan Jadi sesuai SYARAT yg anda ajukan, anda dapat mencbangkan dua keadaan dengan statement IF IF A2 lebih besar B2 workbook jangan ditutup ELSE workbook boleh ditutup END IF lengkapnya seperti ini Private Sub Workbook_BeforeClose(*Cancel* As Boolean) With Sheets("Sheet2") If .Range("A2") > .Range("B2") Then MsgBox "Workbook ini tidak dapat ditutup" & vbCr & _ "karena cell A2 > B2 !", vbExclamation, ThisWorkbook.Name *Cancel = True* End If End With End Sub di situ tidak perlu diberikan pilihan ELSE (yaitu jika A2 <= B2), lalu apa yg harus terjadi. karena kalau dibiarkan maka Cancel dengan sendirinya tetap bernilai FALSE yg berarti workbook ditutup (karena memang ada perintah ditutup (Ingat: Event itu terjadi karena ada sesuatu yg meminta agar workbook ditutup.) Perlu diketahui bahwa di VBA, sebuah variable pada saat diciptakan / dideklarasikan sudah punya nilai default tertentu, sesuai type nya, yaitu: variable Bilangan (integer, long, double, single, date, dsb) nilai defaultnya = *0 (nol)* variable Boolean / Logiccal : *False* variable String : Empty (*NullString*) (sering digambarkan sbg :* "" *) variable Object : *Nothing* cmiiw... 2011/4/8 bagyo klaten <klaten.ba...@yahoo.co.id> > > salam excel > terkadang kita pengin menulis data dengan sempurna > terlampir contoh data, seharusnya B lebih besar dari A > > bagaimana caranya (dengan VBA) selama A masih lebih besar dari B > maka worksheet tersebut tidak bisa ditutup > > Demikian... mohon pencerahannya...
c_Worksheet tidak bisa ditutup.xlsm
Description: application/vnd.ms-excel.sheet.macroenabled.12