PDA

View Full Version : ต้องการบันทึกโค้ดห้ามบันทึก



มิตรภาพ
26 Jun 2007, 13:08
ผมมีไฟล์สำหรับทำหน้าที่เป็นฟอร์มสำหรับกรอกข้อมูล จากนั้นจึงค่อยนำข้อมูลไปเก็บในฐานข้อมูลด้วย VBA ดังนั้น ผมจึงไม่ต้องการให้ User คนใดบันทึกไฟล์ที่เป็นแบบฟอร์มได้ ควรมีแต่ผมคนเดียวเท่านั้นที่สามารถแก้ไขและบันทึกไฟล์นี้ได้
ผมได้โค้ดนี้จากเน็ตครับ

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim Msg
If ThisWorkbook.Saved = False Then
Msg = "Saving Changes Is Disabled In Evaluation Version"
Msg = MsgBox(Msg, vbOKCancel + vbExclamation)
Cancel = True
'Interupt here when saving this code for the first time. I type "bug" to interupt.
'Debug (delete bug) and reset- then save process will continue.
'In future you can set ThisWorkbook Saved property to True to save changes.
End If
End Sub
สามารถป้องกันการบันทึกได้เป็นอย่างดีครับ
แต่ปัญหาก็คือ ผมไม่สามารถ "บันทึก" โค้ด "ห้ามบันทึก" เข้ากับไฟล์นี้ได้ เนื่องจาก 2 บรรทัดนี้
'Interupt here when saving this code for the first time. I type "bug" to interupt.
'Debug (delete bug) and reset- then save process will continue.
ผมอ่านแล้วยังไม่เข้าใจวิธีทำครับ จึงขอเรียนถาม ขอคำแนะนำในเรื่องนี้ด้วยครับ ขอบคุณครับผม

มิตรภาพ
5 Jul 2007, 08:03
หลังจากที่โพสต์คำถามไปแล้ว ว่างๆในแต่ละวันผมก็ได้พยายามทดลองเกี่ยวกับโค้ดนี้ สรุปได้ดังนี้ครับ คือที่บรรทัดต่อจาก Cancel = True เวลาต้องการ Save งานนี้ ก็อาจจะพิมพ์ . หรืออะไรก็ได้สัก 2-3 ตัว จากนั้นก็ไปกดปุ่มเพื่อ Save แต่โค้ดนี้จะ Run ไม่สำเร็จ เกิดการฟ้อง Error ขึ้น เพราะโค้ดไม่รู้ว่า . ที่ผมใส่คืออะไร จากนั้นผมก็กลับมาที่หน้าโค้ด แล้วลบ . ออกไป การฟ้อง Error ก็จะหายไป แต่ค่า Error ยังคงเก็บอยู่ในหน่วยความจำ ดังนั้น ตอนนี้จึงสามารถ Save งานได้ตามปกติ เพราะโค้ดจะยังไม่ทำงานครับ

หลังจากนั้นก็ปิดไฟล์ลงแล้วเปิดใหม่ โค้ดก็จะป้องกันการ Save ได้เหมือนเดิมครับ (ที่จริง ในตัวอย่างเขาก็อธิบายไว้แล้ว แต่ผมไปงงตรงคำว่า bug กับ debug ซึ่งจริงๆแล้ว สามารถพิมพ์อะไรก็ได้ครับ)

อรวีร์
5 Jul 2007, 09:49
เยี่ยมค่ะ พยายามจนได้วิธีใหม่ๆ :)