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 <[email protected]>
>
> 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

